PHP代码示例之电子面单打印通用解决方案
物流快递、电商、ERP、仓储等都涉及发货业务都需要用到电子面单打印,市面上有各种各样的电子面单打印机,电子面单打印软件,电子面单打印工具满足了打印需求,但未能很好的满足移动端打印。这里介绍一个手机端电子面单打印通用解决方案:快宝电子面单云打印,它的优势:不限打印机型号、品牌,可打印各大快递公司电子面单,可打印菜鸟电子面单,支持批量打印,支持远程打印,实现电子面单打印机共享等。
一、云打印介绍
快宝电子面单云打印,将普通热敏打印机一键接入云端,并提供封装好的打印机管理、打印任务发送、任务状态更新等接口,助力开发者一天就可开发出一个功能完整、使用便捷的移动电子面单打印程序。有如下特点:
1. 极简接入:普通打印机接入移动共享云端
2. 极速请求:一个http请求就可以完成打印
3. 极速定制:电子面单打印软件半天拥有
二、如何使用云打印
快宝云打印包括6个API,分别使用与不同的场景,根据软件使用的流程对接不同
接口名称 | 接口描述 |
---|---|
注册云打印机 | 将开发者账号与云打印机关联 |
删除云打印机 | 解除开发者账号与云打印机关联 |
发送打印任务 | 给云打印机发送打印任务 |
获取云打印机列表 | 获取开发者账号已经关联的云打印机信息 |
查询打印任务详情 | 获取某个打印任务信息 |
获取云打印机信息 | 获取某个云打印机信息 |
使用云打印,需要做如下准备:
准备工作 | 备注 |
---|---|
电子面单打印机 | 不限品牌,不限型号 |
安装云打印代理程序(下载地址:http://ckd.so/ydy) | win 7及以上系统,不支持Mac系统 |
获的快宝开放平台开发者账号信息(ID和API Key) | 注册快宝开放平台即可获取(http://open.kuaidihelp.com/) |
云打印API使用步骤,可根据具体业务选择对接的API:
三、云打印技术对接(以PHP为例)
接口名称:cloud.print.do
正式地址:https://kop.kuaidihelp.com/api
请求方式:HTTP POST
请求方法编码格式:utf-8
公共请求参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
method | string | 是 | API接口名称 |
app_id | string | 是 | 用户ID(注册开放平台时分配,在控制台中查看) |
sign | string | 是 | 按照规则(md5(app_id + method + ts + api_key))生成的验证合法性签名 |
ts | string | 是 | 当前请求的时间戳 |
data | string | 是 | JSON格式请求参数设置 |
公共响应参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | int | 是 | 响应状态码。0-成功,非0-失败 |
msg | string | 是 | 返回结果说明 |
uid | string | 是 | 本次请求唯一业务流水号 |
data | string | 是 | JSON格式响应数据 |
请求参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
agent_id | string | 是 | 云打印机编号 |
action | string | 是 | 方法标识(print.json.cn) |
print_type | string | 是 | 1:底单 2:打印 3:底单和打印.(可选,默认3,任务内设置,则以任务内设置为准) |
batch | string | 是 | 是否为批量 |
print_data | string | 是 | 打印数据 |
sequence | string | 是 | 当前/总数,默认1/1 |
template_id | string | 是 | 模板id查看详情 |
cp_code | string | 是 | 快递品牌 |
pickup_code | string | 是 | 取件码(可选) |
print_type | string | 是 | 1:底单 2:打印 3:底单和打印.(可选,默认3) |
user_name | string | 是 | 打印人的名称,若是业务员,可包括手机号码(可选) |
note | string | 是 | 备注(可选) |
goods_name | string | 是 | 物品名(可选) |
weight | string | 是 | 物品重量(可选) |
tid | string | 是 | (建议用订单号之类的唯一标识,提交和回调时将返回该字段, 申请单号时也将使用该字段当订单号) |
recipient | string | 是 | 收件信息 |
address | string | 是 | 收件人地址 |
province | string | 是 | 收件人省份 |
district | string | 是 | 收件人县级名称 |
city | string | 是 | 收件人市级名称 |
detail | string | 是 | 收件人详细地址 |
mobile | string | 是 | 收件人手机 |
name | string | 是 | 收件人姓名 |
phone | string | 是 | 收件人固话 |
routing_info | string | 是 | 快递路由信息 |
consolidation | string | 是 | 集包地信息 |
name | string | 是 | 集包地名称 |
origin | string | 是 | 路由网点公司 |
code | string | 是 | 路由网点公司编号 |
name | string | 是 | 路由网点公司编号名称 |
route_code | string | 是 | 二三段码 |
sortation | string | 是 | 大字及一段码 |
name | string | 是 | 大字名称 |
sender | string | 是 | 发件信息 |
address | string | 是 | 发件人地址 |
province | string | 是 | 发件人省份 |
district | string | 是 | 发件人县级名称 |
city | string | 是 | 发件人市级名称 |
detail | string | 是 | 发件人详细地址 |
mobile | string | 是 | 发件人手机 |
name | string | 是 | 发件人姓名 |
phone | string | 是 | 发件人固话 |
waybill_code | string | 是 | 运单号 |
响应参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
status | string | 是 | 状态 |
task_id | string | 是 | 此次请求任务ID |
支持Java,C#,Python,PHP,Node.js,Curl等6中语言接入,下面以PHP为例,展示发送请求任务代码示例。
1. 单个打印任务,请求示例
$host = "https://kop.kuaidihelp.com/api"; $method = "POST"; $headers = array(); //根据API的要求,定义相对应的Content-Type array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8"); $querys = ""; $bodys = [ "app_id"=>'50001', "method"=>'cloud.print.do', "sign"=>"bdf3b5f50865ac813cbdfd6c9b572b79", "ts"=>'1524209949', "data"=>'{ "action":"print.json.cn(菜鸟标准格式JSON)", // "agent_id":"目标打印代理", //必填 "print_type":"打印类型", //1:预览, 2:打印, 3:打印预览. 未设置则默认为3.(任务内设置,则以任务内设置为准) "batch":"", //字符串"true"或者bool值 true则为批量,其他值则为非批量 是否为批量 "print_data": { "sequence": "1/1", //可选,打印文档当前序列:当前/总数,默认1/1 "template_id": "模板id", "cp_code": "快递品牌(提供模板id,此字段会被忽略)",//参照“快递品牌列表”,兼容菜鸟和快宝品牌编码 "pickup_code": "取件码(可选)", "print_type": "1:底单 2:打印 3:底单和打印.(可选,默认3)", "user_name": "打印人的名称,若是业务员,可包括手机号码(可选)", "note": "备注(可选)", "goods_name": "物品名(可选)", "weight": "物品重量(可选)", "tid": "(建议用订单号之类的唯一标识,提交和回调时将返回该字段, 申请单号时也将使用该字段当订单号)", "recipient": { "address": { "city": "宁德市", "detail": "哦里咯啦咯啦", "district": "福鼎市", "province": "福建省" }, "mobile": "13344556677", "name": "XXX", "phone": "" }, "routing_info": { "consolidation": {"name": "温州转福鼎包(集包名)"}, "origin": {"code": "610025","name": "四川邛崃公司"}, "route_code": "009 030(二三段码)", "sortation": {"name": "福鼎351(大字 一段码)"} }, "sender": { "address": { "city": "成都市", "detail": "兴民街55号", "district": "邛崃市", "province": "四川省" }, "mobile": "13344556677", "name": "XXX", "phone": "" }, "waybill_code": "333333333333" } }' ]; $bodys = http_build_query($bodys); $url = $host; $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); if (1 == strpos("$".$host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys); var_dump(curl_exec($curl));
2. 批量打印任务,请求示例
$host = "https://kop.kuaidihelp.com/api"; $method = "POST"; $headers = array(); //根据API的要求,定义相对应的Content-Type array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8"); $querys = ""; $bodys = [ "app_id"=>'50001', "method"=>'cloud.print.do', "sign"=>"bdf3b5f50865ac813cbdfd6c9b572b79", "ts"=>'1524209949', "data"=>'{ "action":"print.json.cn(菜鸟标准格式JSON)", // "agent_id":"目标打印代理", //必填 "print_type":"打印类型", //1:预览, 2:打印, 3:打印预览. 未设置则默认为3.(任务内设置,则以任务内设置为准) "batch":"", //字符串"true"或者bool值 true则为批量,其他值则为非批量 是否为批量 "print_data": [ { "cod_amount": 200, //如果是货到付款服务,则使用该字段 "sequence": "1/1", //可选,打印文档当前序列:当前/总数,默认1/1 "template_id": "模板id", "cp_code": "快递品牌",//参照“快递品牌列表”,兼容菜鸟和快宝品牌编码 "pickup_code": "取件码(可选)", "print_type": "1:底单 2:打印 3:底单和打印.(可选,默认3)", "user_name": "打印人的名称,若是业务员,可包括手机号码(可选)", "note": "备注(可选)", "goods_name": "物品名(可选)", "weight": "物品重量(可选)", "tid": "(建议用订单号之类的唯一标识,提交和回调时将返回该字段, 申请单号时也将使用该字段当订单号)", "recipient": { "address": { "city": "宁德市", "detail": "哦里咯啦咯啦", "district": "福鼎市", "province": "福建省" }, "mobile": "13344556677", "name": "XXX", "phone": "" }, "routing_info": { "consolidation": { "name": "温州转福鼎包(集包名)" }, "origin": { "code": "610025", "name": "四川邛崃公司" }, "route_code": "009 030(二三段码)", "sortation": { "name": "福鼎351(大字 一段码)" } }, "sender": { "address": { "city": "成都市", "detail": "兴民街55号", "district": "邛崃市", "province": "四川省" }, "mobile": "13344556677", "name": "XXX", "phone": "" }, "waybill_code": "333333333333" } ] }' ]; $bodys = http_build_query($bodys); $url = $host; $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); if (1 == strpos("$".$host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys); var_dump(curl_exec($curl));
3.结合“微快递小邮筒”(微信公众号)里面配置的单号源自动获取单号、打印模板、路由信息示例
$host = "https://kop.kuaidihelp.com/api"; $method = "POST"; $headers = array(); //根据API的要求,定义相对应的Content-Type array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8"); $querys = ""; $bodys = [ "app_id"=>'50001', "method"=>'cloud.print.do', "sign"=>"bdf3b5f50865ac813cbdfd6c9b572b79", "ts"=>'1524209949', "data"=>'{ "action":"print.json.cn(菜鸟标准格式JSON)", // "agent_id":"目标打印代理", //必填 "print_type":"打印类型", //1:预览, 2:打印, 3:打印预览. 未设置则默认为3.(任务内设置,则以任务内设置为准) "batch":"", //字符串"true"或者bool值 true则为批量,其他值则为非批量 是否为批量 "print_data": { "cod_amount": 200, //如果是货到付款服务,则使用该字段 "sequence": "1/1", //可选,打印文档当前序列:当前/总数,默认1/1 "template_id": "模板id", "cp_code": "快递品牌(提供模板id,此字段会被忽略)",//参照“快递品牌列表”,兼容菜鸟和快宝品牌编码 "pickup_code": "取件码(可选)", "print_type": "1:底单 2:打印 3:底单和打印.(可选,默认3)", "user_name": "打印人的名称,若是业务员,可包括手机号码(可选)", "note": "备注(可选)", "goods_name": "物品名(可选)", "weight": "物品重量(可选)", "tid": "(建议用订单号之类的唯一标识,提交和回调时将返回该字段, 申请单号时也将使用该字段当订单号)", "sender": { "address": { "province": "江西省", "city": "赣州市", "district": "寻乌县", "detail": "寻乌县" }, "mobile": "13344556677", "phone": "", "name": "XXX" }, "recipient": { "address": { "province": "江西省", "city": "宜春市", "district": "袁州区", "detail": "秀江外滩电13栋" }, "mobile": "13344556677", "phone": "", "name": "XXX" }, "routing_info": {}, "waybill_code": "" //留空!留空!留空! } }' ]; $bodys = http_build_query($bodys); $url = $host; $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); if (1 == strpos("$".$host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys); var_dump(curl_exec($curl));
-the end-
以上就是PHP代码示例之电子面单打印通用解决方案的详细内容,更多请关注其它相关文章!