达芬奇云打印组件接入Demo
0. 接入流程图
1. 连接打印客户端
首先要打开打印客户端,然后使用下面的方法,连接客户端(WebSocket协议):
地址 :
function doConnect()
{
socket = new WebSocket('ws://127.0.0.1:13888');
// 打开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 获取所有的达芬奇标准电子面单模板: /logistics/templateList
返回的数据是StandardTemplateResult数组:
logistics_code : cp编码
perview_url : 预览地址
template_code : 标准模板id
template_name : 标准模板名称
template_url : 标准模板url
template_type : 模板类型
version : 面单版本
一个CP可以有多个电子面单标准模板, standard_template_url是电子面单标准模板的内容地址.
3.1.1.2 电子面单云打印接口(暂不支持):
返回的数据是WaybillCloudPrintResponse:
object_id : 请求id
signature : 签名
template_url : 模板URL
waybill_code : 面单号
data : 模板内容
3.1.2 电子面单模板打印数据
电子面单云打印接口返回的数据,构建模板打印数据:{
"err_infos": [],
"waybill_infos": [
{
"order_id": "4734030940700083755|1",
"print_data": "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",
"track_no": "UT2900007709084"
}
]
}
3.2 用户模板(暂不支持)
用户模板包含标准电子模板和用户自定义区3.2.1 TOP调用请求相关数据
3.2.1.1 获取用户使用的达芬奇电子面单模板信息 :
返回的数据是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 获取商家的自定义区模板信息 :
输入参数是 : 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 电子面单云打印接口: (同3.1.1.2)
3.2.2 用户模板打印数据格式
3.2.2.1 标准电子面单模板打印数据格式(同3.1.2)
{
"templateURL":"https://sf3-ttcdn-tos.pstatp.com/obj/logistics-davinci/template/template_76.xml",
"signature": "签名",
"waybillNo":"电子面单号"
"data":{
"key1":"value1",
"key2":"value2"
}
}
3.2.2.2 自定义区打印数据格式
{
"templateURL":"",
"data":{
"key1":"value1",
"key2":"value2"
}
}
其中的templateURL来源于3.2.1.1, data需要根据key名称自行填充.
3.3 打印
3.3.1 明文打印
面单号 :
电子面单URL :
自定义区URL :
function doPrint()
{
request = {
cmd : "print",
requetID : "12345678901234567890",
version : "1.0",
task : {
"taskID" : "1",
"preview" : false,
"printer" : "km200",
"documents" : [
{
"documentID" : "9890000160004",
"contents" : [
//电子面单部分
{
"templateURL" : "https://sf3-ttcdn-tos.pstatp.com/obj/logistics-davinci/template/template_76.xml",
"data": {
"trackNo":"UT2900004974342",
"logoUrl":"https://sf3-ttcdn-tos.pstatp.com/obj/power/jtexpress_logo.png",
"receiverInfo": {
"address": {
"cityName": "北京市",
"countryCode": "CHN",
"detailAddress": "江南大道恒鑫大厦",
"districtName": "朝阳区",
"provinceName": "北京市",
},
"contact":{
"mobile":"18212982654",
"name":"云宽"
}
},
"senderInfo": {
"address": {
"cityName": "南京市",
"countryCode": "CHN",
"detailAddress": "不知道详细地址",
"districtName": "玄武区",
"provinceName": "江苏省",
},
"contact":{
"mobile":"18313137654",
"name":"光柱"
}
},
"routingInfo":{
"package":{
"name":"杭州",
"code":"hangzhou"
},
"markDestination":{
"name":"洒大地",
"code":"POSTB"
},
"sortCode":"380D-56-04"
},
"services":{
"SVC_COD":{
"code":"SVC_COD",
"value":"200.13",
"title":"代收货款"
},
"SVC_INSURE":{
"code":"",
"value":"",
"title":""
}
},
"sfServices":{
"proCode":"",
"destRouteLabel":"",
"codingMapping":"",
"codingMappingOut":"",
"abFlag":"",
"destTeamCode":"",
"proName":""
},
"jdService": {
"transType": "2",
"promiseTimeType": "1",
"sourceSortCenterName": "北京大兴分拣中心",
"targetSortCenterName": "北京大兴分拣中心",
"originalCrossCode": "5-S09",
"destinationCrossCode": "5-S09",
"siteName": "*北京亦庄营业部",
"road": "017",
"coverCode": "T",
"distributeCode": "110"
}
}
}
]
}
]
}
};
socket.send(JSON.stringify(request));
}
3.3.2 密文打印
面单号 :
电子面单URL :
自定义区URL :
function doPrint()
{
request = {
"cmd": "print",
"requetID": "12345678901234567890",
"version": "1.0",
"task": {
"taskID": "1",
"preview": false,
"printer": "km200",
"documents": [{
"documentID": "9890000160004",
"contents": [{
"templateURL": "https://sf3-ttcdn-tos.pstatp.com/obj/logistics-davinci/template/template_76.xml",
"params": "access_token=值&app_key=值&method=logistics.getShopKey¶m_json={}×tamp=时间&v=2&sign=值&sign_method=hmac-sha256,参数值详见电商开放平台https://op.jinritemai.com/docs/guide-docs/10/23,其中的method=logistics.getShopKey,param_json={}",
"signature": "nlJqqkSAMnLawmmBJQGTrP59TDcbpvAodSo9EyvtR8cjj8ml/A1s3GJi3OfUiZpGcrcjFSPU3iSsl4WxB6uCgftnlP4RmNMsdmiUUZBPHX6htF9VGWeCplOFVHx9j2yTppQqkoyw46wcTEh/EGSB4trfyE+KObbythC8/s1LRelU4HJxPhSlTUQ2gusqQn6IWSbosZ43v+s/6snud4RxZ7AKkRA+kZE8ihOHDzHWG9QYBB2afzmxf5oqlukRgGxxY7o4HvsSxTHhBVuYQou68eNizovFGl7YeWK47hIzQVa/b3Zp+ZxNwUhrxy/50ATb+gumw+ds1HvhvKf7FFEzUg==",
"encryptedData": "dnZhvCOQBMFDvs1eJlBhe4Gn/E6PqWYKrmT+mI0ao+9k9sf48d0duCB6wk16btzs4jjn6URndrkLStS4vPVl4jzpq6wdVqsdOj09QbFqss8lBJ51wA2/xbgNevzsyAG2EVRcTUevXP1UILcDha/GVT0rsqBnwA4KFsiIzHFO/1/6gyZIs2+R7kZHvJjU3vFvlYHHGeZktPPZNm/GPnCaNkaqKSDaaCJI7jQ8oPKGXVL6rbrnrODUWo1hViKFrt9Mo4mzRf8NFhkESELcAG9hjxQy+6aVDsL3zwumTXOFhTsKEi6/LXEKnwjy9Cm+S+I95d+V7mET6+StGIL7YQz0BnP1Vkquwy/oiSXNeMpIhNpWnfFcSdOE/PO49KJ0nfT/YYyx3/o+r4nJkGiCACrWbfrVm+G30nHspi/akWyJy0P5J7haAm/qoxhE0hajb4/AnO2CJenp+Upd9czbqoCavY7aFvA9ChVEts0AUTyHPZ/JQ0h8FMNoDhd7AXJF/z0OlKM/ZD9NstXsDGTCf8Bh61eQC2Dc+pjMyGsqXVkjtTb+RgP2xgW6G7y2W8x7N01kD+AKbD23j8Lu1AWSjn3UyS873wTa1YCwXPwNY0qyw+kHFcJPXbeELmVyZ8p7w4gTg/NGxRAve1whuhWU1wNNlGSZTW8J9Lxd8ZT+TlXrGG+U4v1kxhL8pR9Oh3sGh369gkrlMX2W4pq2nDJCy1dWzVI107xypebgIDwP88a3STmxl46sTkaiRk/wMy6O24Ifrlgx7jUUyH0ZBxFDFl+CIGYhCMpGB91637gDMcADFIK9W/2HgEDe0lkQxi/ixOf1aAGPj7I9hLz6OLfq7wh34TgHZZVF+x1haeIgodMeFGr2i2Jiy/3bTUznbnfCp5qbK1E0LourNF0G+vML+vwnFcPUSq3sSS0bAngM8hvyim69o3+ZbS8kIK23hZrxWrNdnNJAdpcqaGInx/2f0N8tCajUzwx/BMaMWBPZtC6YpXBGUjhXafM6COwwSjr7hMeFYYwsPCM67UkMzALrNF0RPpAs5eaix98u0QJpQFl28Hcvcwx8n8AzFThk2Q4EE3ApTNHkX/BeEZ+4U7JEE5NCL5xN/TbYigghgeQRz3YjEwXUhrN3PA3EtupBOfI4Spn513Woi9fmC/fN49djg+3+o9Wiv1dpcXVEY45GiZAFxIXrHQf9tvlSg5vbHMD38l8W4Ae/ubOpxEOAVFr6x3wkrtTbFhmYBRRlNyGsidaBJ7ayhM7u8eSJlBvUXpmO8V+E83eZh5p9uT9XOzB6aLo8jw==",
"addData": {
"senderInfo": {
"address": {
"cityName": "南京市",
"countryCode": "CHN",
"detailAddress": "软件大道10号华为南研所E区",
"districtName": "雨花台区",
"provinceName": "江苏省"
},
"contact": {
"mobile": "13282160693",
"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));
}