快递100轨迹查询-电商快递地图轨迹推送服务API接口案例代码

一、地图轨迹订阅接口

1.1 接口格式

1.使用http协议表单提交的方式进行信息交互,字符编码默认统一采用UTF-8,数据格式:application/x-www-form-urlencoded;

2.字段类型约定:需要严格依据字段表格中给出的参数格式和大小进行开发。

3.字段解析约定:参数字段中的必选字段是每次调用接口时都要求必须传入的;

1.2 请求地址

http://poll.kuaidi100.com/pollmap

请求报文:

参数名

是否必填

类型

说明

schema

string

默认是json

param

Object

主体参数对象

param数据结构:

参数名

是否必填

类型

说明

key

string

授权码,请<a href="https://api.kuaidi100.com/register/enterprise" target="_blank">申请企业版</a>获取

company

string

订阅的快递公司的编码,一律用小写字母

number

string

订阅的快递单号,单号的最大长度是40个字符

from

string

快递寄件地址

to

string

快递收件地址

parameters

Object

辅助参数

parameters数据结构:

参数名

是否必填

类型

说明

callbackurl

string

回调接口的地址

salt

string

签名用随机字符串

phone

string

收寄件人的移动电话号码(只能填写一个,顺丰单号必填,其他快递公司选填)

ordertime

string

订单下单时间,格式“yyyy-MM-dd HH:mm:ss”

1.3 请求示例

代码语言:txt
复制
schema = json

param = {

&#34;company&#34;: &#34;ems&#34;,

&#34;number&#34;: &#34;1136281381675&#34;,

&#34;from&#34;: &#34;广东省深圳市南山区&#34;,

&#34;to&#34;: &#34;北京市朝阳区&#34;,

&#34;key&#34;: &#34;XXX &#34;,

&#34;parameters&#34;: {

  &#34;callbackurl&#34;: &#34;您的回调接口的地址,如http://www.您的域名.com/kuaidi?callbackid=...&#34;,

  &#34;salt&#34;: &#34;*&#34;,

  &#34;phone&#34;: &#34;&#34;,

  &#34;ordertime&#34;: &#34;2020-12-31 08:09:00&#34;

}

}

1.4 订阅返回结果

字段名称

类型

是否必填

字段含义

result

Boolean

true表示成功,false表示失败

returnCode

string

返回状态码,详细见1.6附表

message

string

状态信息

1.5 订阅响应报文示例(json格式)

代码语言:txt
复制
{

"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)

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派件,6退回,7转单,10待清关,11清关中,12已清关,13清关异常,14收件人拒签等13个状态

status

Integer

通讯状态,请忽略

condition

String

快递单明细状态标记,暂未实现,请忽略

ischeck

Integer

是否签收标记,请忽略,明细状态请参考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标记后才会出现

└areaCode

String

本数据元对应的行政区域的编码,只有实时查询接口中提交resultv2标记后才会出现

└areaName

String

本数据元对应的行政区域的名称,只有实时查询接口中提交resultv2标记后才会出现

2.4 推送输入参数示例

代码语言:txt
复制
param = {

&#34;status&#34;: &#34;polling&#34;,

&#34;billstatus&#34;: &#34;got&#34;,

&#34;message&#34;: &#34;&#34;,

&#34;autoCheck&#34;: &#34;1&#34;,

&#34;comOld&#34;: &#34;yuantong&#34;,

&#34;comNew&#34;: &#34;ems&#34;,

&#34;lastResult&#34;: {

	&#34;message&#34;: &#34;ok&#34;,

	&#34;state&#34;: &#34;0&#34;,

	&#34;status&#34;: &#34;200&#34;,

	&#34;condition&#34;: &#34;F00&#34;,

	&#34;ischeck&#34;: &#34;0&#34;,

	&#34;com&#34;: &#34;yuantong&#34;,

	&#34;nu&#34;: &#34;V030344422&#34;,

	&#34;data&#34;: [{

		&#34;context&#34;: &#34;上海分拨中心/装件入车扫描 &#34;,

		&#34;time&#34;: &#34;2012-08-28 16:33:19&#34;,

		&#34;ftime&#34;: &#34;2012-08-28 16:33:19&#34;,

		&#34;status&#34;: &#34;在途&#34;,

		&#34;areaCode&#34;: &#34;310000000000&#34;,

		&#34;areaName&#34;: &#34;上海市&#34;

	}, {

		&#34;context&#34;: &#34;上海分拨中心/下车扫描 &#34;,

		&#34;time&#34;: &#34;2012-08-27 23:22:42&#34;,

		&#34;ftime&#34;: &#34;2012-08-27 23:22:42&#34;,

		&#34;status&#34;: &#34;在途&#34;,

		&#34;areaCode&#34;: &#34;310000000000&#34;,

		&#34;areaName&#34;: &#34;上海市&#34;

	}],

	&#34;routeInfo&#34;: {

		&#34;from&#34;: {

			&#34;number&#34;: &#34;CN3100&#34;,

			&#34;name&#34;: &#34;上海市&#34;

		},

		&#34;cur&#34;: {

			&#34;number&#34;: &#34;CN6101&#34;,

			&#34;name&#34;: &#34;陕西,西安市&#34;

		},

		&#34;to&#34;: {

			&#34;number&#34;: &#34;CN6101&#34;,

			&#34;name&#34;: &#34;陕西,西安市&#34;

		}

	},

	&#34;isLoop&#34;: false,

	&#34;trailUrl&#34;: &#34;https://api.kuaidi100.com/tools/map/bc80574d538262aecc897a469151f0e3&#34;,

	&#34;arrivalTime&#34;: &#34;2020-12-19 12:00&#34;,

	&#34;totalTime&#34;: &#34;2天1小时&#34;,

	&#34;remainTime&#34;: &#34;1天2小时&#34;

}

}

2.5 轨迹链接应用示例

<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2a1e3b91df2e4db8afb5eefc50d76c6f~tplv-k3u1fbpfcp-zoom-1.image" style="zoom:60%">

重要提醒:

(1)对于status= abort而且message中包含“3天”关键字而且comNew为空的快递单,需要增加以下处理逻辑:

  • 如果有专门的工作人员,可以:将快递单罗列给工作人员,由工作人员判断此单是否为假单:如果此单是真实单,则将此单重新向快递100提交一次;如果此单是假单,则将此单标记为假单,而且不再将此单提交给快递100。如果没有专门的工作人员,请直接用以下第二种方法进行操作;
  • 如果没有专门的工作人员,可以:在收到status=abort而且message中包含“3天”关键字而且comNew为空的提示10分钟后,将此快递单重新向快递100提交订阅,如果重新提交后仍然收到status= abort,则再次重新向快递100提交,如此,在同一月中如果重复提交3~4次都仍然收到status= abort,则此单为假单,不需要再将此单提交给快递100。

对于同一自然月内重复提交的快递单,结算时只计一次费用,对于跨了两个自然月重复提交的结算单,结算两次费用。

(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中填写如下内容:

代码语言:txt
复制
{

"result":true,

"returnCode":"200",

"message":"成功"

}

注意:对于status= abort(message中包含“3天查询无记录”或者“60天无变化”)的快递单,也需要返回成功接收的响应报文及代码。

2.8 运单签收状态(已签收、退回等)增值服务说明

代码语言:txt
复制
默认状态下,在推送时我们提供了ischeck字段表示快递单是否签收(含正常签收,退回签收两种情况),通过state字段提供签收的具体状态,state具体如下: 

状态值

名称

含义

0

在途

快件处于运输过程中

1

揽收

快件已由快递公司揽收

2

疑难

快递100无法解析的状态,或者是需要人工介入的状态, 比方说收件人电话错误。

3

签收

正常签收

4

退签

货物退回发货人并签收

5

派件

货物正在进行派件

6

退回

货物正处于返回发货人的途中

7

转投

货物转给其他快递公司邮寄

10

待清关

货物等待清关

11

清关中

货物正在清关流程中

12

已清关

货物已完成清关流程

13

清关异常

货物在清关过程中出现异常

14

拒签

收件人明确拒收

签收状态服务能够对目前市面上大多数快递单状态进行准确判定。

若state=0,则condition如下值代表如下状态:

状态值

名称

含义

CU001

等待清关

货物等待清关

CU002

清关中

货物正在清关流程中

CU003

已清关

货物已完成清关流程

CU004

清关异常

货物在清关过程中出现异常

JQ001

收件人拒签

收件人明确拒收

三、快递公司编码

<a href="https://api.kuaidi100.com/manager/openapi/download/kdbm.do" style="color: #027eff;" target="_blank"><u>下载表格</u></a>

一、地图轨迹推送服务API产品介绍

快递100地图轨迹推送服务接口提供快递单号的地图轨迹展示、物流节点文字信息及预计送达时间,可视化展示物流轨迹信息。

通过地图轨迹推送服务接口,企业提交快递单号,快递100接收到后便对这些运单进行跟踪,当运单状态发生变化的时候,快递100便通过调用回调接口将运单的跟踪信息和地图轨迹推送给贵公司,直到这些运单号的生命周期结束(一般以“已签收”为准)。对于某个单号,当贵方正确提交订阅了后,我们一般会在15分钟左右后进行第一次监控,如果监控到单号本身有了跟踪信息,即进行第一次推送,否则等待下一次监控。此后我们一般每4小时进行一次监控,并会根据单号的状态等因素作调整。

二、地图轨迹推送服务API应用场景

  1. 让顾客登录您的网站、APP、小程序后,直接在“我的订单”页面内就能看到订单的物流状态和快递地图轨迹;
  2. 和物流轨迹文字信息一同展示给顾客,可视化订单的在途状态;
  3. 获得物流途径城市的信息,监控快递时效;
  4. 预估包裹的到达时间,以及提示包裹还需多长时间到达,识别快递状态·,发送提醒客户签收短信;
  5. 能开发自动的、批量查单功能,自动筛选出“已签收”、“疑难件”等状态的单号,减轻跟单人员的压力;
  6. 改变订单的状态与交易流程,例如只要运单号变为“已签收”,就能让订单变更为可以确认退换货等;
  7. 核销销售人员,根据“已签收”的运单数,就能算出销售人员的业绩;
  8. 评估与选择快递公司,可获得快递实际在途时间,评估快递公司的时效,优化快递选择;
  9. 助结算运费,找出“已签收”的单及签收时间,便能轻松应对货到付款的结算与对账;

三、系统结构与流程

<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0fc2759fd0754030a6992d61b6e363ec~tplv-k3u1fbpfcp-zoom-1.image" alt="img" style="zoom: 67%;" />

四、快递信息推送API费用结算

1.收费方式

地图轨迹推送服务属于增值类服务,该服务同时支持物流文字信息以及地图链接,即包含了快递信息推送服务的功能。注册快递100企业账号后可以在企业管理后台查看地图轨迹套餐价格并购买。

2.收费价格

新品限时特惠,活动时间:2021年1月1日-2021年3月31日,充值后即可开通使用。

原价/元

优惠价/元

单量

赠送/单

优惠单价/元

3000

2000

20000

5000

0.08

1500

1000

10000

2000

约0.084

750

500

5000

500

约0.09

150

100

1000

0.1

快递查询地图轨迹按单计费,一个自然月内同一个运单多次查询只收一次费用。该接口单独计费。

3. 开具发票

快递100支持开具增值税发票,用户购买完成后可在企业管理后台-费用中心-支付记录-请求开票。默认开具电子增值税普通发票,1000元以上可支持开具增值税专用发票。

官方源文档:

https://api.kuaidi100.com/document/603f45a0a52d305ab4d2a078.html

https://api.kuaidi100.com/document/5eb9f5a886b0df41883139f3.html

https://api.kuaidi100.com/document/5eb9f73186b0df4188313a03.html

https://api.kuaidi100.com/document/603f47dfa62a19500e19866f.html