API interface for inquiry of express bill number – Postal Express

Time:2020-11-10

Today we talk about how to use the interface provided by express bird to query the logistics track of postal express.

Before explanation, let’s take a look at the actual display effect after the interface is completed

The following is a screenshot of the product application and the track information obtained by calling the express bird interface:
API interface for inquiry of express bill number - Postal Express

In fact, the message information returned by express bird will be more detailed, and the information displayed to customers can be packaged according to product needs.

Now let’s talk about the implementation!

First of all, we have the resources we need,

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

If you have not registered for express bird, or do not know how to obtain API key, you can visit this Tencent video tutorial:

https://v.qq.com/x/page/z3068yfw0fl.html (register to get the express bird API key)

Next, let’s talk about request parameters

Description of request system level parameters:
API interface for inquiry of express bill number - Postal Express

remarks:R-required, o-optional, and the parameter in c-message is optional under certain conditions

The system level parameters mentioned here are equivalent to public parameters. These parameters must be passed to each interface when calling.

Interface parameters:

API interface for inquiry of express bill number - Postal Express

Interface parameters, also known as business parameters, request different business interfaces, parameter fields, content is also different, is with the business change, here we implement the instant query interface, request instruction type: 1002, express bird official website requires that the express company code and logistics order number must be passed, the postal express code is yzpy

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

http://www.kdniao.com/documents

As shown in the track screenshot above, the code of postal express is yzpy, and the logistics order number is 98615458669525

The service parameter message combination is as follows:

{‘OrderCode’:”,’ShipperCode’:’YZPY’,’LogisticCode’:’9861545869525′}

Complete message of request (after URL encoding)

RequestData=%0d%0a++++++++++++%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27YZPY%27%2c%27LogisticCode%27%3a%279861545869525%27%7d%0d%0a++++++++&EBusinessID=1264783&RequestType=1002&DataSign=MjQ2YWZiMTU1Mzc5YmFiMTFkMWYyYjI3YTliMjRkYmU%3d&DataType=2

Uncoded request message:

RequestData={‘OrderCode’:”,’ShipperCode’:’YZPY’,’LogisticCode’:’9861545869525′}

        &EBusinessID=1264783&RequestType=1002&DataSign=MjQ2YWZiMTU1Mzc5YmFiMTFkMWYyYjI3YTliMjRkYmU=&DataType=2

Message information returned:

{
    "LogisticCode": "9861545869525",
    "ShipperCode": "YZPY",
    "Traces": [
        {
            "Acceptstation": "[postal Xianju Package Express Department] has received the item, the bidding agent: Zhou Feng, Tel: 18358689325",
            "AcceptTime": "2020-02-19 16:10:29"
        },
        {
            "Acceptstation": "leave [post Xianju Package Express Department], next stop [Xianju center]",
            "AcceptTime": "2020-02-19 16:10:33"
        },
        {
            "Acceptstation": "arrive at [Zhejiang Xianju County processing center]",
            "AcceptTime": "2020-02-19 16:10:34"
        },
        {
            "Acceptstation": "leave the processing center of Xianju County, Zhejiang Province, and go to the mail processing center of Taizhou Central Bureau",
            "AcceptTime": "2020-02-21 11:13:33"
        }
    ],
    "State": "2",
    "EBusinessID": "1264783",
    "Success": true
}

`C ා key code:

/// <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 web page

    /// </summary>

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

///< param name = “param” > requested parameter set < / 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 mode < / 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 mode < / param >

    /// <returns></returns>

    private string base64(String str, String charset)

    {

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

    }

The detailed interface document is attached to you:

http://www.kdniao.com/documents`

Recommended Today

Detailed steps for installing Perl and Komodo IDE for windows

Perl official website: https://www.perl.org/Perl document: https://perldoc.perl.org/Download address: https://www.perl.org/get.html The installation package of Perl Windows version is divided into activestate Perl and strawberry Perl. For the difference between the two, see: http://www.zzvips.com/article/202134.htm Note: the download speed of activestate Perl is slow. You may need KX to surf the Internet I have uploaded all the versions of […]