電子面單列印通用解決方案(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程式碼示例)
物流快遞、電商、ERP、倉儲等都涉及發貨業務都需要用到電子面單列印,市面上有各種各樣的電子面單印表機,電子面單列印軟體,電子面單列印工具滿足了列印需求,但未能很好的滿足移動端列印。這裡介紹一個手機端電子面單列印通用解決方案:快寶電子面單雲列印,它的優勢:不限印表機型號、品牌,
快遞鳥電子面單列印功能基於java
之前的後天管理系統的電子面單列印使用的是靈通打單。 使用相對比較麻煩,需要到處Excel之後再匯入,麻煩。 快遞鳥有電子面單api,後臺系統直接對接很是方便,不過也遇到了好些問題。 不難是不難,但是遇到的坑著實是不少,特此記錄一下。 快遞鳥電子面單API地址:http://www.kdniao.com
NopCommerce 事務解決方案(測試文檔)
spa nop 模擬 comm nbsp 接口設計 opc 實體 com 首先我們先看數據庫中的數據表(Forums_Group)表的數據 然後我們開始測試,首先不用事務插入,測試代碼: 測試結果: 表數據: 接下來我們模擬一個錯誤,依然不用事
ubuntu18.04 沒聲音解決方案(坑自己版)
回放 font ubunt ubuntu all sudo 是我 打開 開發 那啥,半個月沒開電腦了,這幾天打開發現系統沒聲了 那咋辦呢,修一修唄 搜索了下問題,還挺簡單的 1 jiang@ryzen:~$ sudo apt install pavucontrol 打開
轉 Android SDK Manager國內無法更新的解決方案(親測有效)
轉自 Android SDK Manager國內無法更新的解決方案(親測有效) 現在由於GWF,google基本和咱們說咱見了,就給現在在做Android 或者想學習Android 的朋友帶來了諸多的不便,最簡單的就是Android SDK Manager 你無法更新了。 現在這裡有一
IDEA建立struct2問題報錯解決方案(親測有效)
報錯案例 [2018-10-06 03:30:14,199] Artifact untitled1:war exploded: Artifact is being deployed, please wait... 06-Oct-2018 15:30:14.824 警告 [RM
Android安全常見風險處理解決方案(附程式碼)
一、資原始檔保護 二、Activity和Service越權檢測 修改export=false 三、Activity劫持檢測 處理檢測app進去後臺的時候提示使用者 也就是在onPause
IntelliJ IDEA 亂碼解決方案 (專案程式碼、控制檯等)
最近IDE從eclipse改成IntelliJ IDEA 了,原因是公司大部分人都在用這個IDE,而且一直推薦用,所以嚐嚐鮮。換的第一天,就遇到了哪個IDE都會遇到的亂碼問題,耗費了好多時間最終解決了,因此在這邊記錄一下解決方案,以供後面參考。 總共有下面幾種亂碼的解決
針對Unity教程不能正常使用的某種情況的解決方案(Unity學習記錄①)
Unity學習記錄①: 關於教程無法正常執行的問題 可能有的同學在從UnityHub上開官方教程的時候會遇到這種情況: 直接彈出了這種介面而沒有官方教程的親切對話方塊 (我有問過學長,據說是版本問題,GetStarted這套教程是2017版本的,可能在新的版本就會出現這種情況) (而且
maven-replacer-plugin 靜態資源版本號解決方案(css/js等)
本文介紹如何使用 maven 的 com.google.code.maven-replacer-plugin 外掛來自動新增版本號,防止瀏覽器快取。 目錄 1.解決方案 2.原始檔案和最終生成效果 3.pom.xml 中外掛新增 4.html中 css/js 檔案引用規則 5.結語 1.解決方案 解
webservice介面實現資料共享的實現的初步解決方案(更新、刪除)
一、伺服器A和伺服器B為對方設定專門的資料庫查詢介面,通過SOAP或者HTTP協議形成相互通訊的功能。 資料編輯操作實現伺服器相互通訊的功能示例(伺服器A和伺服器B):伺服器A為伺服器提B供web service專用服務介面,在使用者進行資料編輯(伺服器A端的訊息)操作動作訊息的時候,伺服器
微信小程式 - 介面更新記錄以及解決方案(2018/12/26)
2018/8/17 - 背景音訊需要在app.json新增requireBackGroundModes 2018/9/12 - 微信更改獲取使用者資訊介面/獲取位置等介面 - button 2018/12/26 - 傲嬌的App
Multisim 安裝報錯:encountered an improper argument 解決方案(部分儀器實用)
在進行Multisim 12.0 安裝時,將下載好的安裝包解壓以後沒有彈出下一步安裝步驟,這個時候到解壓完以後的安裝路徑下面去,看到了autorun.exe ,點選autorun.exe檔案系統沒反應或者出現“encountered an improper argument”
SAP解決方案(典型業務場景)
一、SAP解決方案(典型業務場景) 在華為雲上部署SAP業務,能夠充分利用華為雲大規格、高效能、高安全和高可靠的能力,以及全生命週期的管理服務,幫助企業簡化管理、節省成本、高效運營,快速實現數字化轉型1.1、全系統上雲場景將整體SAP系統部署在華為雲上,租戶通過I
ubuntu中提示找不到make命令的解決方案(command not found)
這篇微博轉載自http://blog.csdn.net/fenglibing/article/details/7096556,感謝博主。 第一種方式:利用安裝盤修復 今天遇到一ubuntu,別人剛裝的,我下載了ncftp,準備從其它地方把檔案搬過來,把 ncftp下載
“ADB Interface”安裝失敗的問題解決方案(親測可行)
在學習Android的過程中,想要通過真機對應用程式進行除錯,電腦連線USB安裝驅動時並不順利,彈出提示為 ADB Interface驅動未安裝,如圖: Android ADB Interface是一個支援android和PC連線的程式,通過它Windows就可以自動識別並安裝驅動軟
針對谷歌預設最小字型12px的正確解決方案 (css、html)
今天晨會,產品要求把以前12px的字型改小一點,我心想這有什麼難的,就隨口答應了。哪知,改css的時候,谷歌瀏覽器中font-size小於12px時,字型就不會再縮小了。當時我的第一反應就是會不會是其他css把字型覆蓋了。結果看了半天也沒發現。於是,只百度一夥了,結果還真讓人大吃一驚:原來谷歌以及谷歌核心
Android Studio與Android SDK 線上更新的解決方案(1.3.2)
1、Android Studio更新 問題:在Android Studio中,點選help-Check for Update,會出現如下錯誤: 解決方案:開啟Android Studio的安裝目錄,
Javaweb開發遇到的問題及解決方案(2017.5.18)
1.利用eclipse新建的Javaweb專案沒有部署描述符web.xml檔案怎麼辦? 右鍵專案名稱->Java EE Tools->Generate Deployment descriptor stub 2.專案釋出時,src資料夾裡的java原始檔編譯後生
JS改變input的value值不觸發onchange事件解決方案(超簡版)
監聽js改變input的值觸發的onchange事件 $("#inpstart").attr("value",$("#inpend")[0].value); 當 我們像上面這樣給一個input賦值時,由於onchange時間對input框不起作用,大家首先會想到使用