前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常用快递鸟物流信息查询接口-查询快递信息API接口对接指南

常用快递鸟物流信息查询接口-查询快递信息API接口对接指南

原创
作者头像
用户4199839
修改2022-03-29 16:57:56
1.5K0
修改2022-03-29 16:57:56
举报

零售电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用户打开“我的订单”时调用此API显示物流信息详情,电商管理后台的物流系统,客服在对账前查询所有运单的签收状态,并追踪问题,电商平台对商家物流管控,要求必须在多久快递必须发出要看到揽件状态,多久必须收到货物看到签收状态,根据这些状态对商家管控从而提高用户的整体满意度。

调用快递鸟快递单号查询API接口,就能查询到1600多家以上快递公司单号从收件、运输,到转运中心,派送到签收等各个环节的物流发货状态。快递鸟api接口不区分开发语言,支持Java,C#,PHP,Python,ObjectC等开发语言的程序调用。下面具体讲解实现过程:

对接流程:

1、将快递单号和快递公司编码发送給快递鸟

2、快递鸟根据单号和快递公司查询到物流轨迹状态

3、快递鸟将查询到的物流轨迹状态反馈給电商平台或ISV服务商

4、电商平台或ISV服务商接收数据并实时处理做数据展示或应用

申请服务

1.申请服务这块也是在首页控制面板中,产品服务区域查看,可点击立即开通,进入服务详情页,按需开通即可

2.开通后的服务,可在左侧菜单《我的产品服务》中查看到

3.点进具体的服务详情,可以看到服务订单使用量情况,30天使用趋势图,以及可以设置余量提醒等等

技术对接

官网API

1.点击官网API接口菜单,进入快递鸟API详情介绍页

2.我们可以看到API大致分为三大类:下单类接口、查询类接口、增值类接口

3.以即时查询为例,点击即时查询API后,我们可以看到右侧有对此接口的描述、应用场景介绍、功能说明、使用流程、API参数、接入流程以及Demo下载 。(等不及了的小伙伴 可以直接去看Demo)

4.我们看到功能说明中,此接口可以免费500/日对外开放

5.在API参数那块要注意,每个不同的请求,都对应一个接口指令,这个指令不能错

另外,在快递鸟公司官网的接口文档菜单中,我们可以看到为我们提供了以下文档信息

其中,建议如果有小伙伴要接入快递鸟,可以优先着重查看下接口说明文档,里面对请求报文、数据传输格式,请求参数以及返回字段等都有详细的描述说明。

我们先来看看报文的规范如下:

报文及报文编码

报文格式: Json 格式请求方法的编码格式(utf-8): "application/x-www-form-urlencoded;charset=utf-8"交互协议上统一用 UTF-8, 避免传递中文数据出现乱码。

接口数据包结构

Json示例

系统及参数

签名说明

快递鸟和第三方电子商务公司系统进行对接, 有一定的安全机制。 采用 IP 认证加签名的方式对接,具体方案如下:1.防止数据被篡改

在 POST 请求中会传递 5 个必须(R)参数

RequestData==数据内容(URL 编码:UTF-8)EBusinessID==用户 IDRequestType=请求指令类型DataSign== 数据内容签名: 把(请求内容(未编码)+ApiKey)进行 MD5 加密, 然后 Base64编码, 最后进行 URL(utf-8)编码DataType==2(返回数据类型为 json) 注:DataSign 生成后, 对方接收到数据后, 以同样的算法进行签名(推送接口 RequestType 为101/102 不需要进行 URL 编码), 生成摘要, 对比两者的摘要是否相同, 如果不同, 说明传递过程中发生数据篡改。

2.调用接口的身份认证

注册成为快递鸟用户后, 会生成对应的用户 ID 和 APIKey, 用户 ID 相当于用户名,APIKey相当于密码。假设

imag那么DataSign签名的内容为

接收方收到数据后,获得EBusinessID 和 RequestData 和 DataSign 等这几个数据。 接收方对 EBusinessID 得到 APIKey, RequestData+APIKey 的数据进行md5 和 base64 后的内容就为

OWFhM2I5N2ViM2U2MGRkMjc4YzU2NmVlZWI3ZDk0MmE=

接收方判断签名后的数据跟传递过来的 DataSign 是否一致, 如果一致进行业务操作, 如果不一致返回错误。C#版电商Sign签名范例:

完整代码详见:https://zhuanlan.zhihu.com/p/270373189

代码实现

好了,有了以上的接口基础,我们可以开始直接撸码了,我们这里环境使用到的是.NET Core 3.1版本。我们先以自动识别快递单号接口为例,可实现如下效果。

当我们输入申通快递单号时,左侧快递公司下拉框会自动识别到当前快递公司为申通,中通亦是如此。

那如何实现呢,我们话不多说,开整(默认看到这里的小伙伴 有编程基础,有建基础项目的能力,跳过基础步骤)。

根据接口描述:该接口仅对运单号做出识别,识别可能属于的一家或多家快递公司。

我们定义出如下Model,仅供参考

我们需要一个服务,来实现我们根据运单号获取一个或多个快递公司的功能,推荐使用异步编程

其中,BaseAction用于所有的基础请求,我们需要传入请求数据和请求接口类型即可

上述代码中Encryption类为自定义类,类中包含了Sign签名方法、字符串MD5加密方法以及对内容的Base64编码,该类如下:

这样,我们的代码就写的差不多了,我们来调试看看究竟能否获取成功:

从图中可以看出,最终result 返回了正确的识别结果,这样,我们的自动识别api到这里算已经对接成功了,下面我们再来看一看即时查询API对接上有何不同。

同样的,我们需要定义一个服务来实现获取物流轨迹的功能,看接口文档描述,我们需要传入快递公司编码和快递单号,我们从支持的公司编码表中看到

常见的快递物流公司编码格式都在此。那我们的服务 就可以很快定义出来了,如下:

注:上述对expressCode有个判断,是否为顺丰,若为顺丰,按照快递鸟接口文档所述,需要另外多传入一个CustomerName的参数,参数内容为收件人/寄件人手机号尾数后四位。

我们只需要写一个获取方法,复用我们的BaseAction即可,我们来调试看看获取情况:

最终,我们再返回的result中看到了返回的物流信息。这样,我们就得到了自己所需要的数据,

ps:除了国内常见的快递公司,快递鸟还支持国内外众多快递公司,具体详情可以查看快递公司编码

联调测试

在开发过程中,需要不断对服务中的代码进行测试,尝尝要判断一些不同的情况,比如:快递单号错误、快递公司选择错误等等诸如此类的问题

常见问题

这里列举的常见问题,一部分是我在对接过程中遇到的,如果大家在对接过程中,也有此类问题,可以参考参考。

1.关于顺丰查询输入手机尾号的问题,若某一单号此前没有查询过物流信息,输入错误手机尾号,将不会返回任何物流信息,若此前查询过,输入错误的手机尾号,返回的将是缓存数据,看图说话

注:上图中进行了三次查询,第一次输入顺丰单号,用0000手机尾号(错误的号码)查询,结果为暂无物流显示,第二次采用正确的7517手机尾号查询,结果返回正确的物流数据,第三次采用9999(错误的号码)查询,结果返回的是缓存第一次查询后的物流数据(不会更新)

2、快递编码表中的顺丰速运和中通快递,在快递单号识别API中 返回的名字是不一致的

3.免费接口仅支持四家主流快递的查询(申通、圆通、百世、天天),不支持其他主流快递查询。

项目源码

git源码下载: https://github.com/XiaoYong666/KdAPI_Demo

在线演示:http://kdn.fuyue.xyz/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档