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