地图轨迹推送接口文档
一、订阅接口
通过订阅接口提交快递单号,接口接收到后便对这些运单进行跟踪,当运单状态发生变化的时候,通过调用回调接口将运单的跟踪信息推送给贵公司,直到这些运单号的生命周期结束(一般以“已签收”为准)。
注意:对于同一快递公司同一个快递单号,每月最大订阅次数为4次,超过4次的订阅在提交时会报重复订阅。
1.1 接口格式
1.使用http协议表单提交的方式进行信息交互,字符编码默认统一采用UTF-8,数据格式:application/x-www-form-urlencoded;
2.字段类型约定:需要严格依据字段表格中给出的参数格式和大小进行开发。
3.字段解析约定:参数字段中的必选字段是每次调用接口时都要求必须传入的;
1.2 请求地址
http://poll.kuaidi100.com/pollmap
请求参数(header)
名称 | 类型 | 默认值 |
---|---|---|
Content-Type | string | application/x-www-form-urlencoded |
请求参数(body)
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
schema | 否 | string | 默认是json |
param | 是 | Object | 主体参数对象 |
param数据结构:
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
key | 是 | string | 授权码,请申请企业版获取 |
company | 是 | string | 订阅的快递公司的编码,一律用小写字母,下载编码表格 |
number | 是 | string | 订阅的快递单号,单号的最小长度6个字符,最大长度32个字符 |
from | 是 | string | 快递寄件地址,最小颗粒到市级,例如:广东省深圳市 |
to | 是 | string | 快递收件地址 ,最小颗粒到市级,例如:广东省深圳市 |
parameters | 是 | Object | 辅助参数 |
parameters数据结构:
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
callbackurl | 是 | string | 回调接口的地址,默认仅支持http,如需兼容https请联系快递100技术人员处理 |
salt | 否 | string | 签名用随机字符串 |
phone | 否 | string | 收寄件人的移动电话号码(只能填写一个,顺丰速运、顺丰快运必填,其他快递公司选填。如座机号码有分机号,分机号无需传入;如号码是电商虚拟号码需传入“-“后的后四位。查看详情) |
mapConfigKey | 否 | string | 地图轨迹模板id,通过管理后台地图轨迹模板配置 信息获取,如不传则返回默认样式地图 |
resultv2 | 否 | string | 添加此字段表示开通行政区域解析功能。空:关闭(默认),3:开通行政区域解析功能以及物流轨迹增加物流状态名称 5: 开通行政解析功能以及物流轨迹增加物流高级状态名称、状态值并且返回出发、目的及当前城市信息 |
1.3 请求示例
schema = json
param = {
"company": "ems",
"number": "1136281381675",
"from": "广东省深圳市南山区",
"to": "北京市朝阳区",
"key": "XXX ",
"parameters": {
"callbackurl": "您的回调接口的地址,如http://www.您的域名.com/kuaidi?callbackid=...",
"salt": "*",
"phone": "",
"resultv2": "5"
}
}
1.4 订阅返回结果
字段名称 | 类型 | 是否必填 | 字段含义 |
---|---|---|---|
result | Boolean | 是 | true表示成功,false表示失败 |
returnCode | string | 是 | 返回状态码,详细见1.6附表 |
message | string | 是 | 状态信息 |
1.5 订阅响应报文示例(json格式)
{
"result": true,
"returnCode": "200",
"message": "提交成功"
}
1.6 信息代码含义
returnCode | massage | 描述 |
---|---|---|
200 | 提交成功 | 订阅提交成功 |
400 | 无法解析 | 出发地目的地无法解析或下单时间无法解析 |
500 | 服务器错误 | 快递100的服务器出理间隙或临时性异常,有时如果因为不按规范提交请求,比如快递公司参数写错等,也会报此错误 |
501 | 重复订阅 | 此单已经订阅成功且目前还在跟踪过程中。若要提交多次订阅,请在收到单号的status=abort或shutdown后隔半小时再提交订阅 |
502 | 提交内容含有敏感关键字,被安全防护拦截 | 回调地址、提交内容包含敏感词,请联系快递100工作人员 |
600 | 您不是合法的订阅者(即授权Key出错) | 账号无可用单量,需要充值 |
601 | POLL: KEY 已过期 | 账号无可用单量,需要充值 |
700 | 不支持的快递公司 | 拒绝订阅的快递公司,检查快递公司编码是否有误 |
701 | 订阅方的订阅数据存在错误(如不支持的快递公司、单号为空、单号超长等)或错误的回调地址 | 请检查快递公司编码、对照技术文档检查参数、在后台调试工具测试回调地址 |
702 | POLL:识别不到该单号对应的快递公司 | 快递公司编码错误或者无可用单量,需要充值 |
二、推送接口
1.使用http协议表单提交的方式进行信息交互,字符编码默认统一采用UTF-8,数据格式:application/x-www-form-urlencoded;
2.字段类型约定:需要严格依据字段表格中给出的参数格式和大小进行开发。
3.字段解析约定:参数字段中的必选字段是每次调用接口时都要求必须传入的;
2.1 推送请求地址
由贵司在订阅请求中通过callbackurl字段提供
2.2 推送请求方式
post
2.3 推送输入参数
请求参数(header)
名称 | 类型 | 默认值 |
---|---|---|
Content-Type | string | application/x-www-form-urlencoded |
请求参数(body)
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
sign | 否 | string | 订阅参数salt值不为空时,推送数据将包含该加密签名,加密方式:md5(param+salt) ,注意加密后字符串一定要转32位大写 |
param | 是 | Object | 主体参数对象 |
param数据结构
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
status | String | polling | 监控状态:polling:监控中,shutdown:结束,abort:中止,updateall:重新推送。其中当快递单为已签收时status=shutdown,当message为“3天查询无记录”或“60天无变化时”status= abort ,对于status=abort的状态,需要增加额外的处理逻辑 |
billstatus | String | got | 包括got、sending、check三个状态,由于意义不大,已弃用,请忽略 |
message | String | 监控状态相关消息,如:3天查询无记录,60天无变化 | |
autoCheck | String | 1 | 快递公司编码是否出错,0为本推送信息对应的是贵司提交的原始快递公司编码,1为本推送信息对应的是我方纠正后的新的快递公司编码。一个单如果我们连续3天都查不到结果,我方会(1)判断一次贵司提交的快递公司编码是否正确,如果正确,给贵司的回调接口(callbackurl)推送带有如下字段的信息:autoCheck=0、comOld与comNew都为空;(2)如果贵司提交的快递公司编码出错,我们会帮忙用正确的快递公司编码+原来的运单号重新提交订阅并开启监控(后续如果监控到单号有更新就给贵司的回调接口(callbackurl)推送带有如下字段的信息:autoCheck=1、comOld=原来的公司编码、comNew=新的公司编码);并且给贵方的回调接口(callbackurl)推送一条含有如下字段的信息:status=abort、autoCheck=0、comOld=原来的公司编码、comNew=纠正后的快递公司编码。 |
comOld | String | yuantong | 贵司提交的原始的快递公司编码。详细见autoCheck后说明。若开启了国际版(即在订阅请求中增加字段interCom=1),则回调请求中暂无此字段 |
comNew | String | ems | 我司纠正后的新的快递公司编码。详细见autoCheck后说明。若开启了国际版(即在订阅请求中增加字段interCom=1),则回调请求中暂无此字段 |
lastResult | Object | 最新查询轨迹结果 |
lastResult数据结构
字段名称 | 类型 | 字段含义 |
---|---|---|
message | String | 消息体,请忽略 |
state | Integer | 快递单当前状态,默认为0在途,1揽收,2疑难,3签收,4退签,5派件,8清关,14拒签等10个主状态,如需要返回高级状态,请参考 resultv2 传值 |
status | Integer | 通讯状态,请忽略 |
condition | String | 快递单明细状态标记,暂未实现,请忽略 |
ischeck | Integer | 是否签收标记,0未签收,1已签收,请忽略,明细状态请参考state字段 |
com | String | 快递公司编码,一律用小写字母 |
nu | String | 单号 |
trailUrl | String | 轨迹地图链接 |
arrivalTime | String | 预计到达时间 |
totalTime | String | 平均耗时 |
remainTime | String | 到达还需多少时间 |
isLoop | Boolean | 是否存在环路 |
ΘrouteInfo | 路由信息 | |
└Θfrom | 出发地行政区信息 | |
└number | 政区信息编码 | |
└name | 政区信息名 | |
└Θcur | 当前地行政区信息 | |
└number | 政区信息编码 | |
└name | 政区信息名 | |
└Θto | 目的地行政区信息 | |
└number | 政区信息编码 | |
└name | 政区信息名 | |
Θdata | data | 最新查询结果,数组,包含多项,全量,倒序(即时间最新的在最前),每项都是对象,对象包含字段请展开 |
└ context | String | 内容 |
└ time | String | 时间,原始格式 |
└ ftime | String | 格式化后时间 |
└status | String | 本数据元对应的物流状态名称或者高级状态名称,接口提交resultv2=3或者resultv2=5标记后才会出现 |
└areaCode | String | 本数据元对应的行政区域的编码,接口提交resultv2=3或者resultv2=5标记后才会出现 |
└areaName | String | 本数据元对应的行政区域的名称,接口提交resultv2=3或者resultv2=5标记后才会出现 |
└statusCode | String | 本数据元对应的高级物流状态值,接口中提交resultv2=5标记后才会出现 |
└areaCenter | String | 本数据元对应的行政区域经纬度,接口中提交resultv2=5标记后才会出现 |
└location | String | 本数据元对应的快件当前地点,接口中提交resultv2=5标记后才会出现 |
└areaPinYin | String | 本数据元对应的行政区域拼音,接口中提交resultv2=5标记后才会出现 |
2.4 推送输入参数示例
param = {
"status": "polling",
"billstatus": "got",
"message": "",
"lastResult": {
"message": "ok",
"state": "0",
"status": "200",
"condition": "F00",
"ischeck": "0",
"com": "ems",
"nu": "V030344422",
"data": [{
"context": "【深圳市】 快件已在 【新南山科技北】 签收, 签收人: 家门口",
"time": "2020-12-19 16:33:19",
"ftime": "2020-12-19 16:33:19",
"status": "签收",
"areaCode": "CN440305000000",
"areaName": "广东,深圳市,南山区",
"location": "新南山科技北",
"areaCenter": "113.923552,22.528499",
"areaPinYin": "nan shan qu",
"statusCode": "3",
}, {
"context": "[深圳市】 【新南山科技北]正在第1次派件",
"time": "2020-12-19 15:30:10",
"ftime": "2020-12-19 15:30:10",
"status": "派件",
"areaCode": "CN440305000000",
"areaName": "广东,深圳市,南山区",
"location": "新南山科技北",
"areaCenter": "113.923552,22.528499",
"areaPinYin": "nan shan qu",
"statusCode": "5"
}],
"routeInfo": {
"from": {
"number": "CN410202000000",
"name": "吉林,辽源市,东丰县"
},
"cur": {
"number": "CN440305000000",
"name": "广东,深圳市,南山区"
},
"to": {
"number": "CN440305000000",
"name": "广东,深圳市,南山区"
}
},
"isLoop": false,
"trailUrl": "https://api.kuaidi100.com/tools/map/bc80574d538262aecc897a469151f0e3",
"arrivalTime": "2020-12-19 16",
"totalTime": "2天1小时",
"remainTime": "1天2小时"
}
}
2.5 轨迹链接应用示例
重要提醒:
(1)对于status= abort而且message中包含“3天”关键字而且comNew为空的快递单,需要增加以下处理逻辑:
- 如果有专门的工作人员,可以:将快递单罗列给工作人员,由工作人员判断此单是否为假单:如果此单是真实单,则将此单重新向快递100提交一次;如果此单是假单,则将此单标记为假单,而且不再将此单提交给快递100。如果没有专门的工作人员,请直接用以下第二种方法进行操作;
-
如果没有专门的工作人员,可以:在收到status=abort而且message中包含“3天”关键字而且comNew为空的提示10分钟后,将此快递单重新向快递100提交订阅,如果重新提交后仍然收到status= abort,则再次重新向快递100提交,如此,在同一月中如果重复提交3~4次都仍然收到status= abort,则此单为假单,不需要再将此单提交给快递100。
对于40天内重复提交的快递单,结算时只计一次费用,对于从首次查询时间起算,超出40天的重复提交的快递单,结算两次费用。
(2)如果判断到status=abort且comNew不为空,则不需要重新提交订阅,且将贵司原来的快递公司编码改为comNew后的值,或在贵司数据库中增加一个快递公司编码为comNew+原来单号的运单;
(3)如果判断到status=polling且autoCheck=1,则此单为纠正公司编码后的跟踪信息,应保存。
- 关于data:我方每次推送的都是完整的、全量的快递查询结果,而不是部分最新、增量的状态。由于同一快递单查询结果的数据源可能变动,不同数据源之间的结果略有差异,建议每次删除旧的数据后再写入新的数据。
- 时间建议以ftime为准,不要使用time,time的存在仅仅为了兼容。
2.6 推送响应报文及错误码解释
参数名 | 说明 |
---|---|
result | true表示成功,false表示失败。如果提交回调接口的地址失败,30分钟后重新回调,3次仍旧失败的,自动放弃 |
returnCode | 200: 提交成功 500: 服务器错误 其他错误请自行定义 |
message | 返回的提示 |
2.7 推送返回示例
当我方调用贵方的回调接口(callbackurl)时,贵方需要先将我方提交的数据保存至贵方的数据库,接着向我方返回是否成功接收的响应报文及代码,即贵公司直接在回调接口的地址的response中填写如下内容:
{
"result": true,
"returnCode": "200",
"message": "成功"
}
注意:对于status= abort(message中包含“3天查询无记录”或者“60天无变化”)的快递单,也需要返回成功接收的响应报文及代码。
2.8 运单签收状态(state)说明
默认状态下,在推送时我们提供了ischeck字段表示快递单是否签收(含正常签收,退回签收两种情况),通过state字段提供签收的具体状态,state具体如下:
物流状态值 | 物流状态名称 | 高级物流状态值 | 高级物流状态名称 | 含义 |
---|
1 | 揽收 | 1 | 揽收 | 快件揽件 |
101 | 已下单 | 已经下快件单 | ||
102 | 待揽收 | 待快递公司揽收 | ||
103 | 已揽收 | 快递公司已经揽收 | ||
0 | 在途 | 0 | 在途 | 快件在途中 |
1001 | 到达派件城市 | 快件到达收件人城市 | ||
1002 | 干线 | 快件处于运输过程中 | ||
1003 | 转递 | 快件发往到新的收件地址 | ||
5 | 派件 | 5 | 派件 | 快件正在派件 |
501 | 投柜或驿站 | 快件已经投递到快递柜或者快递驿站 | ||
3 | 签收 | 3 | 签收 | 快件已签收 |
301 | 本人签收 | 收件人正常签收 | ||
302 | 派件异常后签收 | 快件显示派件异常,但后续正常签收 | ||
303 | 代签 | 快件已被代签 | ||
304 | 投柜或站签收 | 快件已从快递柜或者驿站取出签收 | ||
6 | 退回 | 6 | 退回 | 快件正处于返回发货人的途中 |
4 | 退签 | 4 | 退签 | 此快件单已退签 |
401 | 已销单 | 此快件单已撤销 | ||
14 | 拒签 | 收件人拒签快件 | ||
7 | 转投 | 7 | 转投 | 快件转给其他快递公司邮寄 |
2 | 疑难 | 2 | 疑难 | 快件存在疑难 |
201 | 超时未签收 | 快件长时间派件后未签收 | ||
202 | 超时未更新 | 快件长时间没有派件或签收 | ||
203 | 拒收 | 收件人发起拒收快递,待发货方确认 | ||
204 | 派件异常 | 快件派件时遇到异常情况 | ||
205 | 柜或驿站超时未取 | 快件在快递柜或者驿站长时间未取 | ||
206 | 无法联系 | 无法联系到收件人 | ||
207 | 超区 | 超出快递公司的服务区范围 | ||
208 | 滞留 | 快件滞留在网点,没有派送 | ||
209 | 破损 | 快件破损 | ||
210 | 销单 | 寄件人申请撤销寄件 | ||
8 | 清关 | 8 | 清关 | 快件清关 |
10 | 待清关 | 快件等待清关 | ||
11 | 清关中 | 快件正在清关流程中 | ||
12 | 已清关 | 快件已完成清关流程 | ||
13 | 清关异常 | 货物在清关过程中出现异常 | ||
14 | 拒签 | \ | \ | 收件人拒签快件 |
注:如需物流状态高级状态名称及状态值需要 resultv2 传 “5” 返回
三、快递公司编码
如果您需要的公司不在此列表,请联系在线客服添加