电子面单云打印方案(PHP示例)
物流快遞、電商、ERP、倉儲等都涉及發貨業務都需要用到電子面單打印,市面上有各種各樣的電子面單打印機,電子面單打印軟件,電子面單打印工具滿足了打印需求,但未能很好的滿足移動端打印。這里介紹一個手機端電子面單打印通用解決方案:快寶電子面單云打印,它的優勢:不限打印機型號、品牌,可打印各大快遞公司電子面單,可打印菜鳥電子面單,支持批量打印,支持遠程打印,實現電子面單打印機共享等。
一、對接流程
1. 注冊快寶開放平臺(獲取ID和API ?Key)
2. 安裝云打印機代理程序(云端)
3. 將普通電子面單打印機接入云端
4. 調用注冊云打印機API,將開發者賬號,與云打印機關聯
5. 發送打印任務
?
二、對接詳細說明
接口名稱:cloud.print.do
接口地址:https://kop.kuaidihelp.com/api
請求方式:HTTP POST
編碼格式:UTF-8
結果格式:JSON
公共請求參數↓
| 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 |
快寶電子面單云打印,支持6中開發語言的對接:Java,C#,Python,PHP,Node.js,Curl。
1. 單個電子面單打印請求代碼示例,PHP舉例
$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":"打印機ID,通過獲取打印機列表查看打印機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. 批量電子面單打印請求代碼示例,PHP舉例
$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":"打印機ID,通過獲取打印機列表獲得打印機的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.?結合“微快遞小郵筒”(微信公眾號)里面配置的單號源自動獲取單號、打印模板、路由信息PHP示例
$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":"打印機ID,通過獲取打印機列表獲取打印機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));成功返回結果示例(json)
{ "code":int0 "msg":string"success" "uid":string"a6934adee62d8ba3430d4ac678dd5f46c7a79d6e" "data":{ "提交任務時的tid":{ "status":string"success" "task_id":int46208 } } }失敗返回結果示例(json)
{ "code":int200115 "msg":string"業務參數有誤,請檢查" "uid":string"a6934adee62d8ba3430d4ac678dd5f46c7a79d6e" "data":{} }-the end-
轉載于:https://my.oschina.net/u/3830680/blog/1800430
總結
以上是生活随笔為你收集整理的电子面单云打印方案(PHP示例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序-仿朋友圈开发问题
- 下一篇: PHP移动互联网开发笔记(1)——环境搭