本期讲解:极兔快递查询快递单号的方法。

纯干货,强烈建议收藏/转发给技术人员和管理人员学习。

提供源码,复制到你的项目上,就能快速完成快递鸟的极兔快递查询API接口。

下面具体讲解实现过程:

1.完成前期准备工作

1.1,注册快递鸟账号

1.2,apiKey(接口权限验证需要)

1.3,完成实名认证

2.API接口

2.1,测试调用地址:http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json

2.2,正式调用地址:http://api.kdniao.com/api/dist

2.3,请求方式:POST

2.4,编码格式(utf-8):application/x-www-form-urlencoded;charset=utf-8

2.5,返回类型:JSON

2.6,调试页面:http://kdniao.com/UserCenter/v2/SandBox/TrackQuery.aspx

3.请求参数(Headers)

参数名称

类型

说明

必须要求

RequestData

String

请求内容需进行URL(utf-8)编码,请求内容JSON格式,须和DataType一致

必填

EBusinessID

String

用户ID,查看用户ID和ApiKey

必填

RequestType

String

请求指令类型:1002

必填

DataSign

String

签名数据,(Body+ApiKey)进行MD5加密,再进行Base64编码,最后进行URL(utf-8)编码

必填

DataType

String

求、返回数据类型:2-json ,默认Json

选填

4.请求参数(Body)

参数名称

类型

说明

必须要求

OrderCode

String

订单编号

选填

ShipperCode

String

快递公司编码,中通:ZTO

必填

LogisticCode

String

物流运单号

必填

5.返回参数(Return)

参数名称

类型

说明

必须要求

EBusinessID

String

用户ID

必填

ShipperCode

String

快递公司编码

必填

LogisticCode

String

物流运单号

选填

Success

String

成功与否

必填

Reason

String

失败原因

选填

State

String

物流状态:2-在途中,3-签收,4-问题件

必填

Traces

String

时间

AcceptTime

String

必填

AcceptStation

String

描述

选填

Remark

String

备注

必填

6.请求完整报文(示例)

RequestData=%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27JTSD%27%2c%27LogisticCode%27%3a%27jt0000052600488%27%7d&EBusinessID=1264783
&RequestType=1002&DataSign=MTYyMDU4NWQ2NmU1ZDI2MDEzNGE5YmV
lM2YxYzEzMTM%3d&DataType=2

7.成功返回报文(示例)

{"LogisticCode": "JT0000052600488","ShipperCode": "JTSD","Traces": [{"AcceptStation": "【芜湖市】【芜湖镜湖网点】的邓拥军 17855364213已取件","AcceptTime": "2020-03-16 16:26:13"},{"AcceptStation": "【芜湖市】【芜湖镜湖网点】的邓拥军 17855364213已取件","AcceptTime": "2020-03-16 16:41:33"},{"AcceptStation": "【芜湖市】【芜湖镜湖网点】已收件","AcceptTime": "2020-03-16 17:39:21"},{"AcceptStation": "【芜湖市】快件离开【芜湖镜湖网点】已发往【芜湖转运中心】","AcceptTime": "2020-03-16 17:40:27"},{"AcceptStation": "【芜湖市】快件到达【芜湖转运中心】","AcceptTime": "2020-03-16 19:36:32"},{"AcceptStation": "【芜湖市】快件离开【芜湖转运中心】已发往【合肥转运中心】","AcceptTime": "2020-03-16 20:47:03"},{"AcceptStation": "【合肥市】快件到达【合肥转运中心】","AcceptTime": "2020-03-16 23:40:10"},{"AcceptStation": "【合肥市】快件离开【合肥转运中心】已发往【广州花都转运中心】","AcceptTime": "2020-03-17 00:10:48"},{"AcceptStation": "【广州市】快件到达【广州花都转运中心】","AcceptTime": "2020-03-17 20:45:00"},{"AcceptStation": "【广州市】快件离开【广州花都转运中心】已发往【深圳宝安转运中心】","AcceptTime": "2020-03-18 00:17:55"},{"AcceptStation": "【深圳市】快件到达【深圳宝安转运中心】","AcceptTime": "2020-03-18 03:00:17"},{"AcceptStation": "【深圳市】快件离开【深圳宝安转运中心】已发往【深圳福田网点】","AcceptTime": "2020-03-18 04:44:39"},{"AcceptStation": "【深圳市】【深圳福田网点】的邹俊林 17679495647正在派件","AcceptTime": "2020-03-18 08:10:09"},{"AcceptStation": "【深圳市】【深圳福田网点】的赵凯 15919817730正在派件","AcceptTime": "2020-03-18 09:55:19"},{"AcceptStation": "【深圳市】快件已签收,签收人是【代收】,如有疑问请联系:15919817730,期待再次为您服务","AcceptTime": "2020-03-18 14:53:54"}],"State": "3","EBusinessID": "1264783","Success": true}

8.失败返回报文(示例)

{"LogisticCode": "JT0000052600488","ShipperCode": "JTSD","Traces": [],"State": "0","EBusinessID": "1264783","Reason": "业务错误[没有可用套餐]","Success": false
}

9.无轨迹返回报文(示例)

{"LogisticCode": "JT0000052600488","ShipperCode": "JTSD","Traces": [],"State": "0","EBusinessID": "1264783","Reason": "暂无轨迹信息","Success": true
}

10.分步讲解(C#版本)

10.1,请求数据包结构

10.2,C#调用代码示例

//电商ID
string eEBusinessID = "test1617571";//电商加密私钥,快递鸟提供,注意保管,不要泄漏
string appKey= "554343b2-7252-439b-b4eb-1af42c8f2175";//请求url
string reqURL = "http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json";
//请求指令
string reqType="1002";
//2-json
string dataType = "2";
//字符编码采用UTF-8
string charset = "UTF-8";
//JSON字符串string
string jsonStr =
"{\"OrderCode\":\"\",\"ShipperCode\":\"JTSD\",\"LogisticCode\":\"JT0000052600488\"}" ;
//把(jsonStr+APIKey)进行MD5加密
string md5Str=MD5(jsonStr + apiKey, charset);
//把md5Str 进行Base64编码
string base64Str=base64(md5Str,charset);
//进行URL编码 (utf-8)
string datasign = HttpUtility.UrlEncode(base64Str, charset);
//请求报文参数
string postStr = "RequestType=reqType&EBusinessID= eEBusinessID&RequestData=jsonStr
&DataSign= datasign&DataType=dataType";
//通讯协议使用Http协议Post请求方式 返回轨迹数据
string post = SendPost(reqURL, postStr);
//获取到的post数据就是快递鸟返回的完整报文,接下来自己写一个解析json的方法就能获取到里面的字段信息。

10.3,C#调用方法

///<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");elseret += 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));}/// <summary>/// Post方式提交数据,返回网页的源代码/// </summary>/// <param name="url">发送请求的 URL</param>/// <param name="postData">请求报文参数</param>/// <returns>远程资源的响应结果</returns>private string SendPost(string url, string postData){string result = "";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; .NETCLR 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.ToString();}return result;}

11.关于签名

快递鸟和第三方电子商务公司系统进行对接,有一定的安全机制。采用 IP 认证加签名 的方式对接,具体方案如下:

防止数据被篡改
在 POST 请求中会传递 5 个必须(R)参数
RequestData==数据内容(URL 编码:UTF-8) EBusinessID==用户 ID
RequestType=请求指令类型
DataSign== 数据内容签名:把(请求内容(未编码)+ApiKey)进行 MD5 加密,然后 Base64
编码,最后进行 URL(utf-8)编码
DataType==2(返回数据类型为 json) 注:
DataSign 生成后,对方接收到数据后,以同样的算法进行签名(推送接口 RequestType 为
101/102 不需要进行 URL 编码),生成摘要,对比两者的摘要是否相同,如果不同,说明传递过程中发生
数据篡改。
调用接口的身份认证
注册成为快递鸟用户后,会生成对应的用户 ID 和 APIKey,用户 ID 相当于用户名,
APIKey 相当于密码。

12.返回码定义

编码

说明

100

成功

101

缺少必要参数

102

校验问题

103

格式问题

更多快递接口api技术干货、物流行业知识,关注我们的公众号【快递鸟API】(kuaidiniaoapi)。如果你觉得以上内容对你有用,欢迎点赞、评论、转发。你的认可是我持续分享的动力!

有不清楚的问题,欢迎大家留言一起探讨。

极兔快递 | 快递单号查询API相关推荐

  1. php快递鸟单号查询api接口免费对接调用

    快递鸟集成快递单号查询API接口,可以同时对接顺丰快递查询,中通.申通.圆通.韵达.百世.EMS等国内外418家物流快递公司接口查询等.这些快递物流企业,提供了快递单号自动识别接口,快递单号查询接口等 ...

  2. 免费对接快递数据物流信息接口【快递鸟单号查询API】

    近年来,我国电商产业的迅猛发展也推动着物流行业需求的增加,其中电商平台根据快递单号查询物流信息数据的需求就是基本需求,用户下单后商家把货物有没有及时的按要求发出去,就需要通过物流轨迹的揽件状态来判断, ...

  3. 极兔快递单号查询API

    极兔快递单号查询API 1) 请求地址 https://official.jtexpress.com.cn/official/waybill/trackingCustomerByWaybillNo/v ...

  4. 顺丰快递单号查询API接口调试demo【快递100API接口】

    顺丰目前提供了两种对接方式: 一种是开发者自助对接,需要注册丰桥账户后,申请成为开发者,再根据顺丰要求对接,整个流程较为繁琐: 还有一种方式就是通过第三方快递单号查询API接口服务商对接(例如快递10 ...

  5. 常用物流快递单号查询API接口对接net源码示例_快递鸟

    零售电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用户打开&quo ...

  6. 快递单号查询API接口对接net源码示例_快递鸟

    零售电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用户打开&quo ...

  7. 快递鸟单号查询接口电子面单API接入流程(全)

        电商平台和小程序都有物流模块,需要查询物流轨迹状态,一家家去对接顺丰.申通.中通.圆通.韵达.百世.邮政.EMS.京东.天天.德邦.安能等快递单号查询接口和电子面单API接口,是非常麻烦的,快 ...

  8. 第三方快递鸟免费物流轨迹单号查询api接口对接案例

     电商平台和小程序都有物流模块,需要查询物流轨迹状态,一家家去对接顺丰.申通.中通.圆通.韵达.百世.邮政.EMS.京东.天天.德邦.安能等快递单号查询接口和电子面单API接口,是非常麻烦的,快递鸟集 ...

  9. 免费快递单号查询api接口对接调用(PHP示例)

    快递鸟集成快递单号查询API接口,可以同时对接顺丰快递查询,中通.申通.圆通.韵达.百世.EMS等国内外418家物流快递公司接口查询等.这些快递物流企业,提供了快递单号自动识别接口,快递单号查询接口等 ...

  10. 快递单号查询API接口对接Java源码示例_快递鸟

    零售电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用户打开&quo ...

最新文章

  1. 蓝桥杯 兰顿蚂蚁(模拟)
  2. Apache的性能优化
  3. SpeedTree导入到虚幻UE4的注意事项
  4. linux class device
  5. 蓝桥杯-未名湖边的烦恼(java)
  6. PHP 设计模式 笔记与总结(8)策略模式
  7. 用户的购物历史都有用吗?看作者如何运用对比学习来筛选相关项
  8. Python中的getpass模块
  9. 【连载】如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(4)
  10. bzoj3130 [SDOI2013]费用流 结论+二分答案+网络流检验
  11. Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)
  12. queue初始化java,如何在java中实例化一个Queue对象?
  13. LeetCode34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
  14. 自动化运维python学习笔记一
  15. css设置div垂直居中
  16. SerDes知识详解
  17. 云服务器win系统入站规则,云服务器win系统入站规则
  18. 解决 Flutter 在 iOS 模拟器中运行卡住问题
  19. hdu1540 Tunnel Warfare
  20. vivo换手机云服务器,换机数据转移不用愁,vivo云服务竞是这么用的!

热门文章

  1. 数据库系统实验设计P63页例题及解析
  2. 计算机普通用户禁止修改c盘,win10系统禁止Guest账户访问C盘的设置技巧
  3. hmm 流程图_算法:HMM模型+维特比算法详解
  4. 英国发现巨型失落海底世界:曾生活数万居民
  5. 老板必看:1.初创业团队没有激情,咋办? 2.小股东的选择
  6. [教程] 写号+上3G成功,附个人经验补充,写号看此一贴即可,二楼附上radio恢复方法和recovery (来源于http://www.in189.com/thread-94957-1-1.htm)
  7. Objective-C——initialize方法调用原理分析
  8. 数据字典动态生成下拉框
  9. 【Vue知识点- No5.】生命周期、axios、购物车案例
  10. 二十余岁时的社会观(一)