✅ 操作成功!

查看快递

发布时间:2023-06-06 作者:admin 来源:文学

查看快递

查看快递

-

2023年2月17日发(作者:)

快递鸟官网

注册账号

登录管理后

台实名认证

购买会员

套餐服务

按用户需求

接入接口

1、应用场景

(1)电商网站用户打开“我的订单”时调用此API显示物流信息详情。

(2)电商管理后台的物流系统,客服在对账前查询所有运单的签收状态,

并追踪问题。

(3)每日调用次数限制不超过3000次,如超过该限制,请对接订阅推送

API。

2、是否需要授权

要

3、接口描述/说明

(1)查询接口支持按照运单号查询(单个查询)。

(2)接口需要指定快递单号的快递公司编码,格式不对或则编码错误都

会返失败的信息。

如:EMS物流单号应选择快递公司编码(EMS)查看快递公司编码

(3)返回的物流跟踪信息按照发生的时间升序排列。

(4)接口指令1002。

(5)接口支持的消息接收方式为HTTPPOST,请求方法的编码格式(utf-8):

\"application/x-www-form-urlencoded;charset=utf-8\"。

(6)请求系统级参数说明:

参数名称类型说明

RequestDataString

请求内容需进行URL(utf-8)编码。请求内容

JSON格式,须和DataType一致。

R

EBusinessIDString商户ID,请在我的服务页面查看。R

RequestTypeString请求指令类型:1002R

DataSignString

数据内容签名:把(请求内容(未编码)+AppKey)

进行MD5加密,然后Base64编码,最后进行

URL(utf-8)编码。详细过程请查看Demo。

R

DataTypeString请求、返回数据类型:2-json;O

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

定条件下可选(Conditional)。

(7)接口地址:

APIID:点击申请

APIKey:点击申请

API地址:

/Ebusiness/

4、接口参数

(1)请求内容字段定义

参数类型说明

必须要

OrderCodeString订单编号O

ShipperCodeString快递公司编码R

LogisticCodeString物流单号R

(3)返回参数定义

参数名称类型说明

必须要

EBusinessIDString用户IDR

OrderCodeString订单编号O

ShipperCodeString快递公司编码R

LogisticCodeString物流运单号R

SuccessBool成功与否R

ReasonString失败原因O

StateString

物流状态:2-在途中,3-签收,4-问

题件

R

Traces

Trace

AcceptTimeString时间R

AcceptStationString描述R

RemarkString备注O

5、示例

(1)请求示例

JSON格式

showsourceviewsource

print?

1{

2\"OrderCode\":\"\",

3\"ShipperCode\":\"SF\",

4\"LogisticCode\":\"8\"

5}

(2)返回示例

JSON格式

showsourceviewsource

print?

01没有物流轨迹的

02{

03\"EBusinessID\":\"1109259\",

04\"Traces\":[],

05\"OrderCode\":\"\",

06\"ShipperCode\":\"SF\",

07\"LogisticCode\":\"7\",

08\"Success\":false,

09\"Reason\":null

10}

11有物流轨迹的

12{

13\"EBusinessID\":\"1109259\",

14\"OrderCode\":\"\",

15\"ShipperCode\":\"SF\",

16\"LogisticCode\":\"7\",

17\"Success\":true,

18\"State\":3,

19\"Reason\":null,

20\"Traces\":[

21{

22\"AcceptTime\":\"2014/06/2508:05:37\",

23

\"AcceptStation\":\"正在派件..(派件人:

邓裕富,电话:xxxxxxxxxx)[深圳市]\",

24\"Remark\":null

25},

26{

27\"AcceptTime\":\"2014/06/2504:01:28\",

28

\"AcceptStation\":\"快件在深圳集散中

心,准备送往下一站深圳[深圳市]\",

29\"Remark\":null

30},

31{

32\"AcceptTime\":\"2014/06/2501:41:06\",

33

\"AcceptStation\":\"快件在深圳集散中心

[深圳市]\",

34\"Remark\":null

35},

36{

37\"AcceptTime\":\"2014/06/2420:18:58\",

38\"AcceptStation\":\"已收件[深圳市]\",

39\"Remark\":null

40},

41{

42\"AcceptTime\":\"2014/06/2420:55:28\",

43\"AcceptStation\":\"快件在深圳,准备送

往下一站深圳集散中心[深圳市]\",

44\"Remark\":null

45},

46{

47\"AcceptTime\":\"2014/06/2510:23:03\",

48

\"AcceptStation\":\"派件已签收[深圳

市]\",

49\"Remark\":null

50},

51{

52\"AcceptTime\":\"2014/06/2510:23:03\",

53

\"AcceptStation\":\"签收人是:已签收[深

圳市]\",

54\"Remark\":null

55}

56]

57}

6、单号识别接口Demo工具.JAVA版DEMO

edReader;

ption;

treamReader;

StreamWriter;

ortedEncodingException;

LConnection;

;

oder;

eDigest;

p;

;

/**

*

*快递鸟单号识别接口

*

*@技术QQ群:xxxxx

*@copyright:深圳市快金数据技术服务有限公司

*

*

*ID和Key请到官网申请:/

*/

publicclassKdApiOrderDistinguish{

//DEMO

publicstaticvoidmain(String[]args){

KdApiOrderDistinguishapi=newKdApiOrderDistinguish();

try{

Stringresult=erTracesByJson(\"3967950525457\");

(result);

}catch(Exceptione){

tackTrace();

}

}

//电商ID

privateStringEBusinessID=\"请到快递鸟官网申请

/\";

//电商加密私钥,快递鸟提供,注意保管,不要泄漏

privateStringAppKey=\"请到快递鸟官网申请

/\";

//请求url

privateString

ReqURL=\"/Ebusiness/\";

/**

*Json方式单号识别

*@throwsException

*/

publicStringgetOrderTracesByJson(StringexpNo)throwsException{

StringrequestData=\"{\'LogisticCode\':\'\"+expNo+\"\'}\";

Mapparams=newHashMap();

(\"RequestData\",urlEncoder(requestData,\"UTF-8\"));

(\"EBusinessID\",EBusinessID);

(\"RequestType\",\"2002\");

StringdataSign=encrypt(requestData,AppKey,\"UTF-8\");

(\"DataSign\",urlEncoder(dataSign,\"UTF-8\"));

(\"DataType\",\"2\");

Stringresult=sendPost(ReqURL,params);

//根据公司业务处理返回的信息......

returnresult;

}

/**

*MD5加密

*@paramstr内容

*@paramcharset编码方式

*@throwsException

*/

@SuppressWarnings(\"unused\")

privateStringMD5(Stringstr,Stringcharset)throwsException{

MessageDigestmd=tance(\"MD5\");

(es(charset));

byte[]result=();

StringBuffersb=newStringBuffer(32);

for(inti=0;i<;i++){

intval=result[i]&0xff;

if(val<=0xf){

(\"0\");

}

(tring(val));

}

ng().toLowerCase();

}

/**

*base64编码

*@paramstr内容

*@paramcharset编码方式

*@throwsUnsupportedEncodingException

*/

privateStringbase64(Stringstr,Stringcharset)throws

UnsupportedEncodingException{

Stringencoded=base64Encode(es(charset));

returnencoded;

}

@SuppressWarnings(\"unused\")

privateStringurlEncoder(Stringstr,Stringcharset)throws

UnsupportedEncodingException{

Stringresult=(str,charset);

returnresult;

}

/**

*电商Sign签名生成

*@paramcontent内容

*@paramkeyValueAppkey

*@paramcharset编码方式

*@throwsUnsupportedEncodingException,Exception

*@returnDataSign签名

*/

@SuppressWarnings(\"unused\")

privateStringencrypt(Stringcontent,StringkeyValue,String

charset)throwsUnsupportedEncodingException,Exception

{

if(keyValue!=null)

{

returnbase64(MD5(content+keyValue,charset),charset);

}

returnbase64(MD5(content,charset),charset);

}

/**

*向指定URL发送POST方法的请求

*@paramurl发送请求的URL

*@paramparams请求的参数集合

*@return远程资源的响应结果

*/

@SuppressWarnings(\"unused\")

privateStringsendPost(Stringurl,Mapparams){

OutputStreamWriterout=null;

BufferedReaderin=null;

StringBuilderresult=newStringBuilder();

try{

URLrealUrl=newURL(url);

HttpURLConnectionconn=(HttpURLConnection)

nnection();

//发送POST请求必须设置如下两行

utput(true);

nput(true);

//POST方法

uestMethod(\"POST\");

//设置通用的请求属性

uestProperty(\"accept\",\"*/*\");

uestProperty(\"connection\",\"Keep-Alive\");

uestProperty(\"user-agent\",

\"Mozilla/4.0(compatible;MSIE6.0;WindowsNT

5.1;SV1)\");

uestProperty(\"Content-Type\",

\"application/x-www-form-urlencoded\");

t();

//获取URLConnection对象对应的输出流

out=newOutputStreamWriter(putStream(),

\"UTF-8\");

//发送请求参数

if(params!=null){

StringBuilderparam=newStringBuilder();

for(entry:

et()){

if(()>0){

(\"&\");

}

(());

(\"=\");

(ue());

//n(()+\":\"+ue());

}

//n(\"param:\"+ng());

(ng());

}

//flush输出流的缓冲

();

//定义BufferedReader输入流来读取URL的响应

in=newBufferedReader(

newInputStreamReader(utStream(),

\"UTF-8\"));

Stringline;

while((line=ne())!=null){

(line);

}

}catch(Exceptione){

tackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

();

}

if(in!=null){

();

}

}

catch(IOExceptionex){

tackTrace();

}

}

ng();

}

privatestaticchar[]base64EncodeChars=newchar[]{

\'A\',\'B\',\'C\',\'D\',\'E\',\'F\',\'G\',\'H\',

\'I\',\'J\',\'K\',\'L\',\'M\',\'N\',\'O\',\'P\',

\'Q\',\'R\',\'S\',\'T\',\'U\',\'V\',\'W\',\'X\',

\'Y\',\'Z\',\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',

\'g\',\'h\',\'i\',\'j\',\'k\',\'l\',\'m\',\'n\',

\'o\',\'p\',\'q\',\'r\',\'s\',\'t\',\'u\',\'v\',

\'w\',\'x\',\'y\',\'z\',\'0\',\'1\',\'2\',\'3\',

\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'+\',\'/\'};

publicstaticStringbase64Encode(byte[]data){

StringBuffersb=newStringBuffer();

intlen=;

inti=0;

intb1,b2,b3;

while(i

b1=data[i++]&0xff;

if(i==len)

{

(base64EncodeChars[b1>>>2]);

(base64EncodeChars[(b1&0x3)<<4]);

(\"==\");

break;

}

b2=data[i++]&0xff;

if(i==len)

{

(base64EncodeChars[b1>>>2]);

(base64EncodeChars[((b1&0x03)<<4)|((b2&

0xf0)>>>4)]);

(base64EncodeChars[(b2&0x0f)<<2]);

(\"=\");

break;

}

b3=data[i++]&0xff;

(base64EncodeChars[b1>>>2]);

(base64EncodeChars[((b1&0x03)<<4)|((b2&

0xf0)>>>4)]);

(base64EncodeChars[((b2&0x0f)<<2)|((b3&

0xc0)>>>6)]);

(base64EncodeChars[b3&0x3f]);

}

ng();

}

5、}开发对接

5.1、即时查询(RequestType:1002/8001)

5.1.1、请求接口之前需要先实名认证,开通相关会员服务,否则会请求失

败并返回提示“未申请开通接口”;

5.1.2、接口开发可以下载“快递鸟接口技术文档”进行参考;即时查询,

参考技术文档中的4.1或5.1.1部分;

5.1.3、接口开发可以下载“即时查询demo”进行参考(仅提供了.NET、

Java、PHP三种语言demo);

5.1.4、查看快递公司对应快递鸟的编码可以下载“2018快递鸟接口支持

快递公司编码列表.xlsx”。

5.1.5、接入过程中如有疑问请先参考快递鸟官网常见问题进行解决

(/help),也可以进入快递鸟官网加入

技术对接群进行咨询。

注:快递鸟官网-帮助与文档地址

(/documents)

5.2、物流跟踪(RequestType:1008/8008)

5.2.1、请求接口之前需要先实名认证,开通相关会员服务,否则会请求

失败并返回提示“未申请开通接口”;

5.2.2、接口开发需下载“快递鸟接口技术文档”进行查看;物流跟踪,

参考技术文档中的4.2或5.1.2部分;

5.2.3、开发订阅接口:

5.2.3.1、可以下载“物流跟踪demo”进行参考(仅提供了.NET、Java、

PHP三种语言的demo),

其他语言开发的用户需要根据技术文档自行开发;

5.2.3.2、测试订阅接口,对照技术文档正确返回代表订阅接口对接成

功,详情可见技术文档。

5.2.4、开发推送接口:

5.2.4.1、无demo提供,推送时会推送requestType、requestData

和DataSign三个参数,您开发一个推送接口接收这三个参数

就行,成功接收后需要在5S内给快递鸟返回成功收数据的报

文,否则超时。RequestData中包含应用级参数,即物流轨

迹(详情看技术文档);

5.2.4.2、在沙箱调试平台(沙箱调试平台地址:

/UserCenter/v2/SandBox/PushQuery

)配置回调地址测试推送接口。

回调地址由用户配置提供,用于接收快递鸟推送的物流信息,

只要是外网可以访问的就行。测试、配置步骤如下:

a、填写回调地址:

b、点击【生成】后应用级参数报文(RequestData)就是推送到用

户第一步时填写的回调地址上的测试物流信息。

c、点击【调用】,用户接收到测试的物流信息后,用户需要在应

用级参数报文区域返回成功接收的信号给快递鸟

(注:字段间不要存在空格,否则会影响返回结果)

响应格式:

{\"EBusinessID\":\"1237100\",\"UpdateTime\":\"2018-03-11

16:26:11\",\"Success\":true,\"Reason\":\"\"}

d、调用结果显示为“请求成功”表示用户开发的推送接口通过测

试。

e、测试通过后回到第一步填写回调地址的位置点击【配置】,填

写手机号(必须是注册快递鸟账号的手机号)、验

证码、调试成功回调地址,点击【保存】配置成功即可在正式

环境使用,下次如果需要修改回调地址同初次配置

回调地址步骤一致。

5.2.5、订阅接口、推送接口分别测试成功后,可使用正式地址进行订阅真

实的快递单号,快递鸟一般会在2-12小时内推送物流信息至您已

经配置好的回调地址上;

5.2.6、接口开发查看快递公司对应快递鸟的编码可以下载“2018快递鸟

接口支持快递公司编码列表.xlsx”;

5.2.7、接入过程中如有疑问请先参考快递鸟官网常见问题进行解决

(/help),也可以进入快递鸟官网加入

技术对接群进行咨询。

👁️ 阅读量:0