1. 简介
需要对接千易头程物流商,需要看该文档
2. 环境要求及基础约定
授权:app_key(客户ID)、secretKey(密钥,用于验证报文信息)。对仓库来说,用双方约定的key作为验签用key。
接口地址:第三方提供服务地址供千易调用。
请求方式:
- Method: POST
- Content-Type: application/x-www-form-urlencoded
公共请求:
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
appKey | 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、将appKey和content组成json字符串{"appKey":"appKey","content":"具体业务参数"},content为空时{"appKey":"appKey"}。gwms传的appKey为空
2、将第三方分配的客户secretKey添加到json的末尾,得到待加密字串{"appKey":"appKey","content":"具体业务参数"}secretKey。gwms传的secretKey为双方约定的key
3、对待加密字串做sha1加密得到签名(org.apache.commons.codec.digest.DigestUtils.sha1Hex(待加密字串))
4、将签名赋值到公共请求的sign字段
3. 物流授权
方法名:
- logisticsAuth
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
logisticsKey | 物流key | String | 是 | |
logisticsSecret | 物流密钥 | String | 是 | |
openAppKey | opapiKey | String | 否 | |
openAppSecret | opapiSecret | String | 否 |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
success | 结果状态 | boolean | 是 | |
message | 失败时原因 | String | 否 |
请求示例:
{ "appKey": "3215435", "method": "getTrackingInfo", "content": "{\"logisticsKey\":\"id001\",\"logisticsKey\":\"testKey\",\"appKey\":\"dfa32423423",\"secretKey\":\"dfs2323\"}", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例: { "success": "true", "message": "" }
4. 物流取消授权
方法名:
- logisticsAuthCancel
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
logisticsKey | 物流key | String | 是 | |
logisticsSecret | 物流密钥 | String | 是 | |
openAppKey | opapiKey | String | 否 | |
openAppSecret | opapiSecret | String | 否 |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
success | 结果状态 | boolean | 是 | |
message | 失败时原因 | String | 否 |
请求示例:
{ "appKey": "3215435", "method": "getTrackingInfo", "content": "{\"logisticsKey\":\"id001\",\"logisticsKey\":\"testKey\",\"appKey\":\"dfa32423423",\"secretKey\":\"dfs2323\"}", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例: { "success": "true", "message": "" }
5. 渠道列表
方法名:
- logisticsChannels
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
logisticsKey | key | Array | 是 |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
channelList | 渠道信息 | Array | ||
└ channelCode | 渠道代码(物流方式、物流产品) | String | 是 | 需具有唯一性 |
└ channelName | 渠道名称 | String | 是 | |
└ carrierName | 承运商名称 | String | 否 | |
└ carrierCode | 承运商编码 | String | 否 | |
└ transportType | 运输方式 | String | 是 |
请求示例:
{ "appKey": "3215435", "content": "", "method": "logisticsChannels", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例:
{ "success": "true", "message": "", "channelList": [ { "channelCode": "FedexGround", "channelName": "FedEx Ground", "carrierName": "FEDEX", "transportType": "" } ] }
6. 订阅物流轨迹
方法名:
- subscribeLogistics
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
logisticsKey | key | Array | 是 | |
orderList | 订单列表 | Array | 否 | |
└ orderNumber | 订单号 | String | 否 | |
└ trackingNumber | 运单号 | String | 是 |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
orderList | 失败列表 | Array | 否 | 返回订阅失败订单,全部成功时为空 |
└ orderNumber | 订单号 | String | 是 | |
└ trackingNumber | 运单号 | String | 是 | |
└ errorMessage | 失败原因 | String | 是 |
请求示例:
{ "success": "true", "message": "", "data": [ { "trackingNumber": "DS35841212312", "orderNumber": "orderNumber", "errorMessage": "运单不存在" } ] }
返回示例:
7. 推送物流轨迹
方法名:
- 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": "" }