快递信息推送服务由订阅接口、跟踪系统和回调接口组成:贵公司通过本文档的章2.2.1、2.2.2的规范调用订阅接口将要查询、跟踪的运单号(又称“快递单号”、“单号”,下同)提交给快递100,同时按章2.3.1、2.3.2的规范开发一个回调接口,并将回调接口的地址通过章2.2.1的callbackurl字段提交给快递100。快递100接收到后便对这些运单进行跟踪(又称“监控”、“查询”,下同),当运单状态发生变化的时候,快递100便通过调用回调接口将运单的跟踪信息(又称“查询结果”下同)推送给贵公司,直到这些运单号的生命周期结束(一般以“已签收”为准)。
注:订阅请求是指由贵公司发起的web请求,用于声明贵公司需要我方帮忙跟踪某个快递公司的某个运单号,一个单号订阅成功一次即可,快递100收到订阅后会对该单号进行监控与推送。订阅相当于一个form request,即用程序模拟一个http页面的form请求,例如:
<form method="post" name="" action=" http://poll.kuaidi100.com/poll">
<input type="text" name="schema" value="json" />
<input type="text" name="param" value="{"company":"yuantong","number":"12345678","from":"广东省深圳市南山区","to":"北京市朝阳区","key":"XXX ","parameters":{"callbackurl":"您的回调接口的地址,如http://www.您的域名.com/kuaidi?callbackid=...", "salt":"XXXXXXXXXX","resultv2":"1"}}" >
</form>
说明:
我方收到贵方的订阅请求后,会先将单号保存至我方服务器,然后给贵司返回是否订阅成功的报文及代码,贵方需要将这些代码保存至日志,以备对账时使用, ,具体的报文及代码说明如下:
说明:
200: 提交成功
701: 拒绝订阅的快递公司
700: 订阅方的订阅数据存在错误(如不支持的快递公司、单号为空、单号超长等)或错误的回调地址
702: POLL:识别不到该单号对应的快递公司
600: 您不是合法的订阅者(即授权Key出错)
601: POLL:KEY已过期
500: 服务器错误(即快递100的服务器出理间隙或临时性异常,有时如果因为不按规范提交请求,比如快递公司参数写错等,也会报此错误)
501:重复订阅(请格外注意,501表示这张单已经订阅成功且目前还在跟踪过程中(即单号的status=polling),快递100的服务器会因此忽略您最新的此次订阅请求,从而返回501。一个运单号只要提交一次订阅即可,若要提交多次订阅,请在收到单号的status=abort或shutdown后隔半小时再提交订阅,详见本文档第13页“重要提醒”部份说明)
注:回调请求(也称“推送”)是指由快递100向贵司的回调接口发起请求,用于将运单的物流跟踪信息提交给贵司。回调也是相当于一个form request,即由快递100模拟一个如下的http页面的form请求,例如:
<form method="post" name="" action="[callbackurl]">
<input type="text" name="param" value="{XXX}" >
<input type="text" name="sign" value="签名字符串" />
</form>
说明:
1、当快递单还在监控过程中,则status=polling;
2、当快递单本身为已签收时,status=shutdown,即监控结束,表示此单的生命周期已结束;
3、若单号从提交订阅起连续3天都查不到跟踪信息,或单号从某个节点起不再更新并延续了30天,我们就会终止对此单的跟踪,并给贵方的回调接口(callbackurl)推送message为“3天查询无记录”或“60天无变化时”、status= abort的提醒,即监控中止。
4、一个运单提交给我们后,如果我们连续查了3天都查不到结果,我方会
(1)判断一次贵司提交的快递公司编码是否正确,如果正确,给贵司的回调接口(callbackurl)推送如下信息:
{"message":"3天查询无记录","status":"abort","autoCheck":"0","comOld":"","comNew":"","lastResult":{"message":"快递公司参数异常:单号不存在或者已经过期","state":"0","data":[],"status":"201","com":"XXXXX","nu":"XXXXXXXX","ischeck":"0","condition":""},"billstatus":""}
(2)如果我们判断到贵司提交的快递公司编码出错,我们会帮忙用【正确的快递公司编码】+【原来的运单号】重新提交订阅并开启监控(后续如果监控到单号有更新就给贵司的回调接口(callbackurl)推送带有如下字段的信息:autoCheck=1、comOld=原来的公司编码、comNew=新的公司编码);并且给贵方的回调接口(callbackurl)推送一条含有如下字段的信息:status=abort、autoCheck=0、comOld为空、comNew=纠正后的快递公司编码:
{"message":"3天查询无记录","status":"abort","autoCheck":"0","comOld":"","comNew":"ems(此处是示范)","lastResult":{"message":"快递公司参数异常:单号不存在或者已经过期","state":"0","data":[],"status":"201","com":"XXXXX","nu":"XXXXXXXX","ischeck":"0","condition":""},"billstatus":""}
所以:
1、如果判断到status=abort且comNew为空,则按下面【重要提醒】所示重新提交订阅;
重要提醒:
对于status= abort而且message中包含“3天”关键字而且comNew为空的快递单,需要增加以下处理逻辑:
对于同一自然月内重复提交的快递单,结算时只计一次费用,对于跨了两个自然月重复提交的结算单,结算两次费用。
2、如果判断到status=abort且comNew不为空,则不需要重新提交订阅,且将贵司原来的快递公司编码改为comNew后的值,或在贵司数据库中增加一个快递公司编码为comNew+原来单号的运单;
3、如果判断到status=polling且autoCheck=1,则此单为纠正公司编码后的跟踪信息,应保存。
当我方调用贵方的回调接口(callbackurl)时,贵方需要先将我方提交的数据保存至贵方的数据库,接着向我方返回是否成功接收的响应报文及代码,即贵公司直接在回调接口的地址的response中填写如下内容:
说明:
200: 提交成功
500: 服务器错误
其他错误请自行定义
result:true表示回调成功,false表示失败,如果提交回调接口的地址失败,30分钟后重新回调,3次仍旧失败的,自动放弃。
其他信息快递100会忽略。
默认状态下,在推送时我们提供了ischeck字段表示快递单是否签收(含正常签收,退回签收两种情况),通过state字段提供签收的具体状态,state具体如下:
签收状态服务能够对目前市面上大多数快递单状态进行准确判定。
若state=0,则condition如下值代表如下状态:
注:公司编码请严格使用小写字符
如果您需要的公司不在此列表,请联系快递100业务联系人添加。
**公司编码请严格使用小写字符
见附件《快递100快递公司编码.xlsx》,或者登陆企业账号在后台下载最新表格。
查询请求相当于一个form request,即用程序模拟一个http页面的form请求,例如:
<form method="post" name="" action=" http://poll.kuaidi100.com/poll/query.do ">
<input type="text" name=" customer " value="xxxxxxxxxxxx" />
<input type="text" name="sign" value="adfjslfjhasdfwofnwofwoeueerf" >
<input type="text" name="param" value="xxx" >
</form>
返回正确时的内容如上述(1)所示,如果失败,则返回如下信息:
returnCode:
400: 提交的数据不完整,或者贵公司没授权
500: 表示查询失败,或没有POST提交
501: 服务器错误,快递100服务器压力过大或需要升级,暂停服务
502: 服务器繁忙,详细说明见2.2《查询接口并发协议》
503: 验证签名失败。
State值表示如下含义:
签收状态服务能够对目前市面上大多数快递单状态进行准确判定。
基于快递公司系统承压能力有限等原因,暂只能为贵司提供1单/秒的查询并发线程量,若贵司向我方的查询并发量超出约定额度,我方会报超并发错误,如下:
超并发提示代码:
如果贵公司因为业务量太大而需要提高查询并发量,请跟我方业务联系人协商调整。
注:公司编码请严格使用小写字符
如果您需要的公司不在此列表,请联系快递100业务联系人添加。
**公司编码请严格使用小写字符
见附件《快递100公司编码.xlsx》
将运单号通过我们接口提交至我方,我方返回该运单号可能对应的快递公司的列表。贵司可以用于提前判断用户或商家所输入的快递单号所归属的快递公司,以提升商家录入体验,或可用于对商家录入的信息进行提交较验,以减少商家的录入错误。
由于运单号规则不断变化且各个快递公司没有标准、统一的规则,我们现有机制是通过我们积累的海量数据进行智能分析得出相关规则并且每天更新,所以我们无法保证判断准确率能达到100%。为此,本接口免费提供给贵司使用,同时,我方也不会对本接口的准确性、有效性等提供法律层面上的承诺。当然,本接口同时为我方官网所用接口,所以我方会尽力维护。若贵司将此服务向最终用户提供,建议贵司在展现给用户时加上如下提示:
(1)判断结果后加上一句 “由快递100猜测”等带“猜测”字样的文字说明;
(2)所选的公司可由用户重新手动修改;
(3)在判断结果后提示“本结果仅供参考”等文字说明。
http://www.kuaidi100.com/autonumber/auto?num=[单号]&key=[key]
示范:
http://www.kuaidi100.com/autonumber/auto?num=906919164534&key=XDSFDFDSF
示范:
说明:
每一个{}表示一个猜测的公司结果,comCode表示猜测的公司编码,公司编码参考附件《快递100公司编码》。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有