菜鸟云打印接入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));
}
百世快运标准三联模板
快捷快递标准模板
申通快递标准模板
如风达标准模板
宅急送标准三联模板
圆通快递标准模板
中国邮政国内标快标准模板
天天快递标准模板
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 参考
菜鸟云打印接入Demo的更多相关文章
- 使用速卖通开放平台云API调用菜鸟组件实现云打印
公司是跨境电商,使用速卖通平台卖玩具,我们自己研发的ERP是基于速卖通开放平台API,实现订单的发货提交,打印面单等功能 近期公司要求使用菜鸟组件云打印,去平台里看下,有这个API,如下图所示 实现也 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(16)--使用云打印控件C-Lodop打印页面或套打报关运单信息
在最新的MVC4+EasyUI的Web开发框架里面,我整合了关于网购运单处理的一个模块,其中整合了客户导单.运单合并.到货扫描.扣仓.出仓.查询等各个模块的操作,里面涉及到一些运单套打的操作,不过由于 ...
- Java的云打印Lodop
打印某一个网页上的内容我们都经常遇到过,比如网上申请港澳通行证时需要填写申请表,然后把申请表给打印出来.像这样的打印技术是怎么实现?这种打印可以通过一种叫云打印的插件来做,按我的理解云打印的技 ...
- 飞鹅云打印 API_C#
飞鹅云打印: 提交订单支付成功后台自动打印,实现无人销售,自动打印,后台统计打印记录功能: 有自带WIFY:连接到wify就可以打印小票: 有自动SIM卡:第1年免流量费,第2年30一年 ...
- 微信公众号Java接入demo
微信公众号Java接入demo 前不久买了一台服务,本来是用来当梯子用的,后来买了一个域名搭了一个博客网站,后来不怎么在上面写博客一直闲着,最近申请了一个微信公众号就想着弄点什么玩玩.周末没事就鼓捣了 ...
- c-lodop云打印实现手机打印 JS语句打印
Lodop和c-lodop目前只能安装到windows操作系统上,但是其他操作系统可通过向C-Lodop安装的电脑发送打印任务,实现手机广域网或局域网打印,打印语句也是简单的JS语句,可以轻松实现云打 ...
- deepin云打印实现连接Windows打印机
问题的产生:今天给台式机安装deepin系统时,突发奇想能不能给其安装上打印机驱动,让其实现打印功能. 问题的解决方法: 1.在连接打印机的电脑上安装deepin云打印服务端软件,下载地址:https ...
- 云打印-Beta-凡事预则立
凡事预则立 课程名称:软件工程1916|W(福州大学) 团队名称: 云打印 作业要求: 项目Beta冲刺(团队) 作业目标:Beta冲刺 团队队员 队员学号 队员姓名 个人博客地址 备注 221600 ...
- 修咻咻对追光的人、云打印团队的Beta产品测试报告
修咻咻对追光的人.云打印团队的Beta产品测试报告 作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Beta冲刺(团队) 团队目标 切实可行的计算机协会维修预约平 ...
随机推荐
- Verilog 加法器和减法器(2)
类似半加器和全加器,也有半减器和全减器. 半减器只考虑当前两位二进制数相减,输出为差以及是否向高位借位,而全减器还要考虑当前位的低位是否曾有借位.它们的真值表如下: 对半减器,diff = x ^y, ...
- USB线插拔检测使用UEventObserver检测uevent事件的分析
说实话这玩样儿的代码量真的很少,大家如果能耐得住性子啃一会儿也就能撸懂了. 在这之前研究USB线插拔的时候就知道了有这么个东西,当时也就看了看,但没做什么笔记.最近想用起来,却发现就只有个名字在记忆中 ...
- CF 329B(Biridian Forest-贪心-非二分)
B. Biridian Forest time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- spring自定义类中@AutoWired标识的元素注入为null
最近在做项目的时候,发现程序运行的时候有一个nullpointer exception,一脸懵逼因为感觉程序没什么逻辑.后来发现是因为new出来的component不会自动注入它的元素. 现象:@Co ...
- 用网站(WebSite而不是WebProject)项目构建ASP.NET MVC网站
从ASP.NET MVC第一个版本开始到现在,创建ASP.NET MVC项目的官方方法只有一个,“文件”->“新建”->“项目”,然后选择ASP.NET MVC X Web应用程序. 这种 ...
- iOS开发-UIScreenEdgePanGestureRecognizer实战
UIScreenEdgePanGestureRecognizer名字很长,而且关于其文档也是少的的可怜,苹果官方给的唯一的一个属性是edges,文档中的解释是这样的: A UIScreenEdgePa ...
- 关于如何使用javascript监听滚动条滚动事件
在网页中,通常有一个通往网页顶部的锚点,现在我们就来实现它 Html代码: <a id="scrollup" href="#top" style=&quo ...
- 微信小程序显示html格式内容(wxParse使用及循环解析数据渲染)
小程序默认是不支持html格式的内容显示的,那我们需要显示html内容的时候,就可以通过wxParse来实现. 首先我们下载wxParse,github地址:https://github.com/ic ...
- DNS预解析dns-prefetch提升页面载入速度优化前端性能
当浏览器请求一个URL的时候,通过firebug我们可以发现大概有以下几个过程:阻挡.域名解析.建立连接.发送请求.等待响应.接收数据.后面四个跟用户的网络情况和你的服务器处理速度有关,本文重点说说前 ...
- Kalman滤波器从原理到实现
Kalman滤波器的历史渊源 We are like dwarfs on the shoulders of giants, by whose grace we see farther than the ...