1, 应用场景
(1)PC 端, 移动端应用或网站应用集成运单物流信息查询功能时, 只需要录入单号即可完成查询, 无需用户输入快递公司.
(2) 电商网站要在快递鸟查询或者订阅运单时, 可通过单号识别先行判断物流公司后, 再订阅到快递鸟.
2, 是否需要授权
要 Free 申请服务
3, 接口描述 / 说明
API ID: 点击申请 http://www.kdniao.com/reg
API Key: 快递鸟
示例
(1) 请求示例
JSON 格式
(1) 该接口仅对运单号做出识别, 识别可能属于的一家或多家快递公司.
(2) 接口并不返回物流轨迹, 用户可结合即时查询接口和订阅查询接口完成轨迹查询, 订阅的动作.
(3) 接口识别会返回一家或者多家快递公司, 返回的数据根据快递鸟大数据分析结果排序, 排名靠前的命中率更高.
(4) 若识别失败, 快递鸟返回的匹配结果为空.
(5) 接口支持的消息接收方式为 HTTP POST, 请求方法的编码格式 (utf-8):"application/x-www-form-urlencoded;charset=utf-8".
(6) 请求系统级参数说明:
备注: R - 必填 (Required),O - 可选 (Optional),C - 报文中该参数在一定条件下可选 (Conditional).
(7) 接口地址:
请求示例:
- show sourceview source
- print?
- 1 {
- 2 "LogisticCode": "3967950525457"
- 3
- }
(2) 返回示例
JSON 格式
- show source
- 01 {
- 02 "EBusinessID": "1257021",
- 03 "Success": true,
- 04 "LogisticCode": "3967950525457",
- 05 "Shippers": [
- 06 {
- 07 "ShipperCode": "YD",
- 08 "ShipperName": "韵达快递"
- 09 }
- ]
- }
返回示例:
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.NET;
- using System.Text;
- using System.web;
- namespace KdGoldAPI
- {
- public class KdApiOrderDistinguish
- {
- // 电商 ID
- private string EBusinessID = "请到快递鸟官网申请 http://www.kdniao.com/ServiceApply.aspx";
- // 电商加密私钥, 快递鸟提供, 注意保管, 不要泄漏
- private string AppKey = "请到快递鸟官网申请 http://www.kdniao.com/ServiceApply.aspx";
- // 请求 url
- // 测试环境
- private string ReqURL = "http://testapi.kdniao.cc:8081/Ebusiness/EbusinessOrderHandle.aspx";
- // 正式环境
- //private string ReqURL = "http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";
- /// <summary>
- /// JSON 方式 单号识别
- /// </summary>
- /// <returns></returns>
- public string orderTracesSubByJson()
- {
- string requestData = "{'LogisticCode':'3967950525457'}";
- Dictionary<string, string> param = new Dictionary<string, string>();
- param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
- param.Add("EBusinessID", EBusinessID);
- param.Add("RequestType", "2002");
- string dataSign = encrypt(requestData, AppKey, "UTF-8");
- param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
- param.Add("DataType", "2");
- string result = sendPost(ReqURL, param);
- // 根据公司业务处理返回的信息......
- return result;
- }
- /// <summary>
- /// Post 方式提交数据, 返回网页的源代码
- /// </summary>
- /// <param name="url"> 发送请求的 URL</param>
- /// <param name="param"> 请求的参数集合 </param>
- /// <returns > 远程资源的响应结果 </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);
- }
- }
- 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>
- /// 电商 Sign 签名
- ///</summary>
- ///<param name="content"> 内容 </param>
- ///<param name="keyValue">Appkey</param>
- ///<param name="charset">URL 编码 </param>
- ///<returns>DataSign 签名 </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>
- /// 字符串 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));
- }
- }
- }
来源: http://www.bubuko.com/infodetail-3190580.html