zoukankan      html  css  js  c++  java
  • 菜鸟云打印接入Demo

    菜鸟云打印接入Demo

    0. 接入流程图

    1. 连接打印客户端

    首先要打开打印客户端,然后使用下面的方法,连接客户端(WebSocket协议):

    地址 :  

    function doConnect()
    {
        socket = new WebSocket('ws://127.0.0.1:13528');
    
        // 打开Socket
        socket.onopen = function(event)
        {
            // 监听消息
            socket.onmessage = function(event)
            {
                console.log('Client received a message',event);
            };
    
            // 监听Socket的关闭
            socket.onclose = function(event)
            {
                console.log('Client notified socket has closed',event);
            };
    
        };
    }
    

    2. 打印机配置

    2.1 获取打印机列表

    function doGetPrinters() {
        var request  = {
            requestID : '12345678901234567890',
            version : '1.0',
            cmd : 'getPrinters';
        };
    
        socket.send(JSON.stringify(request));
    }
    
    

    2.2 获取打印机配置(弹出打印机配置界面)

    function doPrinterConfig() {
        var request  = {
            requestID : "12345678901234567890",
            version : "1.0",
            cmd : "printerConfig"
        };
    
        socket.send(JSON.stringify(request));
    }
    
    

    2.3 设置打印机

    function doSetPrinterConfig() {
        var request  = {
            requestID : "12345678901234567890",
            version : "1.0",
            cmd : "setPrinterConfig",
            printer : {
                name : "打印机名称",
                needTopLogo : true,
                needBottomLogo: false
            }
        };
    
        socket.send(JSON.stringify(request));
    }
    

    3 打印

    • 商家可以选择直接打印电子面单模板, 或是打印带自定义区域的用户模板

    3.1 标准电子面单模板

    商家无自定义区,只有标准电子面单模板

    3.1.1 TOP调用请求相关数据

    3.1.1.1 获取所有的菜鸟标准电子面单模板: cainiao.cloudprint.stdtemplates.get

    返回的数据是StandardTemplateResult数组:

        cp_code : cp编码
        standard_templates : StandardTemplateDo[]
            standard_template_id : 标准模板id
            standard_template_name : 标准模板名称
            standard_template_url : 标准模板url
    

    一个CP可以有多个电子面单标准模板, standard_template_url是电子面单标准模板的内容地址.

    3.1.1.2 电子面单云打印接口: cainiao.waybill.ii.get

    返回的数据是WaybillCloudPrintResponse:

        object_id : 请求id
        signature : 签名
        template_url : 模板URL
        waybill_code : 面单号
        data : 模板内容
    

    3.1.2 电子面单模板打印数据

    电子面单云打印接口返回的数据,构建模板打印数据:
    {
        "templateURL":"http://cloudprint.cainiao.com/cloudprint/template/getStandardTemplate.json?template_id=801",
        "signature": "ALIBABACAINIAOWANGLUO",
        "waybillNo":"9890000076011"
        "data":{
            "key1":"value1",
            "key2":"value2"
        }
    }
    
    

    3.2 用户模板

    用户模板包含标准电子模板和用户自定义区

    3.2.1 TOP调用请求相关数据

    3.2.1.1 获取用户使用的菜鸟电子面单模板信息 : cainiao.cloudprint.mystdtemplates.get

    返回的数据是UserTemplateResult数组:

        cp_code : cp编码
        user_std_templates(UserTemplateDo[]) :用户使用的模板数据
            keys(KeyResult[]) :     keys
                key_name : key的名称
            user_std_template_url : 用户使用模板的url
            user_std_template_id : 用户使用模板的id
            user_std_template_name : 用户使用模板名称
    
    数据返回的是用户使用到的菜鸟标准电子面单模板
    3.2.1.1 获取商家的自定义区模板信息 : cainiao.cloudprint.customares.get

    输入参数是 : seller_id, template_id(用户使用的标准电子模板id,3.2.1.1返回的user_std_template_id)

    返回的数据是CustomAreaResult数组:

        custom_area_id : 自定义区id
        custom_area_url : 自定义区url
        keys(KeyResult[]) : keys
            key_name : key名称
    
    3.2.1.2 电子面单云打印接口: cainiao.waybill.ii.get(同3.1.1.2)

    3.2.2 用户模板打印数据格式

    3.2.2.1 标准电子面单模板打印数据格式(同3.1.2)
    {
        "templateURL":"http://cloudprint.cainiao.com/cloudprint/template/getStandardTemplate.json?template_id=801",
        "signature": "ALIBABACAINIAOWANGLUO",
        "waybillNo":"电子面单号"
        "data":{
            "key1":"value1",
            "key2":"value2"
        }
    }
    
    3.2.2.2 自定义区打印数据格式
    {
        "templateURL":"http://cloudprint.cainiao.com/cloudprint/customArea/queryCustomAreaList4Top.json?custom_area_id=2201&user_id=2066393830",
        "data":{
            "key1":"value1",
            "key2":"value2"
        }
    }
    

    其中的templateURL来源于3.2.1.1, data需要根据key名称自行填充.

    3.3 打印

    面单号 : 

    电子面单URL : 

    自定义区URL : 

    function doPrint()
    {
        request  = {
            cmd : "print",
            requetID : "12345678901234567890",
            version : "1.0",
            task : {
                taskID : "1",
                preview : false,
                printer : "km200",
                documents : [
                    {
                        documentID : "9890000076011",
                        contents : [
                            //电子面单部分
                            {
                                templateURL : "http://cloudprint.cainiao.com/cloudprint/template/getStandardTemplate.json?template_id=801",
                                signature : "ALIBABACAINIAOWANGLUO",
                                "data": {
                                  "recipient": {
                                    "address": {
                                      "city": "北京市",
                                      "detail": "花家地社区卫生服务站三层楼我也不知道是哪儿了",
                                      "district": "朝阳区",
                                      "province": "北京",
                                      "town": "望京街道"
                                    },
                                    "mobile": "1326443654",
                                    "name": "张三",
                                    "phone": "057123222"
                                  },
                                  "routingInfo": {
                                    "consolidation": {
                                      "name": "杭州",
                                      "code": "hangzhou"
                                    },
                                    "origin": {
                                      "code": "POSTB"
                                    },
                                    "sortation": {
                                      "name": "杭州"
                                    },
                                    "routeCode": "380D-56-04"
                                  },
                                  "sender": {
                                    "address": {
                                      "city": "北京市",
                                      "detail": "花家地社区卫生服务站二层楼我也不知道是哪儿了",
                                      "district": "朝阳区",
                                      "province": "北京",
                                      "town": "望京街道"
                                    },
                                    "mobile": "1326443654",
                                    "name": "张三",
                                    "phone": "057123222"
                                  },
                                  "shippingOption": {
                                    "code": "COD",
                                    "services": {
                                      "SVC-COD": {
                                        "value": "200"
                                      }
                                    },
                                    "title": "代收货款"
                                  },
                                  "waybillCode": "9890000160004"
                                }
                            },
                            //自定义区部分
                            {
                                templateURL : "http://cloudprint.cainiao.com/cloudprint/customArea/queryCustomAreaList4Top.json?custom_area_id=642230",
                                data : {
                                    "item_name": "我是你要的商品芭比娃娃。。。",
                                }
                            }
                        ]
                    }
                ]
            }
        };
    
        socket.send(JSON.stringify(request));
    }
    

    4 查询打印任务

    4.1 根据taskID查询打印任务

    function doGetTaskStatus() {
        var request  = {
            requestID : "12345678901234567890",
            version : "1.0",
            cmd : "getTaskStatus",
            taskID : [
                "1","2"
            ]
        };
        socket.send(JSON.stringify(request));
    }
    

    4.2 根据面单号查询打印任务

    waybillNO :  

    function doGetDocumentStatus() {
        var request  = {
            requestID : "12345678901234567890",
            version : "1.0",
            cmd : "getDocumentStatus",
            documentIDs : [
                "9890000076011"
            ]
        };
        socket.send(JSON.stringify(request));
    }
    

    5 参考

  • 相关阅读:
    git 无法提交到远程服务器【转载】
    vscode 常用快捷键
    mongodb nodejs一个有自增id的功能
    C++ lambda表达式与函数对象
    TypeScript的async, await, promise,多参数的调用比较(第2篇)
    了解TypeScript的async,await,promise(第1篇)
    TyepScript判断一个变量是null, or undefined
    MongoClient 对 Mongodb的 增删改查 操作
    TypeScript第一个Promise程序
    C++基类的继承和多态
  • 原文地址:https://www.cnblogs.com/micro-chen/p/8421582.html
Copyright © 2011-2022 走看看