China Express Track query interface

Time:2020-4-15

How to use the interface provided by express bird to query the logistics track of Zhongtong express.

Let’s see the actual effect after the interface is completed

The following is the logistics track information obtained by calling the express bird interface, and the displayed interface effect needs to be developed by yourself:
China Express Track query interface

Now let’s implement it concretely!

First, prepare the resources needed,

Test merchant ID:

test1617571

Test API key:

554343b2-7252-439b-b4eb-1af42c8f2175 (this key is only used in test environment)

API test address:

http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json

I take C development as an example to explain the query interface of China Express

Next, let’s talk about the request parameters

Request system level parameter description:
China Express Track query interface
Remarks:R-required, o-optional, c-optional under certain conditions

System level parameters are mentioned here, which are also common parameters. These parameters must be passed when every interface is called.

Interface parameters:
China Express Track query interface

The interface parameters, also called business parameters, vary with the requested business interface and the fields and contents of the parameters. They change with the business. Here we implement the real-time query interface. The request instruction type is 1002. The express company code and logistics number must be delivered on the official website of express bird. The code of China Express is ZTO

To view the codes of other express companies, click this link:

http://www.kdniao.com/documents

As shown in the screenshot of the track in front of me, it is a track data of Zhongtong. The code of Zhongtong express is ZTO, and the logistics No. is 78120038107849

The service parameter message combination is as follows:

{‘OrderCode’:”,’ShipperCode’:’ZTO’,’LogisticCode’:’78120038107849′}

Complete message requested:

RequestData=%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27ZTO%27%2c%27LogisticCode%27%3a%2778120038107849%27%7d&EBusinessID=1617571&RequestType=1002&DataSign=YzBmYTViYmExZmFhOGY1ZTY3MWY5OGFjYWRhNWVjNjU%3d&DataType=2

Message information returned:

`{

"LogisticCode": "78120038107849",
"ShipperCode": "ZTO",
"Traces": [
    {
        "Acceptstation": "Zhang Xia (18839032214) of [Jiyuan City], [Jiyuan City], (0391-6965909) has been collected",
        "AcceptTime": "2020-01-16 18:30:33"
    },
    {
        "Acceptstation": "[Jiyuan City] express left [Jiyuan] and sent to [Shenzhen Center]",
        "AcceptTime": "2020-01-16 18:36:41"
    },
    {
        "Acceptstation": "[Xinxiang City] Express has reached [Xinxiang transit]",
        "AcceptTime": "2020-01-16 22:45:49"
    },
    {
        "Acceptstation": "[Xinxiang City] Express has left [Xinxiang transit] and sent to [Shenzhen Center]",
        "AcceptTime": "2020-01-16 22:47:48"
    },
    {
        "Acceptstation": "[Shenzhen City] Express has reached [Shenzhen Center]",
        "AcceptTime": "2020-01-18 04:05:46"
    },
    {
        "Acceptstation": "[Shenzhen City] Express has left [Shenzhen Center] and sent to [Shenzhen Longhua]",
        "AcceptTime": "2020-01-18 08:34:46"
    },
    {
        "Acceptstation": "[Shenzhen City] Express has reached [Shenzhen Longhua]",
        "AcceptTime": "2020-01-18 13:14:10"
    },
    {
        "AcceptStation": "Chen Zhilong Wang Ying (13923773902) of [Shenzhen city] and [Shenzhen Longhua] is sending the goods for the first time. Please keep the phone unblocked and wait patiently (95720 is the exclusive number for outbound calls of China express, please feel free to answer)",
        "AcceptTime": "2020-01-18 16:38:35"
    },
    {
        "Acceptstation": "[Shenzhen City] Express has been signed by [Fengchao's Xinmao Garden Zone A (Fengchao intelligent express cabinet)]. If you have any questions, please contact (13923773902 / 40006333318025858922), thank you for using Zhongtong express, and look forward to serving you again!",
        "AcceptTime": "2020-01-18 17:32:15"
    }
],
"State": "3",
"EBusinessID": "1617571",
"Success": true

}`

C ා key code:

`  string requestData = “{‘OrderCode’:”,’ShipperCode’:’ZTO’,’LogisticCode’:’78120038107849′}”;

  string dataSign = encrypt(requestData, “554343b2-7252-439b-b4eb-1af42c8f2175”, “UTF-8”);

/// <summary>

///Real time query of logistics track

    /// </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 = sendPost(url, param);

        return result;

    }

    /// <summary>

///Submit data in post mode and return the source code of the web page

    /// </summary>

///< param name = “URL” > the URL to send the request < / param >

///< param name = “param” > parameter set requested < / param >

///< returns > response results of remote resources < / returns >

    private string sendPost(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.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.Message;

        }

        return result;

    }

///<summary>

///Signature of e-commerce sign

    ///</summary>

///< param name = “content” > content < / param >

    ///<param name=”keyValue”>Appkey</param>

///< param name = “charset” > URL encoding < / param >

///< returns > datasign signature < / returns >

    private string encrypt(String content, String keyValue, String charset)

    {

        if (keyValue != null)

        {

            return base64(MD5(content + keyValue, charset), charset);

        }

        return base64(MD5(content, charset), charset);

    }

    ///<summary>

///String MD5 encryption

    ///</summary>

///< param name = “STR” > string to encrypt < / param >

///< param name = “charset” > encoding method < / param >

///< returns > ciphertext < / 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 encoding

    /// </summary>

///< param name = “STR” > content < / param >

///< param name = “charset” > encoding method < / param >

    /// <returns></returns>

    private string base64(String str, String charset)

    {

        return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));

    }

`

Attach detailed interface documents to you:

http://www.kdniao.com/documents

Recommended Today

JS function

1. Ordinary function Grammar: Function function name (){ Statement block } 2. Functions with parameters Grammar: Function function name (parameter list){ Statement block } 3. Function with return value Grammar: Function function name (parameter list){ Statement block; Return value; } Allow a variable to accept the return value after calling the function Var variable name […]