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