菜鸟云打印接入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冲刺(团队) 团队目标 切实可行的计算机协会维修预约平 ...
随机推荐
- JavaScript:String 对象
ylbtech-JavaScript:String 对象 1.返回顶部 String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); ...
- [leetcode]Distinct Subsequences @ Python
原题地址:https://oj.leetcode.com/problems/distinct-subsequences/ 题意: Given a string S and a string T, co ...
- OC-字符串中大小写字母转换
一般语言中的大小写转换都会提供的有默认的函数,不过闲来无事,简单的模仿实现了一下: 系统中默认的大小写转换: NSString *name=@"博客园-FlyElephant"; ...
- 【Error】centos7 minimal connect: Network is unreachable
参考链接:http://www.centoscn.com/CentosBug/osbug/2015/1208/6500.html 由于centos7 和之前的版本差异比较大,之前的一些命令不能完全使用 ...
- centos7.2使用rpm安装jdk8
①下载jdk 去jdk下载页面找到要下载的jdk,用wget下载 wget --no-check-certificate --no-cookies --header "Cookie: ora ...
- SQL Server 损坏修复 之一 常见错误解读
SQL Server 对数据库损坏的错误类型做了细化,在此对几个典型的错误作一下介绍. 错误信息是:“在文件 '%ls'中.偏移量为 %#016I64x 的位置执行 %S_MSG 期间,操作系统已经向 ...
- (转)Unity3D研究院之手游开发中所有特殊的文件夹(assetbundle与Application.persistentDataPath)
这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Edi ...
- Is there anyway to discover which ip addresses are connected to the db?
From mongo shell run db.currentOp() to show all active connections or db.currentOp(true) to show all ...
- Java 面向切面编程(Aspect Oriented Programming,AOP)
本文内容 实例 引入 原始方法 装饰者模式 JDK 动态代理和 cglib 代理 直接使用 AOP 框架--AspectWerkz 最近跳槽了,新公司使用了 AOP 相关的技术,于是查点资料,复习一下 ...
- C#.NET常见问题(FAQ)-构造器constructor有什么用
所谓的构造器constructor,就是声明类的时候定义一个public 类名的方法,这个方法不需要传递任何数据,这样的话在声明任何类的实例的时候都会无条件执行里面的方法 析构器只在程序销毁的时候 ...