Baishi express bill No. query interface API

Time:2020-4-14

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

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

The following is the screenshot of the product application and the track information obtained by calling the express bird interface:
Baishi express bill No. query interface API
In fact, the message information returned by the express bird will be more detailed. The information displayed to the customer can be packaged according to the product needs.

Now let’s talk about the implementation!

First of all, we are ready to use the resources,

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 will take C development as an example to explain
Next, let’s talk about the request parameters

Request system level parameter description:
Baishi express bill No. query interface API

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:
Baishi express bill No. query interface API
The interface parameters, also called business parameters, vary with the requested business interface and the fields and contents of the parameters. They vary 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 Baishi express is htky

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

http://www.kdniao.com/documents

As shown in the screenshot above, the code of Baishi express is htky, and the logistics order number is 552002203935167

The service parameter message combination is as follows:

{‘OrderCode’:”,’ShipperCode’:’HTKY’,’LogisticCode’:’552002203935167′}

Complete message requested (after URL encoding):

RequestData=%0d%0a++++++++++++%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27HTKY%27%2c%27LogisticCode%27%3a%27552002203935167%27%7d%0d%0a++++++++&EBusinessID=1264783&RequestType=1002&DataSign=ZTFhZTE2MzFhZWNlYjFkZjViZTQ0YjQxNmM2ZGE2ZTI%3d&DataType=2

Uncoded request message:

RequestData=

            {‘OrderCode’:”,’ShipperCode’:’HTKY’,’LogisticCode’:’552002203935167′}

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

Message information returned:
`{

"LogisticCode": "552002203935167",
"ShipperCode": "HTKY",
"Traces": [
    {
        "Acceptstation": "Jinhua City [Dongyang Jiangnan 5 branch - high quality customer], [Jinchen / 15356958520] has collected",
        "AcceptTime": "2020-02-14 17:53:01"
    },
    {
        "Acceptstation": "to Jinhua City [Jinhua Yiwu Shangxi large goods collection point]",
        "AcceptTime": "2020-02-17 18:52:03"
    },
    {
        "Acceptstation": "to Jinhua City [Yiwu transfer center]",
        "AcceptTime": "2020-02-18 18:52:31"
    },
    {
        "Acceptstation": "Jinhua City [Yiwu transfer center], sending to [Changsha transfer center]",
        "AcceptTime": "2020-02-18 18:55:55"
    },
    {
        "Acceptstation": "to Changsha [Changsha transfer center]",
        "AcceptTime": "2020-02-19 19:37:29"
    },
    {
        "Acceptstation": "Changsha City [Changsha transfer center], is sending to [Yuanling County]",
        "AcceptTime": "2020-02-21 01:25:17"
    }
],
"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 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));

    }`

Recommended Today

Ffmpeg plays RTSP / webcam stream

This article will introduce how ffmpeg plays RTSP / webcam / file streams. The process is as follows: RTSP/Webcam/File > FFmpeg open and decode to BGR/YUV > OpenCV/OpenGL display code:https://github.com/ikuokuo/rt…, sub module RTSP local player Ffmpeg preparation git clone https://github.com/ikuokuo/rtsp-wasm-player.git cd rtsp-wasm-player export MY_ROOT=`pwd` # ffmpeg: https://ffmpeg.org/ git clone –depth 1 -b n4.4 https://git.ffmpeg.org/ffmpeg.git $MY_ROOT/3rdparty/source/ffmpeg […]