菜鸟云打印接入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 参考

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

  1. 使用速卖通开放平台云API调用菜鸟组件实现云打印

    公司是跨境电商,使用速卖通平台卖玩具,我们自己研发的ERP是基于速卖通开放平台API,实现订单的发货提交,打印面单等功能 近期公司要求使用菜鸟组件云打印,去平台里看下,有这个API,如下图所示 实现也 ...

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

    在最新的MVC4+EasyUI的Web开发框架里面,我整合了关于网购运单处理的一个模块,其中整合了客户导单.运单合并.到货扫描.扣仓.出仓.查询等各个模块的操作,里面涉及到一些运单套打的操作,不过由于 ...

  3. Java的云打印Lodop

        打印某一个网页上的内容我们都经常遇到过,比如网上申请港澳通行证时需要填写申请表,然后把申请表给打印出来.像这样的打印技术是怎么实现?这种打印可以通过一种叫云打印的插件来做,按我的理解云打印的技 ...

  4. 飞鹅云打印 API_C#

    飞鹅云打印: 提交订单支付成功后台自动打印,实现无人销售,自动打印,后台统计打印记录功能:   有自带WIFY:连接到wify就可以打印小票: 有自动SIM卡:第1年免流量费,第2年30一年     ...

  5. 微信公众号Java接入demo

    微信公众号Java接入demo 前不久买了一台服务,本来是用来当梯子用的,后来买了一个域名搭了一个博客网站,后来不怎么在上面写博客一直闲着,最近申请了一个微信公众号就想着弄点什么玩玩.周末没事就鼓捣了 ...

  6. c-lodop云打印实现手机打印 JS语句打印

    Lodop和c-lodop目前只能安装到windows操作系统上,但是其他操作系统可通过向C-Lodop安装的电脑发送打印任务,实现手机广域网或局域网打印,打印语句也是简单的JS语句,可以轻松实现云打 ...

  7. deepin云打印实现连接Windows打印机

    问题的产生:今天给台式机安装deepin系统时,突发奇想能不能给其安装上打印机驱动,让其实现打印功能. 问题的解决方法: 1.在连接打印机的电脑上安装deepin云打印服务端软件,下载地址:https ...

  8. 云打印-Beta-凡事预则立

    凡事预则立 课程名称:软件工程1916|W(福州大学) 团队名称: 云打印 作业要求: 项目Beta冲刺(团队) 作业目标:Beta冲刺 团队队员 队员学号 队员姓名 个人博客地址 备注 221600 ...

  9. 修咻咻对追光的人、云打印团队的Beta产品测试报告

    修咻咻对追光的人.云打印团队的Beta产品测试报告 作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Beta冲刺(团队) 团队目标 切实可行的计算机协会维修预约平 ...

随机推荐

  1. iOS:创建带logol的二维码

    //二维码生成 实质: 把字符串转变为 图片 // 需要 coreImage框架, 已经包含在了 UIKit框架里面 //MARK: 二维码中间内置图片,可以是公司logo + (UIImage *) ...

  2. CSS-图片不变形设置

    不管网页做的美还是丑,有一个问题始终是无法躲避的,就是有的时候会遇到图片变形的问题,之前遇到过这种问题解决过,不过还是整体的重新研究了一下图片,其中主要涉及到的知识点就是max-width和max-h ...

  3. 荔枝FM 字体文件 IconFontTextView

    使用效果 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...

  4. (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  5. 详解vue组件的keep-alive

    <keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM. <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是 ...

  6. 揭破android中的闹钟app 二

    · 这节,我们通过wheelview来模仿一个简易的正点闹钟. 我这里不说wheelview来龙去脉,只阐述几个简单的方法,如果,想看一看具体wheelview的内容,请看下面两篇文章: androi ...

  7. 文本分类(六):使用fastText对文本进行分类--小插曲

    http://blog.csdn.net/lxg0807/article/details/52960072 环境说明:python2.7.linux 自己打自己脸,目前官方的包只能在linux,mac ...

  8. GridViewColumn.CellTemplate

    <GridViewColumn Header="Sig" Width="210"> <GridViewColumn.CellTemplate& ...

  9. 星文快投v2全新升级

    2017-07-31 关于“星文快投”,我的初衷是:简单.稳定.可定制的投标软件.前期版本其实也基本达到这个目标了,系统跑起来后,几天下来也累积过手三十多万个标的了,自动投标也工作正常,作为一个纯粹的 ...

  10. java 上传图片压缩图片

    package com.bitspace.flame.util; import java.io.File; import java.awt.Image;import java.awt.image.Bu ...