菜鸟云打印接入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));
}

百世快运标准三联模板
快捷快递标准模板
申通快递标准模板
如风达标准模板
宅急送标准三联模板
圆通快递标准模板
中国邮政国内标快标准模板
天天快递标准模板
EMS标准三联模板
宅急送标准模板
中通快递标准三联模板
快捷快递标准三联模板
天天快递标准三联模板
申通快递标准三联模板
中国邮政国内标快标准三联模板
国通快递标准模板
韵达快递标准三联模板
百世快运标准模板
韵达快递标准模板
优速快递标准三联模板
全峰快递标准模板
百世快递标准三联模板
顺丰速运标准模板
百世快递标准模板
EMS经济快递标准三联模板
EMS经济快递标准模板
国通快递标准三联模板
中国邮政快递包裹标准三联模板
全峰快递标准三联模板
圆通快递标准三联模板
中通快递标准模板
优速快递标准模板
EMS标准模板
德邦快递标准模板
如风达标准三联模板
中国邮政快递包裹标准模板
德邦快递标准三联模板

打印

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 参考

原文地址:https://www.cnblogs.com/micro-chen/p/8421582.html

时间: 2024-10-16 01:12:58

菜鸟云打印接入Demo的相关文章

基于MVC+EasyUI的Web开发框架经验总结(16)--使用云打印控件C-Lodop打印页面或套打报关运单信息

在最新的MVC+EasyUI的Web开发框架里面,我整合了关于网购运单处理的一个模块,其中整合了客户导单.运单合并.到货扫描.扣仓.出仓.查询等各个模块的操作,里面涉及到一些运单套打的操作,不过由于之前介绍LODOP不兼容Chrome等浏览器,因此曾经想放弃这个控件的打印处理,不过他们及时推出了"云打印控件C-Lodop",而且对之前的接口几乎完全兼容,因此在框架里也继续沿用了这个控件来进行相关的打印处理,包括常规的打印和运单信息套打等处理. 1.控件的安装 这个云控件C-Lodop(

云打印控件

基于MVC4+EasyUI的Web开发框架经验总结(16)--使用云打印控件C-Lodop打印页面或套打报关运单信息 在最新的MVC4+EasyUI的Web开发框架里面,我整合了关于网购运单处理的一个模块,其中整合了客户导单.运单合并.到货扫描.扣仓.出仓.查询等各个模块的操作,里面涉及到一些运单套打的操作,不过由于之前介绍LODOP不兼容Chrome等浏览器,因此曾经想放弃这个控件的打印处理,不过他们及时推出了“云打印控件C-Lodop“,而且对之前的接口几乎完全兼容,因此在框架里也继续沿用了

微信硬件平台的基础接入和硬件云标准接入分析

本文分析基于微信硬件平台的物联网架构,将从物联网的核心要素.物联网的关键场景.微信硬件平台的通信协议分析三个维度去分析.更多的微信硬件平台开发的深度技术原创分享请订阅微信公众号:嵌入式企鹅圈. 微信硬件平台包括基础接入方案与微信硬件云标准接入方案.前者是在应用端和设备端都完全由厂商开发,微信硬件平台只负责用户管理.设备管理和透明的消息推送:后者是在前者的基础上,给设备端提供了直连SDK(可以适配linux/Android等平台).提供设备API给第三方硬件平台接入,甚至在应用端根据各种家电场景定

[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(八)

目的: 1. 通过网页读取watchdog的信息 2. 通过网页设置watchdog 准备工作: 1. 选择一个web框架,选用 cherrypy $ sudo apt-get install python-cherrypy3 2. 熟悉 RESTFUL , 参考redhat  REST API 指导 步骤: 我们选择了一个cherrypy作为web框架. cherrypy的部署简单. 这只是个demo,没有实现MVC,大家自己练习. 此外也没有实现模板,距离一个正式的网站还差的很远. 界面实现

生活在别处——“Samsung Cloud Print”云打印体验

据工信部发布的数据信息显示,截至8月底,我国移动互联网用户总数已达9.46亿户规模,其中手机上网总数超过9亿户.移动互联网用户规模的不断扩大,进一步证明拥抱移动互联网已成为不可扭转的趋势,也是各互联网设备及平台的全新机会. 云打印技术是一种基于这样的背景而诞生的新型打印方式,其依托云计算与大数据.移动终端设备等特点,使得用户可实现随时随地的打印需求.在最近2年的发展历程中,这种云打印方式因为具备便捷.高效.不受时间地域限制等优点,日趋成为商务市场的绝佳伴侣,三星"Samsung Cloud Pr

[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(七)

目标: 1. 完成最终的设备驱动,增加具体的watchdog设备操作的代码. 测试代码: 代码最终实现见cwd_demo.c 代码只实现了read与write.  没有实现ioctl. 因此,我们可以通过shell指令直接操作我们的watchdog. read函数,只读取watchdog的0x01 和0x02寄存器. write函数无论写入多少个字节,驱动实际只写第一个字节. 1. 编译     $ make 2. 装载驱动     $ sudo insmod cwd_demo.ko 3.查看设

云平台接入第三方服务的实践总结

前言 今年,我的任务是为公司的私有云平台( PaaS )开发对应的云服务平台(我们称之为插件平台),这个云服务平台的主要任务,是为云平台接入一些服务,服务包括但不限于mysql.redis.cdn等存储服务,天气预报等http服务.这个系列文章,希望总结本人在开发这个平台时的得与失. 下面将云服务平台简称为平台(插件平台),所接入的服务,简称为第三方服务(插件) 为什么需要统一接入方案 统一接入方案,是指可以帮助插件平台更快接入第三方服务的一种统一方案 首先要回答的第一个问题,是为什么需要插件平

飞鹅云打印 API_C#

飞鹅云打印: 提交订单支付成功后台自动打印,实现无人销售,自动打印,后台统计打印记录功能: 有自带WIFY:连接到wify就可以打印小票: 有自动SIM卡:第1年免流量费,第2年30一年 #region 飞鹅云打印-API //飞鹅云打印        public string print(string USER, string UKEY, string SN, string merchantName, string payType, string payTotalMoney, string

百度云 - 物接入 IoT Hub体验

只抱着玩玩的态度,前天试了试 Ali云的物联网套件,感觉和自己的需求有些差距,200个节点通过gateway能接入云端,但需要通过服务器端API来控制gateway,和期望的流程有些诧异, 于是今天又试试百度云的物联网hub, https://cloud.baidu.com/doc/IOT/index.html 百度云的IoT hub比较简单,其实就是一个MQTT的broker,参考文档https://cloud.baidu.com/doc/IOT/Mqttclient.html#MQTT.fx