邮政邮政快递查询邮政快递查询

邮政邮政快递查询邮政快递查询,第1张

中国邮政物流官网(中国邮政包裹快递查询)

中国邮政包裹快递查询(中国邮政物流官网)

如何使用快鸟提供的接口查询邮政快递的物流轨迹?

在解释之前,我们先来看看界面完成后的实际显示效果。

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

其实快鸟返回的消息信息会更详细,展示给客户的信息可以根据产品需求进行包装。

现在来说说具体的实现吧!

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

测试商家ID:

测试1617571

测试API密钥:

54343 B2-7252-439 b-B4EB-1 af 42 c8 f 2175(该键只能在测试环境中使用)

API测试地址:

http://sandbox API . kdn iao . com:8080/kdniaosandbox/gateway/extraceface invoke . JSON

我就以C#开发为例来说明。

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

请求系统级参数描述:

备注:R-必选,O-可选,C-该参数在消息中的某些条件下是可选的。

这里说的是系统级参数,也相当于公共参数。这些参数需要传递给每个接口。

接口参数:

参数,也称为业务参数,随业务接口、参数的字段和内容而变化,随业务而变化。这里实现即时查询接口,请求指令类型为1002。官网,一个快递鸟,要求必须传快递公司代码和物流号,邮政快递代码是YZPY。

要查看其他快递公司的代码,请单击此链接:

http://www.kdniao.com/documents

就像我面前的赛道截图,邮政快递编码是YZPY,物流编号是9861545869525。

业务参数消息组合如下:

{#039;订单代码 # 039;:#039;#039;,#039;托运人代码 # 039;:#039;YZPY # 039,#039;物流代码 # 039;:#039;9861545869525#039;}

完整的请求消息(URL编码后):

request data = % 0d % 0a ++++++++++% 7b % 27 order code % 27% 3a % 27% 27% 2c % 27 shipper code % 27% 3a % 27 yzpy % 27% 2c % 27 logistic code % 27% 3a % 279861545869525% 27% 7d % 0d % 0a++++++++++++++。EBusinessID = 1264783 amp请求类型= 1002 ampdata sign = mjq 2 ywzimtu 1 mzc 5 ymfimtftkmwyyji 3 ytlimjrkymu % 3d amp;数据类型=2

未编码的请求消息:

请求数据=

{#039;订单代码 # 039;:#039;#039;,#039;托运人代码 # 039;:#039;YZPY # 039,#039;物流代码 # 039;:#039;9861545869525#039;}

ampEBusinessID = 1264783 amp请求类型= 1002 ampdata sign = mjq 2 ywzimtu 1 mzc 5 ymfimtfkmwyyji 3 ytlimjrkymu = amp;数据类型=2

返回的消息信息:

{

"物流代码 quot: quot9861545869525 quot,

"托运人代码 quot: quotYZPY quot,

"痕迹 quot: [

{

"接受站 quot: quot【邮政仙居包裹快递部】已收到,发货代理:周峰,电话:18358689325 quot,

"接受时间 quot: quot2020-02-19 16:10:29 quot;

},

{

"接受站 quot: quot离开【邮政仙居包裹快递部】,下一站【仙居中心】”,

"接受时间 quot: quot2020-02-19 16:10:33 quot;

},

{

"接受站 quot: quot到达【浙江省仙居县加工中心】”,

"接受时间 quot: quot2020-02-19 16:10:34 quot;

},

{

"接受站 quot: quot离开【浙江省仙居县处理中心】,下一站【台州中心局邮件处理中心】",

"接受时间 quot: quot2020-02-21 11:13:33 quot;

}

],

"国家 quot: quot2 quot,

"电子商务协会 quot: quot1264783 quot,

"成功 gt;:正确

}

# c键码:

/// lt;总结 gt

///物流轨迹实时查询

/// lt;/summary gt;

/// lt;param name = quoturl quot gthttp://sandbox API . kdn iao . com:8080/kdniaosandbox/gateway/extraceface invoke . JSON lt;/param gt;

/// lt;param name = quot电子商务协会 quot gttest1617571lt/param gt;

/// lt;param name = quotappKey quot gt554343 B2-7252-439 b-b4eb-1 af 42 c8 f 2175 lt;/param gt;

/// lt;param name = quot请求数据 quot gt{#039;订单代码 # 039;:#039;#039;,#039;托运人代码 # 039;:#039;ZTO # 039;,#039;物流代码 # 039;:#039;78120038107849#039;} lt/param gt;

/// lt;returns gt lt/returns gt;

公共字符串getOrderTracesByJson(字符串url,字符串eBusinessID,字符串appKey,字符串requestData)

{

字典 ltstring,string gtparam =新词典 ltstring,string gt();

参数。添加( quot请求数据 quot,属性。UrlEncode(requestData,编码。UTF8));

参数。添加( quot电子商务协会 quot,ebuinessid);

参数。添加( quot请求类型, quot1002 quot);

string data sign = encrypt(request data,appKey, quotUTF-8 quot;);

参数。添加( quot数据签名 quot,属性。UrlEncode(dataSign,编码。UTF8));

参数。添加( quot数据类型 quot, quot2 quot);

string result = sendPost(url,param);

返回结果;

}

/// lt;总结 gt

///通过post提交数据,返回网页源代码。

/// lt;/summary gt;

/// lt;param name = quoturl quot gt发送的请求的URL

/// lt;param name = quot参数 quot gt请求的参数集

/// lt;returns gt远程资源的响应结果

私有字符串sendPost(字符串url,字典 ltstring,string gt参数)

{

字符串结果= quot";

StringBuilder postData = new StringBuilder();

if (param!= null amp amp参数。Count gt0)

{

foreach(参数中的变量p)

{

if (postData。长度 gt0)

{

postData。追加( quot amp");

}

postData。追加(p . Key);

postData。追加( quot= quot);

postData。追加(参数值);

}

}

//返回postData。ToString();

byte[] byteData =编码。get encoding( quot;UTF-8 quot;).GetBytes(postData。ToString());

尝试

{

HttpWebRequest请求= (HttpWebRequest)WebRequest。创建(URL);

请求。ContentType = quotapplication/x-www-form-urlencoded quot;;

请求。Referer = url

请求。接受= quot*/* quot;;

请求。超时= 30 * 1000;

请求。UserAgent = quotMozilla/4.0(兼容;MSIE 6.0Windows NT 5.1SV1。净CLR 2 . 0 . 50727;。净CLR 3 . 0 . 04506 . 648;。净CLR 3 . 0 . 4506 . 2152;。净CLR 3 . 5 . 30729) quot;;

请求。Method = quot帖子 quot;

请求。ContentLength = byteData。长度;

Stream stream =请求。GetRequestStream();

溪流。写(字节数据,0,字节数据。长度);

溪流。flush();

溪流。close();

HttpWebResponse响应= (HttpWebResponse)请求。GetResponse();

流backStream =响应。GetResponseStream();

StreamReader Sr = new StreamReader(back stream,Encoding。get encoding( quot;UTF-8 quot;));

result = Sr . ReadToEnd();

Sr . Close();

逆流而上。close();

回应。close();

请求。abort();

}

catch(例外ex)

{

结果= ex。消息;

}

返回结果;

}

/// lt;总结 gt

///电子商务签名签名

/// lt;/summary gt;

/// lt;param name = quot内容 quot gt内容

/// lt;param name = quot键值 quot gtAppkey lt/param gt;

/// lt;param name = quot字符集 quot gtURL编码

/// lt;returns gt数据签名

私有字符串加密(字符串内容、字符串键值、字符串字符集)

{

if (keyValue!=空)

{

返回base64(MD5(content + keyValue,charset),charset);

}

返回base64(MD5(内容,字符集),字符集);

}

/// lt;总结 gt

///字符串MD5加密

/// lt;/summary gt;

/// lt;param name = quotstr quot gt要加密的字符串

/// lt;param name = quot字符集 quot gt编码方法

/// lt;returns gt密文

私有字符串MD5(字符串,字符串字符集)

{

byte[] buffer = System。text . encoding . get encoding(charset)。GetBytes(str);

尝试

{

系统。security . cryptography . MD 5 cryptoserviceprovider检查;

检查=新系统。security . cryptography . MD 5 cryptoserviceprovider();

byte[] somme = check。ComputeHash(缓冲区);

string ret = quot";

foreach(somme中的字节a)

{

如果(a lt16)

ret+= quot;0 gt;+a . ToString( quot;X quot);

其他

ret+= a . ToString( quot;X quot);

}

返回ret。to lower();

}

捕捉

{

扔;

}

}

/// lt;总结 gt

/// base64编码

/// lt;/summary gt;

/// lt;param name = quotstr quot gt内容

/// lt;param name = quot字符集 quot gt编码方法

/// lt;returns gt lt/returns gt;

私有字符串base64(字符串str,字符串字符集)

{

返回转换。ToBase64String(系统。text . encoding . get encoding(charset)。GetBytes(str));

}

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

http://www.kdniao.com/documents

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/5446641.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存