大家好,圆通快递查询单号查询丫t40相信很多的网友都不是很明白,包括圆通快递查询单号yt21-0286-0202-711也是一样,不过没有关系,接下来就来为大家分享关于圆通快递查询单号查询丫t40和圆通快递查询单号yt21-0286-0202-711的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
今天我们来聊如何利用快递鸟提供的接口来查询圆通快递的物流轨迹。
讲解之前我们来看一下,接口完成以后的实际显示效果
以下是我调用快递鸟接口获得的中通物流轨迹信息,显示的界面效果需要自己开发:
现在我们来聊一聊具体实现!
首先我们准备好需要用到的资源,
测试商户ID:
test1617571
测试APIkey:
554343b2-7252-439b-b4eb-1af42c8f2175(此Key仅限测试环境使用)
API测试地址:
http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json
我以C#开发为例来讲解,
如果还没有注册快递鸟,或者还不知道如何获取APIKey,可以访问这个腾讯视频教程:
https://v.qq.com/x/page/z3068yfw0fl.html(注册登陆获取快递鸟APIKey)
接下来,我们讲解一下请求参数
请求系统级参数说明:
备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)
这里提到了系统级参数,也相当于是公用参数,这些参数是调用每个接口都是必须要传参的。
接口参数:
接口参数,也叫业务参数,请求的业务接口不同,参数的字段,内容也不同,是跟着业务变化的,这里我们实现的是即时查询接口,请求指令类型:1002,快递鸟官网要求必须传递快递公司编码和物流单号,圆通快递的编码是YTO
如要查看其他快递公司的编码,点击此链接:
http://www.kdniao.com/documents
正如我前面的轨迹截图,圆通快递的编码是YTO,物流单号是78120038107849
业务参数报文组合如下:
{'OrderCode':'','ShipperCode':'YTO','LogisticCode':'YT4313813113511'}
请求的完整报文(URL编码以后):
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
未编码的请求报文:
RequestData={'OrderCode':'','ShipperCode':'YTO','LogisticCode':'YT4313813113511'}
&EBusinessID=1617571&RequestType=1002&DataSign=YjUxYzNlYTBiMjYwYjIzZjE4ZGQ4ZjgyYjJhNGRiZjQ=&DataType=2
返回的报文信息:
{
"LogisticCode":"YT4313813113511",
"ShipperCode":"YTO",
"Traces":[{
"AcceptStation":"【山东省青岛市胶州市公司】已收件取件人:张富强(18521137295)",
"AcceptTime":"2019-12-2918:15:41"
},{
"AcceptStation":"【山东省青岛市胶州市公司】已打包",
"AcceptTime":"2019-12-2918:41:22"
},{
"AcceptStation":"【山东省青岛市胶州市】已发出下一站【青岛转运中心公司】",
"AcceptTime":"2019-12-2918:44:43"
},{
"AcceptStation":"【青岛转运中心公司】已收入",
"AcceptTime":"2019-12-2919:40:51"
},{
"AcceptStation":"【青岛转运中心】已发出下一站【深圳转运中心公司】",
"AcceptTime":"2019-12-2920:10:01"
},{
"AcceptStation":"【深圳转运中心公司】已收入",
"AcceptTime":"2019-12-3113:39:41"
},{
"AcceptStation":"【深圳转运中心】已发出下一站【广东省深圳市宝安区机场公司】",
"AcceptTime":"2019-12-3114:04:58"
},{
"AcceptStation":"【广东省深圳市宝安区机场公司】已收入",
"AcceptTime":"2020-01-0101:43:02"
},{
"AcceptStation":"【广东省深圳市宝安区机场公司】派件中派件人:罗家宁电话13924819329如有疑问,请联系:0755-27393821",
"AcceptTime":"2020-01-0109:36:26"
},{
"AcceptStation":"客户签收人:B5超人已签收感谢使用圆通速递,期待再次为您服务如有疑问请联系:13924819329,投诉电话:0755-27393821",
"AcceptTime":"2020-01-0212:52:32"
}],
"State":"3",
"EBusinessID":"1617571",
"Success":true
}{
"OrderCode":"012657018199",
"ShipperCode":"STO",
"PayType":1,
"MonthCode":"1234567890",
"ExpType":1,
"Sender":{
"Company":"LV",
"Name":"Taylor",
"Mobile":"15018442396",
"ProvinceName":"上海",
"CityName":"上海市",
"ExpAreaName":"青浦区",
"Address":"明珠路"
},
"Receiver":{
"Company":"GCCUI",
"Name":"Yann",
"Mobile":"15018442396",
"ProvinceName":"北京",
"CityName":"北京市",
"ExpAreaName":"朝阳区",
"Address":"三里屯街道"
},
"Commodity":[{
"GoodsName":"鞋子",
"Goodsquantity":1,
"GoodsWeight":1
}],
"Weight":1,
"Quantity":1,
"Volume":0,
"Remark":"小心轻放"
}
C#关键代码:
///<summary>
///即时查询物流轨迹
///</summary>
///<paramname="url">http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json</param>
///<paramname="eBusinessID">test1617571</param>
///<paramname="appKey">554343b2-7252-439b-b4eb-1af42c8f2175</param>
///<paramname="requestData">{'OrderCode':'','ShipperCode':'ZTO','LogisticCode':'78120038107849'}</param>
///<returns></returns>
publicstringgetOrderTracesByJson(stringurl,stringeBusinessID,stringappKey,stringrequestData)
{
Dictionary<string,string>param=newDictionary<string,string>();
param.Add("RequestData",HttpUtility.UrlEncode(requestData,Encoding.UTF8));
param.Add("EBusinessID",eBusinessID);
param.Add("RequestType","1002");
stringdataSign=encrypt(requestData,appKey,"UTF-8");
param.Add("DataSign",HttpUtility.UrlEncode(dataSign,Encoding.UTF8));
param.Add("DataType","2");
stringresult=sendPost(url,param);
returnresult;
}
///<summary>
///Post方式提交数据,返回网页的源代码
///</summary>
///<paramname="url">发送请求的URL</param>
///<paramname="param">请求的参数集合</param>
///<returns>远程资源的响应结果</returns>
privatestringsendPost(stringurl,Dictionary<string,string>param)
{
stringresult="";
StringBuilderpostData=newStringBuilder();
if(param!=null&¶m.Count>0)
{
foreach(varpinparam)
{
if(postData.Length>0)
{
postData.Append("&");
}
postData.Append(p.Key);
postData.Append("=");
postData.Append(p.Value);
}
}
//returnpostData.ToString();
byte[]byteData=Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
try
{
HttpWebRequestrequest=(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;MSIE6.0;WindowsNT5.1;SV1;.NETCLR2.0.50727;.NETCLR3.0.04506.648;.NETCLR3.0.4506.2152;.NETCLR3.5.30729)";
request.Method="POST";
request.ContentLength=byteData.Length;
Streamstream=request.GetRequestStream();
stream.Write(byteData,0,byteData.Length);
stream.Flush();
stream.Close();
HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();
StreambackStream=response.GetResponseStream();
StreamReadersr=newStreamReader(backStream,Encoding.GetEncoding("UTF-8"));
result=sr.ReadToEnd();
sr.Close();
backStream.Close();
response.Close();
request.Abort();
}
catch(Exceptionex)
{
result=ex.Message;
}
returnresult;
}
///<summary>
///电商Sign签名
///</summary>
///<paramname="content">内容</param>
///<paramname="keyValue">Appkey</param>
///<paramname="charset">URL编码</param>
///<returns>DataSign签名</returns>
privatestringencrypt(Stringcontent,StringkeyValue,Stringcharset)
{
if(keyValue!=null)
{
returnbase64(MD5(content+keyValue,charset),charset);
}
returnbase64(MD5(content,charset),charset);
}
///<summary>
///字符串MD5加密
///</summary>
///<paramname="str">要加密的字符串</param>
///<paramname="charset">编码方式</param>
///<returns>密文</returns>
privatestringMD5(stringstr,stringcharset)
{
byte[]buffer=System.Text.Encoding.GetEncoding(charset).GetBytes(str);
try
{
System.Security.Cryptography.MD5CryptoServiceProvidercheck;
check=newSystem.Security.Cryptography.MD5CryptoServiceProvider();
byte[]somme=check.ComputeHash(buffer);
stringret="";
foreach(byteainsomme)
{
if(a<16)
ret+="0"+a.ToString("X");
else
ret+=a.ToString("X");
}
returnret.ToLower();
}
catch
{
throw;
}
}
///<summary>
///base64编码
///</summary>
///<paramname="str">内容</param>
///<paramname="charset">编码方式</param>
///<returns></returns>
privatestringbase64(Stringstr,Stringcharset)
{
returnConvert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
}
附上详细的接口文档给大家:
http://www.kdniao.com/documents
文章分享结束,圆通快递查询单号查询丫t40和圆通快递查询单号yt21-0286-0202-711的答案你都知道了吗?欢迎再次光临本站哦!