前言

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

目录

1.完成前期准备工作

2.API接口

3.请求参数(Headers)

4.请求参数(Body)

5.返回参数(Return)

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

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

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

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

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

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

12.关于签名

13.返回码定义

1.完成前期准备工作

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

1.2,免费获得一个apiKey(接口权限验证需要), 获取用户ID和ApiKey

1.3,完成实名认证流程,去认证

1.4,订购一个免费套餐,去订购

2.API接口

2.3,请求方式:POST

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

2.5,返回类型:JSON

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 快递公司编码,中通: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%27ZTO%27%2c%27LogisticCode%27%3a%2778120038107849%27%7d&EBusinessID=1617571&

RequestType=1002&DataSign=YzBmYTViYmExZmFhOGY1ZTY3MWY5OGFjYWRhNWVjNjU%3d&DataType=2

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

{

"LogisticCode": "78120038107849",

"ShipperCode": "ZTO",

"Traces": [{

"AcceptStation": "【济源市】 【济源】(0391-6965909) 的 张霞(18839032214) 已揽收",

"AcceptTime": "2020-01-16 18:30:33"

}, {

"AcceptStation": "【济源市】 快件离开 【济源】 已发往 【深圳中心】",

"AcceptTime": "2020-01-16 18:36:41"

}, {

"AcceptStation": "【新乡市】 快件已经到达 【新乡中转】",

"AcceptTime": "2020-01-16 22:45:49"

}, {

"AcceptStation": "【新乡市】 快件离开 【新乡中转】 已发往 【深圳中心】",

"AcceptTime": "2020-01-16 22:47:48"

}, {

"AcceptStation": "【深圳市】 快件已经到达 【深圳中心】",

"AcceptTime": "2020-01-18 04:05:46"

}, {

"AcceptStation": "【深圳市】 快件离开 【深圳中心】 已发往 【深圳龙华】",

"AcceptTime": "2020-01-18 08:34:46"

}, {

"AcceptStation": "【深圳市】 快件已经到达 【深圳龙华】",

"AcceptTime": "2020-01-18 13:14:10"

}, {

"AcceptStation": "【深圳市】 【深圳龙华】 的陈智龙-王颖(13923773902) 正在第1次派件, 请保持电话畅通,并耐心等待(95720为中通快递员外呼专属号码,请放心接听)",

"AcceptTime": "2020-01-18 16:38:35"

}, {

"AcceptStation": "【深圳市】 快件已由【丰巢的鑫茂花园A区(丰巢智能快递柜)】代签收, 如有问题请电联(13923773902 / 4000633333,18025858922), 感谢您使用中通快递, 期待再次为您服务!",

"AcceptTime": "2020-01-18 17:32:15"

}],

"State": "3",

"EBusinessID": "1617571",

"Success": true

}

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

{

"LogisticCode": "295734066970",

"ShipperCode": "ZTO",

"Traces": [],

"State": "0",

"EBusinessID": "1264783",

"Reason": "业务错误[没有可用套餐]",

"Success": false

}

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

去实名认证 / 了解套餐详情

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

{

"LogisticCode": "295734066970",

"ShipperCode": "ZTO",

"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\":\"SF\",\"LogisticCode\":\"118461988807\"}" ;

//把(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#调用方法

///

/// 字符串MD5加密

///

///要加密的字符串

///编码方式

///密文

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;

}

}

///

/// base64编码

///

/// 内容

/// 编码方式

///

private string base64(String str, String charset)

{

return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));

}

///

/// Post方式提交数据,返回网页的源代码

///

/// 发送请求的 URL

/// 请求报文参数

/// 远程资源的响应结果

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 格式问题

python 菜鸟联盟快递查询_快递单号查询接口-物流轨迹信息快递鸟api对接教程相关推荐

  1. 顺丰快递单号查询接口物流路由跟踪信息快递鸟api对接教程

    目录 1.完成前期准备工作 2.API接口 3.请求参数(Headers) 4.请求参数(Body) 5.返回参数(Return) 6.请求完整报文(示例) 7.成功返回报文(示例) 8.失败返回报文 ...

  2. C#快递单号查询接口物流路由信息快递鸟api代码接入.Net

    阅读完本篇内容,你可以利用快递鸟平台做出如下项目(文末有源码地址),当然,如果你觉得看图不过瘾,那就劳驾看官自己体验一下:点我在线体验 注册认证账号 1.进入快递鸟官网,点击右上角免费注册按钮,点我直 ...

  3. 保存快递公司过滤重复单号查询物流

    怎样批量查询单号物流,能识别快递公司名称吗?重复的单号如何自动过滤出去呢?这里教大家一个自动批量查询的方法.一起来看操作步骤吧. 先准备好单号,运行软件,先进入高级设置,选择好查询的接口,风格等等设置 ...

  4. 查询大量FEDEX单号详情,并将信息导出CSV表格

    当你拥有多个国际快递单号时,该如何查询物流呢?今天小编给大家分享一款查询工具--快递批量查询高手,下面就以快速查询FEDEX国际快递单号物流并将信息导出CSV表格为例,一起来操作. 材料准备: 一台W ...

  5. 快递单号查询免费api接口(PHP示例)

    快递单号查询API,可以对接顺丰快递查询,邮政快递查询,中通快递查询等.这些快递物流企业,提供了快递单号自动识别接口,快递单号查询接口等快递物流服务.对于电商企业,ERP服务企业,集成此接口到自己的软 ...

  6. 快递单号查询接口对接-快递鸟API.net源码c#

    前言 看完快递鸟api对接教程这篇文章,然后把源码复制到你的项目上,就能快速完成快递接口对接,调用快递鸟的极兔快递查询API接口,能查询到快递单号从收件.运输,到转运中心,派送到签收等各个环节的物流发 ...

  7. C#快递单号查询源码

    源码本人测试过,没有啥问题,能查询快递单号,支持的快递还挺多,圆通快递.申通快递.韵达快递的都支持单号查询的,程序是通过向爱快递(www.aikuaidi.cn)接口传输参数来查询快递单号,我直接把代 ...

  8. JAVA快递单号查询接口对接第三方快递鸟api接口教程

    应用场景: 1.网站用户后台的订单页面,用户打开页面时先调用快递接口查询这个用户的订单的快递,然后将结果显示在页面中: 2.内部快速搜索,用户打电话过来只要问对方的名字,然后直接搜到这个用户的订单的快 ...

  9. 快递单号发出物流如何查询,快递单号查询物流方法

    当你有大批的快递单号,如何快速查询快递单号发出的物流信息呢?这里分享一个批量查询快递单号物流的方法,下面来看操作步骤. 准备一个查询工具,快递批量查询高手.在浏览器上搜索可下载到,先注册后再登录上. ...

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

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

最新文章

  1. [网络收集]Web.config配置文件详解
  2. delphi中的函数传参如何传枚举参数_我是这样使用SpringBoot(API传参)
  3. 软件工程复习提纲——第五章
  4. cassandra学习笔记三
  5. android用单元测试的多,AndroidStudio中对Android应用进行单元测试InstrumentationTestCase...
  6. 剑指 Offer II 056 二叉搜索树中两个节点之和
  7. 汇编语言的强制类型转换
  8. Asp.Net水晶报表边框不显示之解决方法
  9. linux远程ssh的端口映射,SSH端口映射
  10. 工作流管理系统开发之十 数据库连接及事务设定
  11. java drawline_Java Graphics.drawLine方法代码示例
  12. python里面的pip是什么意思_python中pip问题
  13. dataBinding 配置问题 Could not find method buildFeatures()for arguments xxx on extension ‘android
  14. NXCOMPAT选项和数据执行保护DEP
  15. pt100热电阻c语言的程序,单片机+ADC0832热电阻PT100测温程序
  16. YTU OJ 母牛的故事
  17. php对接linepay支付
  18. 爬取百度指数行业排行榜
  19. FPGA中Block RAM和分布式RAM的区别?分别适用的场景是什么?
  20. 大型网站系统架构的演化【转自飘扬的红领巾】

热门文章

  1. 替代YY语音,自行搭建语音实时服务器
  2. 用matlab画excel,如何用matlab在Excel中画画
  3. 百度快照劫持之JS劫持诊断与恢复教程
  4. Python 内置容器 之 字典 ( dict )超详细指南
  5. nod32半年升级id
  6. U8-固定资产月末结账报错:BOF或EOF中有一个是真
  7. glassfish java环境_CentOS安装JDK和安装Glassfish
  8. 智齿徐懿:一个“外行”眼中的呼叫中心系统未来丨Xtecher 视角
  9. 微信登陆失败Error: invalid code
  10. 利用Python实现腾讯校园招聘状态查询