1. 简介
三方头程物流文档
2. 环境要求及基础约定
授权:logisticsKey(物流颁发给用户的key)、logisticsSecret(物流颁发给用户的secret)。
请求方式:
- Method: POST
- Content-Type: application/json
公共请求:
| 字段名 | 类型 | 必填 | 备注 |
|---|---|---|---|
| logisticsKey | String | 是 | |
| method | String | 是 | 接口方法名 |
| content | String | 是 | 业务参数 |
| sign | String | 是 | 签名 |
header参数:
| 字段名 | 类型 | 必填 | 备注 |
|---|---|---|---|
| logisticsType | String | N | 物流类型 |
| authInfo | String | N | gwms传物流商这边用到的授权信息。json格式 |
| apiUrl | String | N | 服务请求域名: https://www.baidu.com |
authInfo 传值举例: "authInfo": [ {"authInfoKey":"LOGISTICS_KEY", "value":"BG2447"}, {"authInfoKey":"LOGISTICS_SECRET", "value":"f1dafc7b7c934d21327d990b0ea56cfcf4814ef699345a37010c07e02d5219a9"} ] 其中,MERCHANT_ID,SECRET_KEY,PRINT_SIZE均为物流商约定要传的字段,不同的物流商字段可能不同,都通过 json格式统一请求。
公共响应:
| 字段名 | 类型 | 必填 | 备注 |
|---|---|---|---|
| success | boolean | 是 | 业务处理是否成功 |
| message | String | 否 | 业务处理异常消息 |
签名方式:
1、将logisticsKey和content组成json字符串{"logisticsKey":"logisticsKey","content":"具体业务参数"},content为空时{"logisticsKey":"logisticsKey"}
2、将第三方分配的客户logisticsSecret添加到json的末尾,得到待加密字串{"logisticsKey":"logisticsKey","content":"具体业务参数"}logisticsSecret
3、对待加密字串做sha1加密得到签名(org.apache.commons.codec.digest.DigestUtils.sha1Hex(待加密字串))
4、将签名赋值到公共请求的sign字段
3. 物流授权
方法名:
- auth
接口参数:
| 字段名 | 字段描述 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| openAppKey | opapiKey | String | 否 | |
| openAppSecret | opapiSecret | String | 否 |
返回信息:
| 字段名 | 字段描述 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| success | 结果状态 | boolean | 是 | |
| message | 失败时原因 | String | 否 |
请求示例:
{ "appKey": "3215435", "method": "getTrackingInfo", "content": "{\"logisticsSecret\":\"testKey\",\"appKey\":\"dfa32423423",\"appSecret\":\"dfs2323\"}", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例: { "success": "true", "message": "" }
4. 渠道列表
方法名:
- channels
接口参数:
返回信息:
| 字段名 | 字段描述 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| channelList | 渠道信息 | Array | ||
| └ channelCode | 渠道代码(物流方式、物流产品) | String | 是 | 需具有唯一性 |
| └ channelName | 渠道名称 | String | 是 | |
| └ carrierName | 承运商名称 | String | 否 | |
| └ carrierCode | 承运商编码 | String | 否 | |
| └ transportType | 运输方式 | String | 是 |
请求示例:
{ "appKey": "3215435", "content": "", "method": "channels", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例:
{ "success": "true", "message": "", "channelList": [ { "channelCode": "FedexGround", "channelName": "FedEx Ground", "carrierName": "FEDEX", "transportType": "" } ] }
5. 订阅物流轨迹
方法名:
- subscribe
接口参数:
| 字段名 | 字段描述 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| orderList | 订单列表 | Array | 否 | |
| └ orderNumber | 订单号 | String | 否 | |
| └ trackingNumber | 运单号 | String | 是 |
返回信息:
| 字段名 | 字段描述 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| orderList | 失败列表 | Array | 否 | 返回订阅失败订单,全部成功时为空 |
| └ orderNumber | 订单号 | String | 是 | |
| └ trackingNumber | 运单号 | String | 是 | |
| └ errorMessage | 失败原因 | String | 是 |
请求示例:
{ "success": "true", "message": "", "data": [ { "trackingNumber": "DS35841212312", "orderNumber": "orderNumber", "errorMessage": "运单不存在" } ] }
6. WebHooks
6.1. 推送物流轨迹
接口地址:
线下:http://open-test1.800best.com/open-platform-api/logistics
生产:https://open-prod.800best.com/open-platform-api/logistics
方法名:
- pushLogistics
接口参数:
| 字段名 | 字段描述 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| customerNumber | 千易订单号 | String | 是 | |
| carrierName | 承运商名称 | String | 是 | |
| trackingNumber | 运单号 | String | 是 | |
| status | 运单状态 | String | 是 | CREATED(待揽收) SHIPPED(已揽收) IN_TRANSIT(运输中) OUT_FOR_DELIVERY(派送中) DELIVERED(已送达) UNDELIVERABLE(无法派送) DELAYED(延迟派送) RETURNING(退回中) RETURNED(已退回) |
| stageList | 阶段信息 | Array | 是 | |
| └ status | 阶段状态 | String | 是 | |
| └ number | 包裹数量 | Integer | 是 | |
| └ trackingEvents | 追踪信息 | List |
是 |
TrackingEvent
| 字段名 | 字段描述 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| eventDate | 事件时间 | String | 是 | 例:2021-01-01 10:00:00 |
| eventPlace | 事件地点 | String | 是 | 例:TEST中转仓,CA |
| eventDesc | 事件描述 | String | 是 | 例:到达中转站 |
返回信息:
| 字段名 | 字段描述 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| success | 结果状态 | boolean | 是 | |
| message | 失败时原因 | String | 否 |
请求示例:
{ "success": "true", "message": "", "data": { "orderNumber": "CESH210204147401", "carrierName": "FedEx", "trackingNumber": "DS35841212312", "status": "IN_TRANSIT", "trackingEvents": [ { "eventDate": "2021-01-01 15:00:00", "eventPlace": "CA", "eventDesc": "货件已装车,派送途中" }, { "eventDate": "2021-01-01 10:00:00", "eventPlace": "CA", "eventDesc": "托运资讯发送给FedEx" } ] } }
返回示例:
{ "success": "true", "message": "" }