1. 程式人生 > >電子面單列印通用解決方案(PHP程式碼示例)

電子面單列印通用解決方案(PHP程式碼示例)

物流快遞、電商、ERP、倉儲等都涉及發貨業務都需要用到電子面單列印,市面上有各種各樣的電子面單印表機,電子面單列印軟體,電子面單列印工具滿足了列印需求,但未能很好的滿足移動端列印。這裡介紹一個手機端電子面單列印通用解決方案:快寶電子面單雲列印,它的優勢:不限印表機型號、品牌,可列印各大快遞公司電子面單,可列印菜鳥電子面單,支援批量列印,支援遠端列印,實現電子面單印表機共享等。

一、雲列印介紹

快寶電子面單雲列印,將普通熱敏印表機一鍵接入雲端,並提供封裝好的印表機管理、列印任務傳送、任務狀態更新等介面,助力開發者一天就可開發出一個功能完整、使用便捷的移動電子面單列印程式。有如下特點:

1. 極簡接入:普通印表機接入移動共享雲端

2. 極速請求:一個http請求就可以完成列印

3. 極速定製:電子面單列印軟體半天擁有

二、如何使用雲列印

快寶雲列印包括6個API,分別使用與不同的場景,根據軟體使用的流程對接不同

雲列印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

公共請求引數:

名稱型別是否必須描述
methodstringAPI介面名稱
app_idstring使用者ID(註冊開放平臺時分配,在控制檯中檢視)
signstring按照規則(md5(app_id + method + ts + api_key))生成的驗證合法性簽名
tsstring當前請求的時間戳
datastringJSON格式請求引數設定

公共響應引數

名稱型別是否必須描述
codeint響應狀態碼。0-成功,非0-失敗
msgstring返回結果說明
uidstring本次請求唯一業務流水號
datastringJSON格式響應資料

請求引數

名稱型別是否必須描述
agent_idstring雲印表機編號
actionstring方法標識(print.json.cn)
print_typestring1:底單 2:列印 3:底單和列印.(可選,預設3,任務內設定,則以任務內設定為準)
batchstring是否為批量
print_datastring列印資料
sequencestring當前/總數,預設1/1
template_idstring模板id檢視詳情
cp_codestring快遞品牌
pickup_codestring取件碼(可選)
print_typestring1:底單 2:列印 3:底單和列印.(可選,預設3)
user_namestring列印人的名稱,若是業務員,可包括手機號碼(可選)
notestring備註(可選)
goods_namestring物品名(可選)
weightstring物品重量(可選)
tidstring(建議用訂單號之類的唯一標識,提交和回撥時將返回該欄位, 申請單號時也將使用該欄位當訂單號)
recipientstring收件資訊
addressstring收件人地址
provincestring收件人省份
districtstring收件人縣級名稱
citystring收件人市級名稱
detailstring收件人詳細地址
mobilestring收件人手機
namestring收件人姓名
phonestring收件人固話
routing_infostring快遞路由資訊
consolidationstring集包地資訊
namestring集包地名稱
originstring路由網點公司
codestring路由網點公司編號
namestring路由網點公司編號名稱
route_codestring二三段碼
sortationstring大字及一段碼
namestring大字名稱
senderstring發件資訊
addressstring發件人地址
provincestring發件人省份
districtstring發件人縣級名稱
citystring發件人市級名稱
detailstring發件人詳細地址
mobilestring發件人手機
namestring發件人姓名
phonestring發件人固話
waybill_codestring運單號

響應引數

名稱型別是否必須描述
statusstring狀態
task_idstring此次請求任務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框不起作用,大家首先會想到使用