物流查询
功能简介
利用前端事件,调用阿里云物流查询接口,实现输入快递单后,快捷查询出快递公司、物流时间、状态等详细信息。
实现步骤
1 准备物流查询接口
1.1 购买接口
首先我们需要找到一个物流信息查询接口,这里以阿里云官方的接口为例,介绍利用前端事件接入物流查询接口实现物流查询功能。
物流查询接口:全球快递API接口
可以看到,此接口新用户可以0元购买100次,购买后可以在云市场看到购买的订单。
1.2 接口分析
接下来,点击接口,往下翻到 API 接口的详情介绍,对 [快递物流节点跟踪] 的接口进行分析。
【调用地址】:http://ali-deliver.showapi.com/showapi_expInfo 或 https://ali-deliver.showapi.com/showapi_expInfo
【请求方式】:GET
【返回类型】:JSON
【请求的Headers】:Authorization: APPCODE +英文空格+ 你自己的 APPCODE(服从阿里云云市场的标准鉴权方式)
Authorization:APPCODE AppCode值
【请求参数】
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
callback_url | STRING | 可选 | 本接口提供实时查询和异步查询两种方式。异步方式具体说明请参考“产品详情”下的“产品使用常见问题”。 该参数为一个有效的、能接收数据的URL地址,如:http://www.xxxx.cn/express.do。设置该参数即为使用异步方式,否则为实时查询。 |
com | STRING | 必选 | 快递公司字母简称,可以从接口"快递公司查询" 中查到该信息 可以使用"auto"代替表示自动识别,不推荐大面积使用auto,建议尽量传入准确的公司编码。 |
nu | STRING | 必选 | 快递单号 |
phone | STRING | 可选 | 收/寄件人手机号后四位,顺丰快递必须填写本字段。 |
【正常返回示例】:
字段说明
{
"update": "更新时间戳",
"upgrade_info": "提示信息,用于提醒用户可能出现的情况",
"updateStr": "更新时间",
"logo": "快递公司logo",
"dataSize": "数据节点的长度",
"status": "快递状态 1 暂无记录 2 在途中 3 派送中 4 已签收 (完结状态) 5 用户拒签 6 疑难件 7 无效单 (完结状态) 8 超时单 9 签收失败 10 退回",
"fee_num": "计费次数。例如:0为计费0次,即不计费;1为计费1次",
"tel": "快递公司联系方式",
"data": "在途跟踪数据",
"- time": "物流跟踪发生的时间",
"- context": "物流跟踪信息",
"expSpellName": "快递编码",
"msg": "返回提示信息",
"mailNo": "快递单号",
"queryTimes": "无走件记录时被查询次数 注意:在24小时内,查询次数>10次将会计费",
"ret_code": "0 查询成功 或 提交成功。 1 输入参数错误。 2 查不到物流信息。 3 单号不符合规则。 4 快递公司编码不符合规则。 5 快递查询渠道异常。 6 auto时未查到单号对应的快递公司,请指定快递公司编码。 7 单号与手机号不匹配 其他参数:接口调用失败",
"flag": "true:查询成功,表示ret_code=0且data的长度>0。可使用本字段做是否读取data列表的依据。 false:查询失败。",
"expTextName": "快递简称",
"possibleExpList": "自动识别结果"
}
示例
{
"showapi_res_error": "",
"showapi_fee_num": 1,
"showapi_res_code": 0,
"showapi_res_id": "628ed5cc0de3769f067c7806",
"showapi_res_body": {
"update": 1653528013043,
"upgrade_info": "",
"updateStr": "2022-05-26 09:20:13",
"logo": "http://static.showapi.com/app2/img/expImg/yuantong.jpg",
"dataSize": 11,
"status": 4,
"fee_num": 1,
"tel": "021-69777888/95554",
"data": [
{
"time": "2022-05-19 20:25:29",
"context": "客户签收人: 已签收,签收人凭取货码签收。 已签收 感谢使用圆通速递,期待再次为您服务 如有疑问请联系:13*******11,投诉电话:13*******11 疫情期间圆通每天对网点多次消毒,快递小哥新冠疫苗已接种,每天测量体温,佩戴口罩"
},
{
"time": "2022-05-19 10:11:11",
"context": "包裹已经到达附近街区,安排派送中,如有疑问请联系13*******11"
},
{
"time": "2022-05-19 09:35:46",
"context": "【云南省昆明市新迎凉亭分部公司】 派件中 派件人: 张胜华 电话 13********11 圆通快递小哥新冠疫苗已接种,每天已测体温,请放心收寄快递 如有疑问,请联系:13*******11"
},
{
"time": "2022-05-19 04:36:19",
"context": "【云南省昆明市新迎公司】 已收入"
},
{
"time": "2022-05-18 17:06:56",
"context": "【昆明转运中心】 已发出 下一站 【云南省昆明市新迎公司】"
},
{
"time": "2022-05-18 17:01:48",
"context": "【昆明转运中心公司】 已收入"
},
{
"time": "2022-05-18 01:08:52",
"context": "【成都转运中心】 已发出 下一站 【昆明转运中心公司】"
},
{
"time": "2022-05-18 01:08:45",
"context": "【成都转运中心公司】 已收入"
},
{
"time": "2022-05-17 22:10:46",
"context": "【四川省成都市大丰】 已发出 下一站 【成都转运中心公司】"
},
{
"time": "2022-05-17 21:26:31",
"context": "【四川省成都市大丰公司】 已打包"
},
{
"time": "2022-05-17 21:25:56",
"context": "【四川省成都市大丰公司】 已揽收 取件人:xxx (13*******11)"
}
],
"expSpellName": "yuantong",
"msg": "查询成功",
"mailNo": "YT6493188734653",
"queryTimes": 1,
"ret_code": 0,
"flag": true,
"expTextName": "圆通速递",
"possibleExpList": []
}
}
【错误码定义】:
错误码 | 错误信息 | 描述 |
---|---|---|
错误码 0 | ret_code=0 | 查询成功 |
错误码 1 | ret_code=1 | 输入参数错误 |
错误码 2 | ret_code=2 | 查不到物流信息 |
错误码 3 | ret_code=3 | 单号不符合规则 |
错误码 4 | ret_code=4 | 快递公司编码不符合规则 |
错误码 5 | ret_code=5 | 快递查询渠道异常 |
错误码 6 | ret_code=6 | auto时未查到单号对应的快递公司,请指定快递公司编码 |
错误码 7 | ret_code=7 | 单号与手机号不匹配 |
2 表单设计
新建物流查询表单,设计字段:
字段名称 | 字段类型 |
---|---|
快递单号 | 单行文本 |
物流公司 | 单行文本 |
物流信息 | 子表单 |
物流时间 | 子字段-单行文本 |
物流状态 | 子字段-单行文本 |
3 前端事件配置
3.1 设置入口
表单设计页选择 [快递单号] 字段,在 [字段属性]>>[功能扩展设置],选择[前端事件],新建前端事件。
可选择焦点触发或按钮触发,按钮名称可自定义。
3.2 设置事件名称&说明
添加好前端事件后,首先设置前端事件的基础信息,即事件名称和事件说明,用于区分前端事件:
3.3 设置请求类型&URL
根据阿里云接口的介绍,可得到接口的请求类型和URL,我们可以按以下内容填入:
-
请求类型:GET
-
URL:
https://ali-deliver.showapi.com/showapi_expInfo?nu=快递单号&com=auto
快递单号为表单字段
3.4 Header/Body设置
Hearder:
Authorization=APPCODE+英文空格+自己的 APPCODE
此物流接口是 GET 请求,无Body设置。
3.5 返回值格式&返回值设置
-
返回值格式选择 JSON
-
返回值设置页面,添加 [物流公司]、[物流信息.物流时间]、[物流信息.物流状态]字段为其设置返回值:
[物流公司]:
$.showapi_res_body.expTextName
[物流信息.物流时间]:
$.showapi_res_body.data[*].time
[物流信息.物流状态]:
$.showapi_res_body.data[*].context
3.6 返回值错误判定
根据接口返回的错误码,我们可以设置返回值错误判定,当返回判定错误时弹出提示。
设置:当ret_code不等于0时,返回查询失败
获取ret_code的值:
$.showapi_res_body.ret_code