菜鸟云打印接入Demo

时间:2023-03-08 16:33:20

菜鸟云打印接入Demo

0. 接入流程图

菜鸟云打印接入Demo

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