如何利用快遞鳥提供的接口來查詢順豐快遞的物流軌跡。
我們先來看一下,接口完成以后的實際顯示效果
以下是產品應用截圖,
實際上快遞鳥返回的報文信息會更詳細,在給客戶展示的信息可根據產品需要來封裝返回軌跡信息。
現在我們來聊一聊實現方式!
首先我們准備好需要用到的資源,
這里推薦大家愛奇藝視頻教程:
https://www.iqiyi.com/v_19rxcwtwk0.html(如何從注冊到認證,最快1小時完成上百家物流軌跡查詢)
測試商戶ID:
test1617571
測試API key:
554343b2-7252-439b-b4eb-1af42c8f2175(此Key僅限測試環境使用)
API測試地址:
http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json
接下來,我們講解一下請求參數
請求系統級參數說明:一、接口描述/說明
參數名稱 |
類型 |
說明 |
必須要求 |
RequestData |
String |
請求內容需進行URL(utf-8)編碼。請求內容JSON格式,須和DataType一致。 |
R |
EBusinessID |
String |
商戶ID,請在我的服務頁面查看。 |
R |
RequestType |
String |
請求指令類型:1002 |
R |
DataSign |
String |
數據內容簽名:把(請求內容(未編碼)+AppKey)進行MD5加密,然后Base64編碼,最后 進行URL(utf-8)編碼。詳細過程請查看Demo。 |
R |
DataType |
String |
請求、返回數據類型:2-json; |
O |
備注:R-必填(Required),O-可選(Optional),C-報文中該參數在一定條件下可選(Conditional)
這里提到了系統級參數,也相當於是公用參數,這些參數是調用每個接口都是必須要傳參的。
二、接口參數
請求內容字段定義:
參數名稱 |
類型 |
說明 |
必須要求 |
OrderCode |
String |
訂單編號 |
O |
ShipperCode |
String |
快遞公司編碼 |
R |
LogisticCode |
String |
物流單號 |
R |
CustomerName |
String |
寄件人或收件人的手機號后四位數字 |
R |
接口參數,也叫業務參數,請求的業務接口不同,參數的字段,內容也不同,是跟着業務變化的,這里我們實現的是即時查詢接口,請求指令類型:1002,快遞鳥官網要求必須傳遞快遞公司編碼和物流單號 ,順豐快遞的編碼是SF
這里需要注意,查詢順豐快遞單號,需要添加一個應用級參數CustomerName,並且是必填
如要查看其他快遞公司的編碼,點擊此鏈接:
http://www.kdniao.com/documents
我們用順豐單號295734066970來實現軌跡查詢,
順豐快遞請求JSON
{
'OrderCode': '',
'ShipperCode': 'SF',
'LogisticCode': '295734066970',
'CustomerName': '6073'
}
請求的完整報文(URL編碼以后):
RequestData=%0d%0a++++++++++++%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27SF%27%2c%27LogisticCode%27%3a%27295734066970%27%2c%27CustomerName%27%3a%276073%27%7d%0d%0a++++++++&EBusinessID=1264783&RequestType=1002&DataSign=ZTJlZWU0NjI1YTljNTlmYzY5Y2M4YjMzYjcxYWU3MDA%3d&DataType=2
未編碼的請求報文:
RequestData={'OrderCode':'','ShipperCode':'SF','LogisticCode':'295734066970','CustomerName':'6073'}&EBusinessID=1264783&RequestType=1002&DataSign=ZTJlZWU0NjI1YTljNTlmYzY5Y2M4YjMzYjcxYWU3MDA=&DataType=2
返回參數定義:
參數名稱 |
類型 |
說明 |
必須要求 |
EBusinessID |
String |
用戶ID |
R |
OrderCode |
String |
訂單編號 |
O |
ShipperCode |
String |
快遞公司編碼 |
R |
LogisticCode |
String |
物流運單號 |
O |
Success |
Bool |
成功與否 |
R |
Reason |
String |
失敗原因 |
O |
State |
String |
物流狀態:2-在途中,3-簽收,4-問題件 |
R |
Traces |
|||
AcceptTime |
String |
時間 |
R |
AcceptStation |
String |
描述 |
R |
Remark |
String |
備注 |
O |
順豐單號295734066970的返回報文信息
{
"LogisticCode": "295734066970",
"ShipperCode": "SF",
"Traces": [{
"AcceptStation": "順豐速運 已收取快件",
"AcceptTime": "2020-02-13 18:39:21"
}, {
"AcceptStation": "快件在【衡水桃城區集收客戶營業部】已裝車,准備發往 【石家庄高開集散中心】",
"AcceptTime": "2020-02-13 18:39:31"
}, {
"AcceptStation": "快件已發車",
"AcceptTime": "2020-02-13 19:15:24"
}, {
"AcceptStation": "快件到達 【石家庄高開集散中心】",
"AcceptTime": "2020-02-14 04:27:00"
}, {
"AcceptStation": "快件在【石家庄高開集散中心】已裝車,准備發往 【長沙星沙集散中心】",
"AcceptTime": "2020-02-14 08:36:14"
}, {
"AcceptStation": "快件已發車",
"AcceptTime": "2020-02-14 18:34:31"
}, {
"AcceptStation": "快件到達 【長沙星沙集散中心】",
"AcceptTime": "2020-02-16 09:58:05"
}, {
"AcceptStation": "快件在【長沙星沙集散中心】已裝車,准備發往 【懷化盈口集散點】",
"AcceptTime": "2020-02-16 11:03:53"
}, {
"AcceptStation": "快件已發車",
"AcceptTime": "2020-02-16 11:50:35"
}, {
"AcceptStation": "快件到達 【懷化盈口集散點】",
"AcceptTime": "2020-02-16 20:20:42"
}, {
"AcceptStation": "快件在【懷化盈口集散點】已裝車,准備發往 【沅陵縣御鑫城營業點】",
"AcceptTime": "2020-02-17 05:33:23"
}, {
"AcceptStation": "快件已發車",
"AcceptTime": "2020-02-17 05:33:37"
}, {
"AcceptStation": "快件到達 【沅陵縣御鑫城營業點】",
"AcceptTime": "2020-02-17 07:55:20"
}, {
"AcceptStation": "快件在【沅陵縣御鑫城營業點】已裝車,准備發往 【懷化市沅陵縣二酉苗族鄉合作點】",
"AcceptTime": "2020-02-17 09:31:53"
}, {
"AcceptStation": "快件到達 【懷化市沅陵縣二酉苗族鄉合作點】",
"AcceptTime": "2020-02-17 09:32:16"
}, {
"AcceptStation": "正在派送途中,請您准備簽收(派件人:鄧小雲,電話:13298660182)",
"AcceptTime": "2020-02-17 09:32:31"
}, {
"AcceptStation": "快件交給鄧小雲,正在派送途中(聯系電話:13298660182,順豐已開啟“安全呼叫”保護您的電話隱私,請放心接聽!)",
"AcceptTime": "2020-02-17 09:33:26"
}, {
"AcceptStation": "已簽收,感謝使用順豐,期待再次為您服務(主單總件數:1件)",
"AcceptTime": "2020-02-17 22:41:24"
}, {
"AcceptStation": "在官網\"運單資料&簽收圖\",可查看簽收人信息",
"AcceptTime": "2020-02-17 22:41:26"
}],
"State": "3",
"EBusinessID": "1264783",
"Success": true
}
沒有物流軌跡,會返回如下報文:
{
"LogisticCode": "295734066970",
"ShipperCode": "SF",
"Traces": [],
"State": "0",
"EBusinessID": "1264783",
"Reason": "暫無軌跡信息",
"Success": true
}
未實名認證,未訂購套餐或者套餐可用查詢量已經用完返回如下報文:
{
"LogisticCode": "295734066970",
"ShipperCode": "SF",
"Traces": [],
"State": "0",
"EBusinessID": "1264783",
"Reason": "業務錯誤[沒有可用套餐]",
"Success": false
}
這里根據我們的實際業務需求來選擇免費套餐或者收費套餐。
實名認證和免費套餐申請的方法在愛奇藝視頻教程里有詳細說明。
愛奇藝視頻教程:
https://www.iqiyi.com/v_19rxcwtwk0.html
附上詳細的接口文檔給大家:
http://www.kdniao.com/documents
提供源碼下載:
https://download.csdn.net/download/yanghanwen/12139326
調用第三方物流接口,替換自己的key就能直接使用,主要實現了物流在線軌跡查詢,訂單訂閱,軌跡推送,支持上百家家的快遞查詢接口,包括主流的四通一達,支持上門取件服務,其他接口調用,修改調用指令和參數就能實現。
演示截圖: