物流即时查询功能-百世快递

今天我们来聊如何利用快递鸟提供的接口来查询百世快递的物流轨迹。

讲解之前我们来看一下,接口完成以后的实际显示效果

以下是产品应用截图,调用快递鸟接口获得的轨迹信息:

实际上快递鸟返回的报文信息会更详细,在给客户展示的信息可根据产品需要来封装返回轨迹信息。

现在我们来聊一聊具体实现!

首先我们准备好需要用到的资源,

测试商户ID:

test1617571

测试API key:

554343b2-7252-439b-b4eb-1af42c8f2175(此Key仅限测试环境使用)

API测试地址:

http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json

我以C#开发为例来讲解

如果还没有注册快递鸟,或者还不知道如何获取API Key,可以访问这个腾讯视频教程:

https://v.qq.com/x/page/z3068yfw0fl.html(注册登陆获取快递鸟API Key)

接下来,我们讲解一下请求参数

请求系统级参数说明:

备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)

这里提到了系统级参数,也相当于是公用参数,这些参数是调用每个接口都是必须要传参的。

接口参数:

接口参数,也叫业务参数,请求的业务接口不同,参数的字段,内容也不同,是跟着业务变化的,这里我们实现的是即时查询接口,请求指令类型:1002,快递鸟官网要求必须传递快递公司编码和物流单号 ,百世快递的编码是HTKY

如要查看其他快递公司的编码,点击此链接:

http://www.kdniao.com/documents

正如我前面的轨迹截图,百世快递的编码是HTKY,物流单号是552002203935167

业务参数报文组合如下:

{‘OrderCode‘:‘‘,‘ShipperCode‘:‘HTKY‘,‘LogisticCode‘:‘552002203935167‘}

请求的完整报文(URL编码以后):

RequestData=%0d%0a++++++++++++%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27HTKY%27%2c%27LogisticCode%27%3a%27552002203935167%27%7d%0d%0a++++++++&EBusinessID=1264783&RequestType=1002&DataSign=ZTFhZTE2MzFhZWNlYjFkZjViZTQ0YjQxNmM2ZGE2ZTI%3d&DataType=2

未编码的请求报文:

RequestData=

{‘OrderCode‘:‘‘,‘ShipperCode‘:‘HTKY‘,‘LogisticCode‘:‘552002203935167‘}

&EBusinessID=1264783&RequestType=1002&DataSign=ZTFhZTE2MzFhZWNlYjFkZjViZTQ0YjQxNmM2ZGE2ZTI=&DataType=2

返回的报文信息:

{ "LogisticCode" : "552002203935167", "ShipperCode" : "HTKY", "Traces" : [ { "AcceptStation" : "金华市【东阳江南五分部-优质客户】,【金晨/15356958520】已揽收", "AcceptTime" : "2020-02-14 17:53:01" }, { "AcceptStation" : "到金华市【金华义乌上溪大件集货点】", "AcceptTime" : "2020-02-17 18:52:03" }, { "AcceptStation" : "到金华市【义乌转运中心】", "AcceptTime" : "2020-02-18 18:52:31" }, { "AcceptStation" : "金华市【义乌转运中心】,正发往【长沙转运中心】", "AcceptTime" : "2020-02-18 18:55:55" }, { "AcceptStation" : "到长沙市【长沙转运中心】", "AcceptTime" : "2020-02-19 19:37:29" }, { "AcceptStation" : "长沙市【长沙转运中心】,正发往【沅陵县】", "AcceptTime" : "2020-02-21 01:25:17" } ], "State" : "2", "EBusinessID" : "1264783", "Success" : true }

C#关键代码:

/// <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));

}

附上详细的接口文档给大家:

http://www.kdniao.com/documents

在项目要发布生产环境时,调用正式的API,快递鸟会检查我们是否有实名认证,如果没有实名认证,是无法调用接口的。

腾讯视频教程:https://v.qq.com/x/page/g3068jcoras.html(如何快速通过实名认证)

提供源码下载:

https://download.csdn.net/download/yanghanwen/12139326

调用第三方物流接口,替换自己的key就能直接使用,主要实现了物流在线轨迹查询,订单订阅,轨迹推送,支持500多家的快递查询接口,包括主流的四通一达,支持上门取件服务,其他接口调用,修改调用指令和参数就能实现。

演示截图:

原文地址:https://www.cnblogs.com/51api/p/12341188.html

时间: 2024-11-09 13:17:48

物流即时查询功能-百世快递的相关文章

物流即时查询功能-韵达快递

今天我们来聊如何利用快递鸟提供的接口来查询韵达快递的物流轨迹. 讲解之前我们来看一下,接口完成以后的实际显示效果 以下是产品应用截图,调用快递鸟接口获得的轨迹信息: 实际上快递鸟返回的报文信息会更详细,在给客户展示的信息可根据产品需要来封装返回轨迹信息. 现在我们来聊一聊具体实现! 首先我们准备好需要用到的资源, 测试商户ID: test1617571 测试API key: 554343b2-7252-439b-b4eb-1af42c8f2175(此Key仅限测试环境使用) API测试地址: h

物流即时查询功能-申通快递

今天我们来聊如何利用快递鸟提供的接口来查询[申通快递]的物流轨迹. 讲解之前我们来看一下,接口完成以后的实际显示效果 以下是我调用快递鸟接口获得的申通物流轨迹信息,显示的界面效果需要自己开发: 现在我们来聊一聊具体实现! 首先我们准备好需要用到的资源, 测试商户ID: test1617571 测试API key: 554343b2-7252-439b-b4eb-1af42c8f2175(此Key仅限测试环境使用) API测试地址: http://sandboxapi.kdniao.com:808

如何最快实现物流即使查询功能-物流轨迹查询API

上一篇文章我们介绍了一个物流服务提供商,推荐大家使用快递鸟接口,主要介绍了如何注册账号,获得密钥,找不到注册地址的,我在发一下: http://kdniao.com/reg 今天我们来聊如何利用快递鸟提供的接口来实现即时查询. 在开发之前,我们先来了解一下什么是即时查询,按我的理解就是,我们提供运单号和快递公司编码,然后调用快递鸟提供的查询接口,即可查询运单号的发货情况,我们可以通过这个接口获悉到包裹的收件时间,派送时间,签收时间,签收人,如果体验做的更好一点,通过大数据可以分析这个包裹的预计派

调用第三方快递物流公司API接口即时查询信息方法

主要是利用快递鸟提供的物流服务,通过对接快递鸟的API,调用即时查询接口,获取物流信息.这里采用java语言,调用快递鸟的接口为例.步骤如下: 1.首先,得去快递鸟的官方网站注册一个账号并进行实名认证,获得一个用户ID跟API key ,主要是作为个人唯一标识方便调用接口 2.接下来介绍API接口参数:API参数 一.接口描述/说明(1)查询接口支持按照运单号查询(单个查询).?(2)接口需要指定快递单号的快递公司编码,格式不对或则编码错误都会返失败的信息.?如:EMS物流单号应选择快递公司编码

解决在TP5中无法使用快递鸟的即时查询API

快递鸟的接口对接其实很简单,先去官网注册账号,登陆把基本信息填好,然后在产品管理中订购一下"物流查询",免费,不过其他产品是收费,免费的有对接口调用频率限制,结合自己的应用流量够用就可以. 使用前复制一下账号下的用户ID和API key,并且快递鸟对各个API提供了各种语言的demo,其实下载下来,找一下平时寄快递的运单号,本地运行一下就能用了.(名称: KdApiSearchDemo) 其实拿到demo代码,可以放到项目中,因为demo是以面向过程写的,所以为了方便自然就想封装一下.

物流轨迹查询API - 产品应用篇

上一篇文章我们介绍了,如何利用快递鸟提供的接口来实现即时查询以及物流跟踪.提供了C#版本,Java版本, PHP的代码来实现接口对接, 今天我们聊聊,如何应用这个产品,能为我们做些什么? 如果你是电商平台.自营商城.ERP.打单工具.楼宇/物业系统.云打印.微信小程序/公众号.APP.OA等,那你一定需要这个功能,有配货业务,就有获取物流轨迹信息的需求. 快递鸟接口作为第三方接口,集合了多家物流的数据,通过规范格式统一输出一套规则,不对物流信息做处理,不做语言转换,只对数据字段做转换,分析物流状

JAVA 快递查询接口API调用-快递鸟接口

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEn

物流一站式查询之顺丰接口篇

连载篇提前看 物流一站式查询之TrackingMore篇 物流一站式查询之顺丰接口篇 物流一站式查询之快递100篇 前情提要 本篇内容承接上篇<物流包裹一站式查询(TrackingMore)文末所说,顺丰物流关闭了对第三方的物流接口,导致众多第三方物流平台查询不到顺丰快递的物流信息.但是问题终归是要解决滴,别家不行,咱就直接用顺丰自家的. 原本网上找顺丰物流信息查询发现顺丰开放平台 看了下介绍,因为也是顺丰的平台,也没多想,看到流程还是比较清晰的. 本来想找在线客服咨询下,结果发现在线客服有的只

物流即使查询API - JAVA篇

上一篇文章我们介绍了一个物流服务提供商,推荐大家使用快递鸟接口,主要介绍了如何注册账号,获得密钥,找不到注册地址的,我在发一下: http://kdniao.com/reg 之前也聊过如何利用快递鸟提供的接口来实现即时查询.也提供了C#代码,这次我们用Java来实现接口对接, 在开发之前,我们先来了解一下什么是即时查询,按我的理解就是,我们提供运单号和快递公司编码,然后调用快递鸟提供的查询接口,即可查询运单号的发货情况,我们可以通过这个接口获悉到包裹的收件时间,派送时间,签收时间,签收人,如果体