菜鸟云打印接入Demo
菜鸟云打印接入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));
}
浙公网安备 33010602011771号