前言

看完快递鸟api众邮快递对接教程这篇文章,然后把源码复制到你的项目上,就能快速完成众邮快递接口对接.到达众邮快递官网界面显示的效果,更适合刚入门的菜鸟,调用快递鸟的众邮快递查询API接口,能查询到众邮快递单号从收件、运输,到转运中心,派送到签收等各个环节的物流发货状态。快递鸟api接口不区分开发语言,支持Java,C#,PHP,Python,ObjectC等开发语言的程序调用。众邮快递编码是ZYE,下面具体讲解实现过程.

     

目录

1.完成前期准备工作

2.API接口

3.请求参数(Headers)

4.请求参数(Body)

5.返回参数(Return)

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

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

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

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

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

11.顺丰快递查询接口应用效果

12.关于签名

13.返回码定义

1.完成前期准备工作

1.1,去快递鸟官网免费注册一个账号

1.2,免费获得一个apiKey(接口权限验证需要)

1.3,完成实名认证流程

1.4,订购一个免费套餐

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

2.7,调试工具:去调试(使用快递鸟账号登录)

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 快递公司编码,极兔速递:JTSD 必填
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=MTYyMDU4NWQ2NmU1ZDI2MDEzNGE5YmVlM2YxYzEzMTM%3d&DataType=2

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

{
"LogisticCode": "ZY000005260000488",
"ShipperCode": "ZYE",
"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": “zy0000052600488",
"ShipperCode": "ZYE",
"Traces": [],
"State": "0",
"EBusinessID": "1264783",
"Reason": "业务错误[没有可用套餐]",
"Success": false
}

说明:未实名认证,未订购套餐,套餐可用查询量已经用完 都会返回此报文信息
去实名认证 / 了解套餐详情

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

{
"LogisticCode": “ZY0000052600488",
"ShipperCode": “ZYE",
"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; .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.ToString();}return result;}

11.极兔快递查询接口应用效果

完成可以达到众邮快递官网的显示效果。

12.关于签名

快递鸟和第三方电子商务公司系统进行对接,有一定的安全机制。采用 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 相当于密码。

13.返回码定义

编码 说明
100 成功
101 缺少必要参数
102 校验问题
103 格式问题

众邮快递单号查询快递鸟API接口-众邮快递ZYE相关推荐

  1. Python实现圆通快递单号查询官方接口教程

    此系列为代码语言与各大常用快递公司的接口教程,供各位程序员学习参考,后续我将会继续分享各语言的快递单号查询接口教程,敬请关注. 下面我们来说下具体操作过程,如何用Python实现圆通快递单号查询. 一 ...

  2. 输入快递单号查询不到物流怎么办

    在查询快递物流的时候,我们可能会遇到这样或者那样的问题,比如输入快递单号却查不到物流,对于这种情况,该怎么办呢?下面随小编一起来学习一下. 一般情况下,查不到物流有这几种情况: 单号或者快递公司错误, ...

  3. 快速免费对接快递鸟圆通快递单号查询api接口

    快递查询API接口是使用的物流单号即可实现查询物流信息.主要应用在电商商城.ERP系统商.WMS系统商.快递柜.银行等企业.多家快递物流公司接口统一接入,建议对接接口提供商,一次性可以接入多家快递,在 ...

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

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

  5. 邮政国内标快 快递单号查询 快递鸟API接口

    调用快递鸟提供的快递查询API标准接口,快速对接100多家快递公司的物流轨迹查询,本篇文章实现<邮政国内标快>的快递单号查询. 首先我们准备好需要用到的资源, 测试商户ID: test16 ...

  6. 快递接口API:用JS调用快递鸟API接口进行快递单号查询

    本文实例为大家分享了JS调用快递鸟API接口,来实现600多家的物流轨迹查询,完成快递单号查询的具体代码,供大家参考,具体内容如下 只需要一步,新建一个Text文本,把下面这段代码复制进去,替换你自己 ...

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

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

  8. 顺丰快递单号查询API接口调试demo-快递鸟API接口

    快递鸟快递单号查询API接口,供小程序.APP.需实时返回物流轨迹信息即查即走,快递查询将提供输入运单编号立即获取物流最新轨迹,无需快递编码,自动识别物流公司,返回物流轨迹. 一.功能说明 实时查询: ...

  9. EMS | 快递单号查询API

    电商平台及ISV商家对物流api接口的需求有很多,最常见的场景就是电商网站用户打开"我的订单"时调用此API显示物流信息详情,电商管理后台的物流系统,客服在对账前查询所有运单的签收 ...

  10. 国内主流物流公司常用快递单号查询API接口全攻略

    此接口支持***顺丰.EMS.申通.圆通.韵达.汇通.中通.天天.德邦.极兔.京东.全峰***等主流快递公司 目的 便于用户理解快递单号查询接口作用并正确应用到实际场景. 接口作用 轨迹类接口包含:即 ...

最新文章

  1. 单机训练速度提升高达640倍,快手开发GPU广告模型训练平台
  2. trackback (引用通告) 说明
  3. Excel找出两列相同部分
  4. 玩转Numpy——np.ravel()的使用
  5. C:简单的学生信息处理程序实现
  6. Anaconda套件,精簡版miniconda
  7. linux相关函数,linux学习-信号相关函数
  8. 胶囊网络架构_了解胶囊网络-AI的诱人新架构
  9. java类无法调用值,Kotlin无法调用到Java中定义的interface类的问题记录
  10. 网络篇-NSURLSession介绍
  11. 深度学习里面的正态分布
  12. java中static关键字的作用_C++ static关键字到底有什么作用
  13. Container的限制
  14. linux内核分析及应用 -- 输入输出(下)
  15. Cad二次开发版本集合2000-2022
  16. CAD迷你看图软件中怎么进行实时缩放建筑图纸的大小?
  17. 彼得林奇:全球理财师中的NO.1
  18. Windows现漏洞 可绕过AppLocker白名单实施攻击
  19. php实现同步异步,同步、异步
  20. 【MVC-自定义过滤器】

热门文章

  1. 【实战】AI 怎么打麻将?
  2. Python输出一百以内的质数(素数)
  3. 语音怎么翻译成文字的?
  4. Unity 2D游戏开发案例学习——Robble Swifthand(下)
  5. 暑假清凉套餐小说+漫画
  6. USRP N310,Gnuradio初探
  7. 相关子查询(如何理解相关子查询与父查询间存在的 循环)
  8. TCGA_临床数据下载_全面数据
  9. Y combinator初创加速器2020冬季团队大赏——最好与最坏的时代
  10. 中小型企业 CRM 系统有哪些好的推荐?