圓通快遞單號查詢接口物流路由跟蹤信息快遞鳥api對接教程


前言

看完快遞鳥api對接教程這篇文章,然后把源碼復制到你的項目上,就能快速完成圓通快遞接口對接.更適合剛入門的菜鳥,調用快遞鳥的圓通快遞查詢API接口,能查詢到圓通快遞單號從收件、運輸,到轉運中心,派送到簽收等各個環節的物流發貨狀態。快遞鳥api接口不區分開發語言,支持Java,C#,PHP,Python,ObjectC等開發語言的程序調用。下面具體講解實現過程.

目錄

1.完成前期准備工作

2.API接口

3.請求參數(Headers)

4.請求參數(Body)

5.返回參數(Return)

6.請求完整報文(示例)

7.成功返回報文(示例)

8.失敗返回報文(示例)

9.無軌跡返回報文(示例)

10.分步講解(C#版本)

11.順豐快遞查詢接口應用效果

12.關於簽名

13.返回碼定義

1.完成前期准備工作

1.1,去快遞鳥官網免費注冊一個賬號

1.2,免費獲得一個apiKey(接口權限驗證需要), 獲取用戶ID和ApiKey

1.3,完成實名認證流程,去認證

1.4,訂購一個免費套餐,去訂購

 

2.API接口


2.1,測試調用地址:http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json

2.2,正式調用地址:http://api.kdniao.com/api/dist

2.3,請求方式:POST

2.4,編碼格式(utf-8):application/x-www-form-urlencoded;charset=utf-8

2.5,返回類型:JSON

2.6,調試頁面:http://kdniao.com/UserCenter/v2/SandBox/TrackQuery.aspx

2.7,調試工具:去調試(使用快遞鳥賬號登錄)

 

3.請求參數(Headers)

 

參數名稱 類型 說明 必須要求
RequestData String 請求內容需進行URL(utf-8)編碼,請求內容JSON格式,須和DataType一致 必填
EBusinessID String 用戶ID,查看用戶ID和ApiKey 必填
RequestType String 請求指令類型:1002  必填

DataSign String 簽名數據,(Body+ApiKey)進行MD5加密,再進行Base64編碼,最后進行URL(utf-8)編碼 必填
DataType String 求、返回數據類型:2-json ,默認Json 選填

 

 

4.請求參數(Body)

參數名稱 類型 說明 必須要求
OrderCode String 訂單編號 選填
ShipperCode String 快遞公司編碼,圓通:YTO 必填
LogisticCode String 物流運單號 必填

 

5.返回參數(Return)

參數名稱 類型 說明 必須要求
EBusinessID String 用戶ID  必填
ShipperCode String 快遞公司編碼  必填
LogisticCode String 物流運單號 選填
Success String 成功與否 必填
Reason String 失敗原因 選填
State String 物流狀態:2-在途中,3-簽收,4-問題件 必填
Traces  String 時間  
AcceptTime String   必填
AcceptStation String 描述  選填
Remark String 備注 必填

 

 

6.請求完整報文(示例)

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

 

7.成功返回報文(示例)

{
    "LogisticCode": "YT4313813113511",
    "ShipperCode": "YTO",
    "Traces": [{
        "AcceptStation": "【山東省青島市膠州市公司】 已收件 取件人: 張富強 (18521137295)",
        "AcceptTime": "2019-12-29 18:15:41"
    }, {
        "AcceptStation": "【山東省青島市膠州市公司】 已打包",
        "AcceptTime": "2019-12-29 18:41:22"
    }, {
        "AcceptStation": "【山東省青島市膠州市】 已發出 下一站 【青島轉運中心公司】",
        "AcceptTime": "2019-12-29 18:44:43"
    }, {
        "AcceptStation": "【青島轉運中心公司】 已收入",
        "AcceptTime": "2019-12-29 19:40:51"
    }, {
        "AcceptStation": "【青島轉運中心】 已發出 下一站 【深圳轉運中心公司】",
        "AcceptTime": "2019-12-29 20:10:01"
    }, {
        "AcceptStation": "【深圳轉運中心公司】 已收入",
        "AcceptTime": "2019-12-31 13:39:41"
    }, {
        "AcceptStation": "【深圳轉運中心】 已發出 下一站 【廣東省深圳市寶安區機場公司】",
        "AcceptTime": "2019-12-31 14:04:58"
    }, {
        "AcceptStation": "【廣東省深圳市寶安區機場公司】 已收入",
        "AcceptTime": "2020-01-01 01:43:02"
    }, {
        "AcceptStation": "【廣東省深圳市寶安區機場公司】 派件中 派件人: 羅家寧 電話 13924819329 如有疑問,請聯系:0755-27393821",
        "AcceptTime": "2020-01-01 09:36:26"
    }, {
        "AcceptStation": "客戶簽收人: B5超人 已簽收 感謝使用圓通速遞,期待再次為您服務 如有疑問請聯系:13924819329,投訴電話:0755-27393821",
        "AcceptTime": "2020-01-02 12:52:32"
    }],
    "State": "3",
    "EBusinessID": "1617571",
    "Success": true
}

8.失敗返回報文(示例)

{
"LogisticCode": "295734066970",
"ShipperCode": "YTO",
"Traces": [],
"State": "0",
"EBusinessID": "1264783",
"Reason": "業務錯誤[沒有可用套餐]",
"Success": false
}

說明:未實名認證,未訂購套餐,套餐可用查詢量已經用完 都會返回此報文信息
去實名認證 / 了解套餐詳情

9.無軌跡返回報文(示例)

{
"LogisticCode": "295734066970",
"ShipperCode": "YTO",
"Traces": [],
"State": "0",
"EBusinessID": "1264783",
"Reason": "暫無軌跡信息",
"Success": true
}

 

10.分步講解(C#版本)

10.1,請求數據包結構

在這里插入圖片描述

10.2,C#調用代碼示例

//電商ID
string eEBusinessID = "test1617571";
 //電商加密私鑰,快遞鳥提供,注意保管,不要泄漏
string appKey= "554343b2-7252-439b-b4eb-1af42c8f2175";
 //請求url
string reqURL = "http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json";
//請求指令 
string reqType="1002";
//2-json 
string dataType = "2"; 
//字符編碼采用UTF-8 
string charset = "UTF-8"; 
//JSON字符串string 
string jsonStr = 
"{\"OrderCode\":\"\",\"ShipperCode\":\"SF\",\"LogisticCode\":\"118461988807\"}" ;
//把(jsonStr+APIKey)進行MD5加密
string md5Str=MD5(jsonStr + apiKey, charset);
//把md5Str 進行Base64編碼
string base64Str=base64(md5Str,charset);
//進行URL編碼 (utf-8)
string datasign = HttpUtility.UrlEncode(base64Str, charset); 
//請求報文參數 
string postStr = "RequestType=reqType&EBusinessID= eEBusinessID&RequestData=jsonStr 
&DataSign= datasign&DataType=dataType"; 
//通訊協議使用Http協議Post請求方式 返回軌跡數據
string post = SendPost(reqURL, postStr);
//獲取到的post數據就是快遞鳥返回的完整報文,接下來自己寫一個解析json的方法就能獲取到里面的字段信息。

10.3,C#調用方法

///<summary>
    /// 字符串MD5加密
    ///</summary>
    ///<param name="str">要加密的字符串</param>
    ///<param name="charset">編碼方式</param>
    ///<returns>密文</returns>
    private string MD5(string str, string charset)
    {
        byte[] buffer = System.Text.Encoding.GetEncoding(charset).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");
                else
                    ret += a.ToString("X");
            }
            return ret.ToLower();
        }
        catch
        {
            throw;
        }
    }
    /// <summary>
    /// base64編碼
    /// </summary>
    /// <param name="str">內容</param>
    /// <param name="charset">編碼方式</param>
    /// <returns></returns>
    private string base64(String str, String charset)
    {
        return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
}
 /// <summary>
    /// Post方式提交數據,返回網頁的源代碼
    /// </summary>
    /// <param name="url">發送請求的 URL</param>
    /// <param name="postData">請求報文參數</param>
    /// <returns>遠程資源的響應結果</returns>
    private string SendPost(string url, string postData)
    {
        string result = "";
        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.UserAgent = "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.Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream backStream = response.GetResponseStream();
            StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
            result = sr.ReadToEnd();
            sr.Close();
            backStream.Close();
            response.Close();
            request.Abort();
        }
        catch (Exception ex)
        {
            result = ex.ToString();
        }
        return result;
    }

 

11.圓通快遞查詢接口應用效果

 

 

 

 

12.關於簽名

快遞鳥和第三方電子商務公司系統進行對接,有一定的安全機制。采用 IP 認證加簽名
的方式對接,具體方案如下:

防止數據被篡改 
在 POST 請求中會傳遞 5 個必須(R)參數 
RequestData==數據內容(URL 編碼:UTF-8) 
EBusinessID==用戶 ID 
RequestType=請求指令類型 
DataSign== 數據內容簽名:把(請求內容(未編碼)+ApiKey)進行 MD5 加密,然后 Base64 
編碼,最后進行 URL(utf-8)編碼 
DataType==2(返回數據類型為 json) 
注:
DataSign 生成后,對方接收到數據后,以同樣的算法進行簽名(推送接口 RequestType 為 
101/102 不需要進行 URL 編碼),生成摘要,對比兩者的摘要是否相同,如果不同,說明傳遞過程中發生數據篡改。 
調用接口的身份認證 
注冊成為快遞鳥用戶后,會生成對應的用戶 ID 和 APIKey,用戶 ID 相當於用戶名, 
APIKey 相當於密碼。 

13.返回碼定義

編碼 說明
100 成功
101 缺少必要參數
102 校驗問題
103 格式問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM