前两天需要做一个快递查询的需求,由于也是第一次做,完全不懂,但是还是明白这必定是需要调用外部接口来实现,并且应该不是调用快递公司所给的接口,于是便上网查询了能够提供快递查询接口的公司。
目前国内主流的快递物流查询API接口服务商目前只有三家,分别是菜鸟、快递鸟、快递100,这三家都分别获得了融资,菜鸟是阿里投资的,为淘系(淘宝和天猫)服务,快递鸟是中银粤财、东方富海、启赋资本投资的,为非淘系(拼多多、蘑菇街、网易考拉等)服务,快递100是京东、国信弘盛投资的,为京东、百度等服务。
还有一些像阿里云是应用市场平台,入驻这类的平台的很多服务商都是用的快递鸟免费物流接口(这家产品介绍用的都是快递鸟官网的图),因为菜鸟和快递100都是收费的(融资信息可以在投资界网站上查看)。
快递API的应用场景与用途
最常见的应用场景如下:
(1)电商网站:例如B2C、团购、B2B、批发分销站、C2C、本地生活交易等网站。
(2)管理系统:订单处理平台、订货平台、发货平台、分销系统、渠道管理系统、客户管理系统、ERP等。
快递API的用途如下:
(1)让顾客登录网站后,直接在“我的订单”页面内就能看到订单的物流状态。
(2)自动筛选出“已签收”、“疑难件”等状态的单号,减轻物流跟单人员的压力。
(3)改变订单的状态和交易流程,例如单号变为“已签收”,就能让订单变为可以确认退换货等。
(4)评估选择快递公司,根据“已签收”的运单数,可以算出销售人员的业绩,且便于应对货到付款的结算。
(5)邮件、短信提醒用户运单的最新状态,可以安抚用户,也可以利用邮件短信二次营销。
如果自己的网站是非淘系京东系的话,这边建议使用快递鸟,所以就以快递鸟作为案例进行解说吧.
注册快递鸟账号
注册这里就不演示了,注册完成后登入,进入到个人中心,这里需要进行一个实名认证,按公司产品的类型进行一个选择,展示页面如图1,认证完成后在我的产品服务中选择自己所需要的服务,当然对于初创型公司来说选择免费版就够了,等到业务做大时再选择其他产品服务.还有就是在个人中心中如图2所示,我们需要记住的是用户ID,和API key(不要泄露),这将是我们进行接口调用时需要用到的,
- 接口规则
(1)、查询接口支持按照运单号查询(单个查询,并发不超过10个/S)。
(2)、指定的物流运单号选择相应的快递公司编码,格式不对或则编码错误都会返失败的信息。如EMS物流单号应选择快递公司编码(EMS)
(3)、返回的物流跟踪信息按照发生的时间升序排列。
(4)、接口指令1002。
(5)、请求地址:快递鸟 - 系统级和应用级输入参数
3.返回参数
请求示例:<br>{ "OrderCode": "", "ShipperCode": "SF", "LogisticCode": "118650888018"}//返回示例<br>//没有物流轨迹的{ "EBusinessID": "1109259", "Traces": [], "OrderCode": "", "ShipperCode": "SF", "LogisticCode": "118461988807", "Success": true, "Reason": null}//有物流轨迹的{ "EBusinessID": "1109259", "OrderCode": "", "ShipperCode": "SF", "LogisticCode": "118461988807", "Success": true, "CallBack":"", "State": , "Reason": null, "Traces": [ { "AcceptTime": "2019/06/25 08:05:37", "AcceptStation": "正在派件..(派件人:邓裕富,电话:18718866310)[深圳 市]", "Remark": null }, { "AcceptTime": "2019/06/25 04:01:28", "AcceptStation": "快件在 深圳集散中心 ,准备送往下一站 深圳 [深圳市]", "Remark": null }, { "AcceptTime": "2019/06/25 01:41:06", "AcceptStation": "快件在 深圳集散中心 [深圳市]", "Remark": null }, { "AcceptTime": "2019/06/24 20:18:58", "AcceptStation": "已收件[深圳市]", "Remark": null }, { "AcceptTime": "2019/06/24 20:55:28", "AcceptStation": "快件在 深圳 ,准备送往下一站 深圳集散中心 [深圳市]", "Remark": null }, { "AcceptTime": "2019/06/25 10:23:03", "AcceptStation": "派件已签收[深圳市]", "Remark": null }, { "AcceptTime": "2019/06/25 10:23:03", "AcceptStation": "签收人是:已签收[深圳市]", "Remark": null } ]}
2接收接口
这个是用户在订阅单号成功且有物流轨迹更新后,快递鸟的推送
客户通过下单、订阅接口,把运单号在快递鸟系统订阅。运单物流信息有更新,快递鸟通过推送接口把更新的信息推送给客户。推送接口由用户按照快递鸟规则实现。商户开放接口,快递鸟定时将最新的物流轨迹推送到商户平台。
优点:客户不需要关注轨迹变化,一旦有更新,快递鸟自动推送。
缺点:对客户的服务器性能有所要求,快递鸟定时请求接口,对客户的服务器有一定的影响,客户服务器异常将接受不到最新数据。
快递鸟推送接口根据业务不同,会根据RequestType的分类推送不同的数据,用户需对推送的数据进行分类保存。原推送接口无需变化,快递鸟会根据推送版本进行推送。
- 接口规则
(1)、客户服务器必须稳定,并且有一定的接受数据能力(需要在5S内给快递鸟返回成功示例,超时会判断推送失败)。快递鸟通过多线程推送物流信息给客户。
(2)、客户需要按快递鸟要求开发接口,保证信息的正常接收。客户接数据后,存储并马上返回接收响应。如果客户对数据进行处理,再做出响应。这会造成网络超时,传输效率低下。
(3)、主动推送时物流信息接收接口由客户提供,接口必须按照快递鸟的要求实现。
(4)、客户提供接口地址,用户登陆用户管理后台-----调试平台-----推送接口进行测试---(成功返回示例后)才可以配置。
(5)、接口只支持Json数据格式。
(6)、POST方式请求。
示例://快递鸟请求接收接口示例<br>订阅查询结果示例: { "EBusinessID": "1109259", "Count": "2", "PushTime": "2015-03-11 16:21:06", "Data": [ { "EBusinessID": "1109259", "OrderCode": "", "ShipperCode": "EMS", "LogisticCode": "5042260908504", "Success": true, "Reason": "", "State": "2", "CallBack": "0", "Traces": [ { "AcceptTime": "2015-03-06 21:16:58", "AcceptStation": "深圳市横岗速递营销部已收件,(揽投员姓名:钟定基;联系电话:)", "Remark": "" }, { "AcceptTime": "2015-03-07 14:25:00", "AcceptStation": "离开深圳市 发往广州市", "Remark": "" }, { "AcceptTime": "2015-03-08 00:17:00", "AcceptStation": "到达广东速递物流公司广航中心处理中心(经转)", "Remark": "" }, { "AcceptTime": "2015-03-08 01:15:00", "AcceptStation": "离开广州市 发往北京市(经转)", "Remark": "" }, { "AcceptTime": "2015-03-09 09:01:00", "AcceptStation": "到达北京黄村转运站处理中心(经转)", "Remark": "" }, { "AcceptTime": "2015-03-09 18:39:00", "AcceptStation": "离开北京市 发往呼和浩特市(经转)", "Remark": "" }, { "AcceptTime": "2015-03-10 18:06:00", "AcceptStation": "到达 呼和浩特市 处理中心", "Remark": "" }, { "AcceptTime": "2015-03-11 09:53:48", "AcceptStation": "呼和浩特市邮政速递物流分公司金川揽投部安排投递(投递员姓名:安长虹;联系电话:18047140142)", "Remark": "" } ] }, { "EBusinessID": "1109259", "OrderCode": "", "ShipperCode": "EMS", "LogisticCode": "5042260943004", "Success": true, "Reason": "", "State": "2", "CallBack": "0", "Traces": [ { "AcceptTime": "2015-03-07 15:26:09", "AcceptStation": "深圳市横岗速递营销部已收件,(揽投员姓名:周宏彪;联系电话:13689537568)", "Remark": "" }, { "AcceptTime": "2015-03-08 16:32:00", "AcceptStation": "离开深圳市 发往广州市", "Remark": "" }, { "AcceptTime": "2015-03-09 00:58:00", "AcceptStation": "到达广东速递物流公司广航中心处理中心(经转)", "Remark": "" }, { "AcceptTime": "2015-03-09 01:15:00", "AcceptStation": "离开广州市 发往北京市(经转)", "Remark": "" }, { "AcceptTime": "2015-03-10 05:20:00", "AcceptStation": "到达北京黄村转运站处理中心(经转)", "Remark": "" }, { "AcceptTime": "2015-03-10 11:59:00", "AcceptStation": "离开北京市 发往廊坊市(经转)", "Remark": "" }, { "AcceptTime": "2015-03-10 14:23:00", "AcceptStation": "到达廊坊市处理中心(经转)", "Remark": "" }, { "AcceptTime": "2015-03-11 08:55:00", "AcceptStation": "离开廊坊市 发往保定市(经转)", "Remark": "" } ] } ] }
货款状态:
{
"EBusinessID": "1109259",
"Count": "2",
"PushTime": "2015/3/11 16:21:06",
"Data": [
{
"EBusinessID": "1109259",
"OrderCode": "",
"ShipperCode": "EMS",
"LogisticCode": "5042260908504",
"Success": true,
"Reason": "",
"State": "2",
"CallBack": "0",
"OrderState":"1",
"AccountName":"张三",
"AccountTel":"13800000000",
"AccountNum":"0321"
},
{
"EBusinessID": "1109259",
"OrderCode": "",
"ShipperCode": "EMS",
"LogisticCode": "5042260908522",
"Success": true,
"Reason": "",
"State": "2",
"CallBack": "0",
"OrderState":"1",
"AccountName":"张三",
"AccountTel":"13800000011",
"AccountNum":"0321"
}
]
}
来源:https://blog.51cto.com/14466758/2431472