今天我們來(lái)聊如何利用快遞鳥提供的接口來(lái)查詢圓通快遞的物流軌跡。
講解之前我們來(lái)看一下,接口完成以后的實(shí)際顯示效果
以下是我調(diào)用快遞鳥接口獲得的中通物流軌跡信息,顯示的界面效果需要自己開發(fā):
現(xiàn)在我們來(lái)聊一聊具體實(shí)現(xiàn)!
首先我們準(zhǔn)備好需要用到的資源,
測(cè)試商戶ID:
test1617571
測(cè)試API key:
554343b2-7252-439b-b4eb-1af42c8f2175(此Key僅限測(cè)試環(huán)境使用)
API測(cè)試地址:
http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json
我以C#開發(fā)為例來(lái)講解,
如果還沒有注冊(cè)快遞鳥,或者還不知道如何獲取API Key,可以訪問這個(gè)騰訊視頻教程:
https://v.qq.com/x/page/z3068yfw0fl.html(注冊(cè)登陸獲取快遞鳥API Key)
接下來(lái),我們講解一下請(qǐng)求參數(shù)
請(qǐng)求系統(tǒng)級(jí)參數(shù)說(shuō)明:
備注:R-必填(Required),O-可選(Optional),C-報(bào)文中該參數(shù)在一定條件下可選(Conditional)
這里提到了系統(tǒng)級(jí)參數(shù),也相當(dāng)于是公用參數(shù),這些參數(shù)是調(diào)用每個(gè)接口都是必須要傳參的。
接口參數(shù):
接口參數(shù),也叫業(yè)務(wù)參數(shù),請(qǐng)求的業(yè)務(wù)接口不同,參數(shù)的字段,內(nèi)容也不同,是跟著業(yè)務(wù)變化的,這里我們實(shí)現(xiàn)的是即時(shí)查詢接口,請(qǐng)求指令類型:1002,快遞鳥官網(wǎng)要求必須傳遞快遞公司編碼和物流單號(hào) ,圓通快遞的編碼是YTO
如要查看其他快遞公司的編碼,點(diǎn)擊此鏈接:
http://www.kdniao.com/documents
正如我前面的軌跡截圖,圓通快遞的編碼是YTO,物流單號(hào)是78120038107849
業(yè)務(wù)參數(shù)報(bào)文組合如下:
{'OrderCode':'','ShipperCode':'YTO','LogisticCode':'YT4313813113511'}
請(qǐng)求的完整報(bào)文(URL編碼以后):
RequestData=%0d%0a++++++++++++%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27YTO%27%2c%27LogisticCode%27%3a%27YT4313813113511%27%7d%0d%0a++++++++&EBusinessID=1617571&RequestType=1002&DataSign=YjUxYzNlYTBiMjYwYjIzZjE4ZGQ4ZjgyYjJhNGRiZjQ%3d&DataType=2
未編碼的請(qǐng)求報(bào)文:
RequestData={'OrderCode':'','ShipperCode':'YTO','LogisticCode':'YT4313813113511'}
&EBusinessID=1617571&RequestType=1002&DataSign=YjUxYzNlYTBiMjYwYjIzZjE4ZGQ4ZjgyYjJhNGRiZjQ=&DataType=2
返回的報(bào)文信息:
{
"LogisticCode": "YT4313813113511",
"ShipperCode": "YTO",
"Traces": [{
"AcceptStation": "【山東省青島市膠州市公司】 已收件 取件人: 張富強(qiáng) (18521137295)",
"AcceptTime": "2019-12-29 18:15:41"
}, {
"AcceptStation": "【山東省青島市膠州市公司】 已打包",
"AcceptTime": "2019-12-29 18:41:22"
}, {
"AcceptStation": "【山東省青島市膠州市】 已發(fā)出 下一站 【青島轉(zhuǎn)運(yùn)中心公司】",
"AcceptTime": "2019-12-29 18:44:43"
}, {
"AcceptStation": "【青島轉(zhuǎn)運(yùn)中心公司】 已收入",
"AcceptTime": "2019-12-29 19:40:51"
}, {
"AcceptStation": "【青島轉(zhuǎn)運(yùn)中心】 已發(fā)出 下一站 【深圳轉(zhuǎn)運(yùn)中心公司】",
"AcceptTime": "2019-12-29 20:10:01"
}, {
"AcceptStation": "【深圳轉(zhuǎn)運(yùn)中心公司】 已收入",
"AcceptTime": "2019-12-31 13:39:41"
}, {
"AcceptStation": "【深圳轉(zhuǎn)運(yùn)中心】 已發(fā)出 下一站 【廣東省深圳市寶安區(qū)機(jī)場(chǎng)公司】",
"AcceptTime": "2019-12-31 14:04:58"
}, {
"AcceptStation": "【廣東省深圳市寶安區(qū)機(jī)場(chǎng)公司】 已收入",
"AcceptTime": "2020-01-01 01:43:02"
}, {
"AcceptStation": "【廣東省深圳市寶安區(qū)機(jī)場(chǎng)公司】 派件中 派件人: 羅家寧 電話 13924819329 如有疑問,請(qǐng)聯(lián)系:0755-27393821",
"AcceptTime": "2020-01-01 09:36:26"
}, {
"AcceptStation": "客戶簽收人: B5超人 已簽收 感謝使用圓通速遞,期待再次為您服務(wù) 如有疑問請(qǐng)聯(lián)系:13924819329,投訴電話:0755-27393821",
"AcceptTime": "2020-01-02 12:52:32"
}],
"State": "3",
"EBusinessID": "1617571",
"Success": true
} {
"OrderCode": "012657018199",
"ShipperCode": "STO",
"PayType": 1,
"MonthCode": "1234567890",
"ExpType": 1,
"Sender": {
"Company": "LV",
"Name": "Taylor",
"Mobile": "15018442396",
"ProvinceName": "上海",
"CityName": "上海市",
"ExpAreaName": "青浦區(qū)",
"Address": "明珠路"
},
"Receiver": {
"Company": "GCCUI",
"Name": "Yann",
"Mobile": "15018442396",
"ProvinceName": "北京",
"CityName": "北京市",
"ExpAreaName": "朝陽(yáng)區(qū)",
"Address": "三里屯街道"
},
"Commodity": [{
"GoodsName": "鞋子",
"Goodsquantity": 1,
"GoodsWeight": 1
}],
"Weight": 1,
"Quantity": 1,
"Volume": 0,
"Remark": "小心輕放"
}
C#關(guān)鍵代碼:
/// <summary>
/// 即時(shí)查詢物流軌跡
/// </summary>
/// <param name="url">http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json</param>
/// <param name="eBusinessID">test1617571</param>
/// <param name="appKey">554343b2-7252-439b-b4eb-1af42c8f2175</param>
/// <param name="requestData">{'OrderCode':'','ShipperCode':'ZTO','LogisticCode':'78120038107849'}</param>
/// <returns></returns>
public string getOrderTracesByJson(string url,string eBusinessID, string appKey, string requestData)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
param.Add("EBusinessID", eBusinessID);
param.Add("RequestType", "1002");
string dataSign = encrypt(requestData, appKey, "UTF-8");
param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
param.Add("DataType", "2");
string result = ndPost(url, param);
return result;
}
/// <summary>
/// Post方式提交數(shù)據(jù),返回網(wǎng)頁(yè)的源代碼
/// </summary>
/// <param name="url">發(fā)送請(qǐng)求的 URL</param>
/// <param name="param">請(qǐng)求的參數(shù)集合</param>
/// <returns>遠(yuǎn)程資源的響應(yīng)結(jié)果</returns>
private string ndPost(string url, Dictionary<string, string> param)
{
string result = "";
StringBuilder postData = new StringBuilder();
if (param != null && param.Count > 0)
{
foreach (var p in param)
{
if (postData.Length > 0)
{
postData.Append("&");
}
postData.Append(p.Key);
postData.Append("=");
postData.Append(p.Value);
}
}
// return postData.ToString();
byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded";
request.Referer = url;
request.Accept = "*/*";
request.Timeout = 30 * 1000;
request.UrAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
request.Method = "POST";
request.ContentLength = byteData.Length;
Stream stream = request.GetRequestStream();
stream.Write(byteData, 0, byteData.Length);
stream.Flush();
stream.Clo();
HttpWebRespon respon = (HttpWebRespon)request.GetRespon();
Stream backStream = respon.GetResponStream();
StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
result = sr.ReadToEnd();
sr.Clo();
backStream.Clo();
respon.Clo();
request.Abort();
}
catch (Exception ex)
{
result = ex.Message;
}
return result;
}
///<summary>
///電商Sign簽名
///</summary>
///<param name="content">內(nèi)容</param>
///<param name="keyValue">Appkey</param>
///<param name="chart">URL編碼 </param>
///<returns>DataSign簽名</returns>
private string encrypt(String content, String keyValue, String chart)
{
if (keyValue != null)
{
return ba64(MD5(content + keyValue, chart), chart);
}
return ba64(MD5(content, chart), chart);
}
///<summary>
/// 字符串MD5加密
///</summary>
///<param name="str">要加密的字符串</param>
///<param name="chart">編碼方式</param>
///<returns>密文</returns>
private string MD5(string str, string chart)
{
byte[] buffer = System.Text.Encoding.GetEncoding(chart).GetBytes(str);
try
{
System.Security.Cryptography.MD5CryptoServiceProvider check;
check = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] somme = check.ComputeHash(buffer);
string ret = "";
foreach (byte a in somme)
{
if (a < 16)
ret += "0" + a.ToString("X");
el
ret += a.ToString("X");
}
return ret.ToLower();
}
catch
{
throw;
}
}
/// <summary>
/// ba64編碼
/// </summary>
/// <param name="str">內(nèi)容</param>
/// <param name="chart">編碼方式</param>
/// <returns></returns>
private string ba64(String str, String chart)
{
return Convert.ToBa64String(System.Text.Encoding.GetEncoding(chart).GetBytes(str));
}
附上詳細(xì)的接口文檔給大家:
http://www.kdniao.com/documents
本文發(fā)布于:2023-02-28 21:07:00,感謝您對(duì)本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/1677726881103762.html
版權(quán)聲明:本站內(nèi)容均來(lái)自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
本文word下載地址:圓通快遞查詢單號(hào)查詢物流信息(圓通快遞查詢單號(hào)查詢物流信息網(wǎng)).doc
本文 PDF 下載地址:圓通快遞查詢單號(hào)查詢物流信息(圓通快遞查詢單號(hào)查詢物流信息網(wǎng)).pdf
| 留言與評(píng)論(共有 0 條評(píng)論) |