中通快递 | 轨迹查询接口
本期的内容是讲:如何利用快递鸟提供的接口来查询中通快递的物流轨迹。
我们先来看一下,接口完成以后的实际效果
以下是调用快递鸟接口获得的中通物流轨迹信息,显示的界面效果需要自己开发:
现在我们来具体实现!
首先准备好需要用到的资源,
注册一个账号:点击注册
测试商户ID:
test1617571
测试API key:
554343b2-7252-439b-b4eb-1af42c8f2175(此Key仅限测试环境使用)
API测试地址:
http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json
我以C#开发为例来讲解,中通快递查询接口
接下来,我们讲解一下请求参数
请求系统级参数说明:
备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)
这里提到了系统级参数,也相当于是公用参数,这些参数是调用每个接口都是必须要传参的。
接口参数:
接口参数,也叫业务参数,请求的业务接口不同,参数的字段,内容也不同,是跟着业务变化的,这里我们实现的是即时查询接口,请求指令类型:1002,快递鸟官网要求必须传递快递公司编码和物流单号 ,中通快递的编码是ZTO
如要查看其他快递公司的编码,扫描下方二维码领取:
正如我前面的轨迹截图,是一个中通的轨迹数据,中通快递的编码是ZTO,物流单号是78120038107849
业务参数报文组合如下:
{'OrderCode':'','ShipperCode':'ZTO','LogisticCode':'78120038107849'}
请求的完整报文:
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
返回的报文信息:
`{
"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
}`
C#关键代码:
` string requestData = "{'OrderCode':'','ShipperCode':'ZTO','LogisticCode':'78120038107849'}";
string dataSign = encrypt(requestData, “554343b2-7252-439b-b4eb-1af42c8f2175”, "UTF-8");
/// <summary>
/// 即时查询物流轨迹
/// </summary>
/// <param name="url"> http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json</param>
/// <param name="eBusinessID">test1617571</param>
/// <param name="appKey">554343b2-7252-439b-b4eb-1af42c8f2175</param>
/// <param name="requestData">{'OrderCode':'','ShipperCode':'ZTO','LogisticCode':'78120038107849'}</param>
/// <returns></returns>
public string getOrderTracesByJson(string url,string eBusinessID, string appKey, string requestData)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
param.Add("EBusinessID", eBusinessID);
param.Add("RequestType", "1002");
string dataSign = encrypt(requestData, appKey, "UTF-8");
param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
param.Add("DataType", "2");
string result = sendPost(url, 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);
}
}
// return postData.ToString();
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));
}
`
中通快递 | 轨迹查询接口相关推荐
- 申通快递轨迹查询----java完整demo
开发前需先申请接口API.话不多说,直接上代码,发送的参数可以参考申通开放平台的开发文档 申通开放平台- -快递轨迹查询 下面放一张摘自申通开放平台的对接图片. public class UPostM ...
- python调用api应用接口_第三方免费快递物流查询接口平台(快递鸟)api接口调用...
随着网购的发展,快递业也随之壮大.快递查询接口对接的需求量也越来越大,下面是对免费快递接口做的整理,并附上调用流程,分享给大家. 项目开发中,有些需求难免会用到关于快递的一些Api接口:本篇主要介绍的 ...
- 通过快递鸟如何接入中通快递电子面单
一.接入前准备(TO商家业务人员) 1.申请快递鸟用户ID和API key 1.1登录快递鸟官网注册页面http://www.kdniao.com/reg注册快递鸟账号: 1.2登录快递鸟用户管理后台 ...
- ecshop插件_ECSHOP和SHOPEX快递单号查询中通快递插件V8.6专版
发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...
- 支持批量查询中通快递单号的推荐软件
中通快递单号可以一次性查询吗?为了方便用户查询快递物流信息,今天小编就跟大家分享一款辅助软件:"固乔快递查询助手",它可以为用户提供中通快递物流单号的一次性查询功能,下面为大家分享 ...
- win 8 store app 免费中通快递查询 隐私声明
免费中通快递查询 隐私声明: 1.我们不会收集和使用你的个人信息. 2.用户使用我们的服务,应遵守国家有关法律法规和规章制度. 3.用户在使用过程中遇到任何问题,可以通过评论与评分将建议反馈给我们,我 ...
- 教你怎样同时查询中通快递多个未签收单号的物流信息
怎样在电脑上同时查询多个中通快递未签收单号的物流信息呢?今天小编给大家分享一款查询软件--快递批量查询高手,下面一起来操作. 前提条件 快递批量查询高手 多个中通单号 操作步骤 运行快递批量查询高手, ...
- 想要批量查询中通快递单号的话,要用什么辅助软件来实现
从事电商的小伙伴是不是经常要对大量中通快递单号进行查询呢?逐个查询的话不但需要认真核对中通快递单号是否正确,这需要浪费大量的时间和精力.今天小编教大家一招,可以帮助大家轻松快速查询大量中通快递单号,一 ...
- 快速查询中通快递物流信息,筛选出更新量为1的单号标色
快递已成为我们购物的生活的一部分,但是单号中的物流信息如何快速查询出呢?并查看各个单号揽收后没有再发往下一站,也就是快递中的更新量.这里给大家分享快递查询出多个单号物流信息,分析出更新量只有1的单号. ...
- 物流 快递信息查询接口(阿里快递物流接口案例)
[快递查询api,快递物流自动单号识别]可查询快递物流信息近500+家全国快递查询API,1个单号,自动识别,包括:顺丰.申通.圆通.韵达.中通.汇通.EMS.天天.国通.德邦.宅急送等几百家快递物流 ...
最新文章
- 测试函数: Ackely,Rastrigin,Griewangk,SumSquartes,Sphere,Quartic,Schwefel' Problem 12等
- AndroidStudio-4-如何导入项目
- 分支语句、循环语句、函数初步
- windows当代理服务器-CCProx的使用
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十三║Vue实战:Vuex 其实很简单
- 在PHP中对象真的是按引用传递的吗
- android 微信支付过程,android 微信 支付 接入流程总结
- 【pwnable.kr】passcode
- 2014 北京区域赛 dp
- 《学习笔记》在AngularJS视图中实现指令
- windows xp 自动关机命令
- css怎么实现三角形边框,css border实现的三角形图案
- Git基础(18):如何使用GitLab
- 程序员转岗产品经理有哪些优势和劣势?
- 思科路由器如何强行中断命令
- 企业微信组织架构同步优化的思路
- 《两化融合 数字化转型 价值效益参考模型》国家标准全文
- PDF文件签名与盖章
- think php 广告位,海报广告位管理 - 简单好用的海报和广告管理工具 – 基于ThinkPHP和Bootstrap的极速后台开发框架...
- 关于二叉排序树的平均查找长度的计算
热门文章
- static关键字分析(含解析图)
- 你可能不知道的iOS性能优化建议(来自前Apple工程师)
- 用java做出长方体的表面积_计算长方体、四棱锥的表面积和体积(Java)acm.sdut...
- UG NX二次开发(C#)-装配-替换组件
- UG二次开发 获得文档存盘历史
- 移动硬盘linux双系统,安装ubuntu到移动硬盘(UEFI+GPT),实现在别的电脑也可以使用(详细教程),...
- 【数学】T检验(显著性检验)
- 上传图片,使用很简单的办法上传图片
- 快速实现中文翻译多国语言
- 卡通渲染 类罪恶装备与崩坏3渲染总结