1. 简介
需要对接千易的三方物流商,需要看该文档
2. 环境要求及基础约定
授权:accessId(客户ID)、secretKey(密钥,用于验证报文信息)。对仓库来说,用双方约定的key作为验签用key。
接口地址:第三方提供服务地址供千易调用。
请求方式:
- Method: POST
- Content-Type: application/x-www-form-urlencoded
公共请求:
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
accessId | String | 是 | 第三方授权给千易客户ID。gwms这个字段传空 |
method | String | 是 | 接口方法名 |
content | String | 是 | 业务参数 |
sign | String | 是 | 签名 |
header参数:
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
logisticsType | String | N | 物流类型 |
secret | String | N | 第三方仓秘钥。gwms用双方约定的秘钥验签 |
accessToken | String | N | accessToken |
refreshToken | String | N | refreshToken |
authInfo | String | N | gwms传物流商这边用到的授权信息。json格式 |
apiUrl | String | N | 服务请求域名: https://www.baidu.com |
authInfo 传值举例: "authInfo":[ {"authInfoKey":"MERCHANT_ID", "value":"BG2447"}, {"authInfoKey":"SECRET_KEY", "value":"f1dafc7b7c934d21327d990b0ea56cfcf4814ef699345a37010c07e02d5219a9"}, {"authInfoKey":"PRINT_SIZE", "value":""} ] 其中,MERCHANT_ID,SECRET_KEY,PRINT_SIZE均为物流商约定要传的字段,不同的物流商字段可能不同,都通过 json格式统一请求。
公共响应:
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
success | boolean | 是 | 业务处理是否成功 |
message | String | 否 | 业务处理异常消息 |
签名方式:
1、将accessId和content组成json字符串{"accessId":"accessId","content":"具体业务参数"},content为空时{"accessId":"accessId"}。gwms传的accessId为空
2、将第三方分配的客户secretKey添加到json的末尾,得到待加密字串{"accessId":"accessId","content":"具体业务参数"}secretKey。gwms传的secretKey为双方约定的key
3、对待加密字串做sha1加密得到签名(org.apache.commons.codec.digest.DigestUtils.sha1Hex(待加密字串))
4、将签名赋值到公共请求的sign字段
3. 渠道列表
方法名:
- channels
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
channelList | 渠道信息 | Array | ||
└ channelCode | 渠道代码 | String | 必填 | 需具有唯一性 |
└ channelName | 渠道名称 | String | 必填 | |
└ carrierName | 承运商名称 | String | N |
请求示例:
{ "accessId": "3215435", "content": "", "method": "channels", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例:
{ "success": "true", "message": "", "channelList": [ { "channelCode": "FedexGround", "channelName": "FedEx Ground", "carrierName": "FEDEX" } ] }
4. 创建物流订单(申请单号)
方法名:
- createOrder
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
customerNumber | 订单号 | String | 必填 | |
onlineOrderId | 线上单号 | String | N | |
addedServices | 签名服务 | String | N | 签名服务 1 一般签名服务 2 承认签名服务 |
channelCode | 发货渠道代码 | String | 必填 | |
recipientAddress | 收件人信息 | Object | 必填 | |
└ name | 收件人姓名 | String | 必填 | |
└ address1 | 收件人地址1 | String | 必填 | |
└ address2 | 收件人地址2 | String | N | |
└ phone1 | 收件人电话1 | String | 必填 | |
└ phone2 | 收件人电话2 | String | N | |
收件人邮箱 | String | N | ||
└ country | 收件人国家 | String | 必填 | 国家二字码ISO 3166-1 |
└ province | 收件人省州 | String | Y | |
└ city | 收件人城市 | String | Y | |
└ town | 收件人区镇 | String | N | |
└ postalCode | 收件人邮编 | String | 必填 | |
senderAddress | 寄件人信息 | Object | 必填 | |
└ name | 寄件人姓名 | String | 必填 | |
└ address1 | 寄件人地址1 | String | 必填 | |
└ address2 | 寄件人地址2 | String | N | |
└ phone1 | 寄件人电话1 | String | 必填 | |
└ phone2 | 寄件人电话2 | String | N | |
寄件人邮箱 | String | N | ||
└ country | 寄件人国家 | String | 必填 | 国家二字码ISO 3166-1 |
└ province | 寄件人省州 | String | Y | |
└ city | 寄件人城市 | String | Y | |
└ town | 寄件人区镇 | String | Y | |
└ postalCode | 寄件人邮编 | String | 必填 | |
itemList | 订单商品信息 | Array | 必填 | |
└packageNumber | 包裹唯一号 | String | N | 当前单据唯一包裹号,packageList有值必传 |
└ sku | 商品编码 | String | 必填 | |
└ skuName | 商品名称 | String | N | |
└ length | 长 | String | N | |
└ wide | 宽 | String | N | |
└ high | 高 | String | N | |
└ lengthUnit | 长度单位 | String | N | cm(厘米)、In(英寸)、m(米) |
└ weight | 报关重量 | BigDecimal | Y | 重量固定换算成KG,默认0 |
└ skuWeight | 商品重量 | Double | N | |
└ weightUnit | 重量单位 | String | N | KG(千克),GRAM(克),LBS(磅) |
└ color | 颜色 | String | N | |
└ skuPrice | 商品实付金额 | BigDecimal | N | |
└ quantity | 数量 | String | 必填 | |
└ price | 商品金额 | BigDecimal | 必填 | 该商品总金额 |
└ currency | 币种 | String | 必填 | ISO 4217 |
└ customsCode | 海关编码 | String | N | |
└ cnCustomsName | 中文报关名 | String | N | |
└ enCustomsName | 英文报关名 | String | N | |
codEnabled | 是否是cod订单 | Integer | N | 1:cod订单 0:非cod订单 |
codPayAmount | cod订单金额 | BigDecimal | N | |
codCurrency | cod金额币种 | String | N | |
packageList | 多包裹列表 | Array | N | |
└packageNumber | 包裹唯一号 | String | Y | 当前单据包裹号 |
└packageLength | 包裹长 | Number | N | |
└packageWide | 包裹宽 | Number | N | |
└packageHigh | 包裹高 | Number | N | |
└packageUnit | 包裹单位 | String | N | cm(厘米)、In(英寸)、m(米),默认值:cm |
└totalWeight | 总重量 | Number | N | 单位为KG |
packageLength | 包裹长 | Double | N | |
packageWide | 包裹宽 | Double | N | |
packageHigh | 包裹高 | Double | N | |
packageUnit | 包裹单位 | String | N | cm(厘米)、In(英寸)、m(米),默认值:cm |
totalWeight | 总重量 | BigDecimal | N | 单位为KG |
iossNumber | IOSS号 | String | N | |
taxNumber | 税号 | String | N | |
receiverTaxNumber | 收件人税号 | String | N | |
remarks | 备注 | String | N |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
trackingNumber | 运单号 | String | 必填 | |
customerNumber | 订单号 | String | N | |
addressType | 地址类型 | Integer | N | 地址类型1-未知2-商业3-住宅 |
feedBackId | 回传信息 | String | N | addressType和feedBackId两个字段不可同时返回 |
packageInfoList | 多包裹运单号 | N | 多包裹信息 | |
└packageNumber | 包裹号 | String | N | |
└trackingNumber | 订单号 | String | N | |
└customerNumber | 运单号 | String | N |
请求示例:
{ "accessId" : "67436533", "method" : "createOrder", "content" : "{\"senderAddress\":{\"name\":null,\"company\":null,\"address1\": null,\"address2\":null,\"fullAddress\":null,\"phone1\":null,\"phone2\":null,\"email\":null,\"country\":null,\"province\": null,\"city\":null,\"town\":null,\"postalCode\":null},\"totalWeight\": 1,\"itemList\":[{\"sku\":\"A1223\",\"cnCustomsName\":null,\"enCustomsName\":null,\"customsCode\":null,\"price\":0,\"currency\":\"MYR\",\"quantity\":1,\"weight\":1,\"skuWeight\":1.0,\"color\":null,\"weightUnit\":\"KG\",\"length\":\"1.0\",\"width\":\"1.0\",\"height\":\"1.0\",\"lengthUnit\":\"cm\",\"skuPrice\":2E+2}] ,\"codPayAmount\":null,\"recipientAddress\":{\"name\":\"0983833206\",\"company\":null,\"address1\":\"0983833206\",\"address2\": \"10310\",\"fullAddress\":\"0983833206, 10310\",\"phone1\":\"12675638889\",\"phone2\":\"\",\"email\":\"\",\"country\": \"PH\",\"province\":\"Bangkok\",\"city\":\"Huai Khwang\",\"town\":null,\"postalCode\":\"10310\"},\"customerNumber\": \"DA241112100000\",\"remarks\":null,\"channelCode\":\"5\"}", "sign" : "c77f2ad0b06d8e2b04af9aec9b8b6f7740d07249" }
返回示例:
{ "success": "true", "message": "", "data": { "trackingNumber": "DS35841212312",
"customerNumber":"orderNumber",
“addressType”:1 } }
5. 取消物流订单
方法名:
- cancelOrder
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
customerNumber | 千易订单号 | String | 选填 | 与trackingNumber按需取一即可 |
trackingNumber | 运单号 | String | 选填 | 与customerNumber按需取一即可 |
请求示例:
{ "accessId": "3215435", "method": "cancelOrder", "content": "{\"orderNumber\":\"CESH210204147401\",\"trackingNumber\":\"DS35841212312\"}", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例:
{ "success": "true", "message": "" }
6. 获取面单
方法名:
- getLabel
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
customerNumber | 订单号 | String | 必填 | |
trackingNumber | 运单号 | String | 必填 | |
labelType | 面单类型 | String | Y | 模板尺寸:A4、10*15等 |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
trackingNumber | 运单号 | String | 必填 | |
customerNumber | 订单号 | String | N | |
labelData | 面单 | String | 必填 | PDF Base64 |
请求示例:
{ "accessId": "3215435", "method": "getLabel", "content": "{\"orderNumber\":\"CESH210204147401\",\"trackingNumber\":\"DS35841212312\",\"labelType\":\"10*15\"}", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例:
{ "success": "true", "message": "", "data": { "trackingNumber": "DS35841212312",
"customerNumber":"CESH210204147401", "labelData": "5rWL6K+V6Z2i5Y2V5pWw5o2u" } }
7. 获取运单号和面单接口
接口描述: 此为扩展接口,同时获取运单号和面单的接口,注: 对接createOrder(申请单号)和 getLabel(获取面单)接口与该接口功能一致。
方法名:
- apply
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
customerNumber | 订单号 | String | 必填 | |
addedServices | 签名服务 | String | N | 签名服务 1 一般签名服务 2 承认签名服务 |
channelCode | 发货渠道代码 | String | 必填 | |
labelType | 面单类型 | String | 必填 | |
recipientAddress | 收件人信息 | Object | 必填 | |
└ name | 收件人姓名 | String | 必填 | |
└ address1 | 收件人地址1 | String | 必填 | |
└ address2 | 收件人地址2 | String | N | |
└ phone1 | 收件人电话1 | String | 必填 | |
└ phone2 | 收件人电话2 | String | N | |
收件人邮箱 | String | N | ||
└ country | 收件人国家 | String | 必填 | 国家二字码ISO 3166-1 |
└ province | 收件人省州 | String | Y | |
└ city | 收件人城市 | String | Y | |
└ town | 收件人区镇 | String | N | |
└ postalCode | 收件人邮编 | String | 必填 | |
senderAddress | 寄件人信息 | Object | 必填 | |
└ name | 寄件人姓名 | String | 必填 | |
└ address1 | 寄件人地址1 | String | 必填 | |
└ address2 | 寄件人地址2 | String | N | |
└ phone1 | 寄件人电话1 | String | 必填 | |
└ phone2 | 寄件人电话2 | String | N | |
寄件人邮箱 | String | N | ||
└ country | 寄件人国家 | String | 必填 | 国家二字码ISO 3166-1 |
└ province | 寄件人省州 | String | Y | |
└ city | 寄件人城市 | String | Y | |
└ town | 寄件人区镇 | String | Y | |
└ postalCode | 寄件人邮编 | String | 必填 | |
itemList | 订单商品信息 | Array | 必填 | |
└packageNumber | 包裹号 | String | N | 当前单据唯一包裹号,packageList有值必传 |
└ sku | 商品编码 | String | 必填 | |
└ skuName | 商品名称 | String | N | |
└ length | 长 | String | N | |
└ wide | 宽 | String | N | |
└ high | 高 | String | N | |
└ lengthUnit | 长度单位 | String | N | cm(厘米)、In(英寸)、m(米) |
└ skuPrice | 商品实付金额 | BigDecimal | N | |
└ quantity | 数量 | String | 必填 | |
└ price | 商品金额 | BigDecimal | N | 该商品总金额 |
└ currency | 币种 | String | 必填 | ISO 4217 |
└ customsCode | 海关编码 | String | N | |
└ cnCustomsName | 中文报关名 | String | N | |
└ enCustomsName | 英文报关名 | String | N | |
codEnabled | 是否是cod订单 | Integer | N | 1:cod订单 0:非cod订单 |
codPayAmount | cod订单金额 | BigDecimal | N | |
codCurrency | cod金额币种 | String | N | |
packageList | 多包裹列表 | Array | N | |
└packageNumber | 包裹唯一号 | String | Y | 当前单据包裹号 |
└packageLength | 包裹长 | Number | N | |
└packageWide | 包裹宽 | Number | N | |
└packageHigh | 包裹高 | Number | N | |
└packageUnit | 包裹单位 | Number | N | cm(厘米)、In(英寸)、m(米),默认值:cm |
└totalWeight | 总重量 | Number | N | 单位为KG |
packageLength | 包裹长 | Double | N | |
packageWide | 包裹宽 | Double | N | |
packageHigh | 包裹高 | Double | N | |
packageUnit | 包裹单位 | String | N | cm(厘米)、In(英寸)、m(米),默认值:cm |
totalWeight | 总重量 | BigDecimal | N | 单位为KG |
remarks | 备注 | String | N |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
labelDataList | List | Y | ||
└packageNumber | 包裹号 | String | N | |
└customerNumber | 订单号 | String | N | |
└trackingNumber | 运单号 | String | 必填 | |
└labelDataType | 面单类型 | String | 必填 | 面单类型,支持以下类型: 1、PDF ( Base64) 2、 URL |
└labelData | 面单 | String | 必填 | |
└addressType | 地址类型 | Integer | 必填 | 地址类型1-未知2-商业3-住宅 |
└shippingFee | 运费 | Double | N | |
└carrierCode | 承运商编码 | String | N | |
└carrierServiceCode | 承运商服务编码 | String | N |
请求示例:
{ "accessId": "3215435", "method": "createOrder", "content": "{\"orderNumber\":\"CESH210204147401\",\"channelCode\":\"FedexGround\",\"recipientAddress\":{\"name\":\"Kimberly White\",\"address1\":\"TestStreet1\",\"address2\":\"\",\"phone1\":\"1889838055188\",\"phone2\":\"\",\"email\":\"\",\"country\":\"US\",\"province\":\"AR\",\"city\":\"Harrison\",\"town\":null,\"postalCode\":\"72601\"},\"senderAddress\":{\"name\":\"Tally Mercy\",\"address1\":\"TestStreet2\",\"address2\":\"\",\"phone1\":\"1231434142341\",\"phone2\":\"\",\"email\":\"\",\"country\":\"US\",\"province\":\"AR\",\"city\":\"Harrison\",\"town\":null,\"postalCode\":\"72601\"},\"skuList\":[{\"sku\":\"CL0000000000001\",\"quantity\":1,\"price\":120.0,\"currency\":\"USD\",\"customsCode\":\"CL0000000000001\",\"cnCustomsName\":\"测试商品\",\"enCustomsName\":\"TEST\"}],\"codEnabled\":0,\"codPayAmount\":120.0,\"codCurrency\":\"US\",\"packageLength\":30.0,\"packageWide\":30.0,\"packageHigh\":20.0,\"packageUnit\":\"cm\",\"totalWeight\":5.0,\"remarks\":\"测试\"}", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例:
{
"success": "true",
"message": "",
"data": {
"labelDataList": [
{
"trackingNumber": "DS35841212312",
"labelDataType": "PDF",
"labelData": "5rWL6K+V6Z2i5Y2V5pWw5o2u",
"addressType": 1,
"shippingFee": 1.1,
"carrierCode": "USPS",
"carrierServiceCode": "Priority"
}
]
}
}
8. 查询物流追踪信息
方法名:
- getTrackingInfo
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
customerNumber | 千易订单号 | String | 必填 | |
trackingNumber | 运单号 | String | 必填 |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
orderNumber | 千易订单号 | String | 必填 | |
carrierName | 承运商名称 | String | 必填 | |
trackingNumber | 运单号 | String | 必填 | |
status | 运单状态 | String | 必填 | CREATED(待揽收) SHIPPED(已揽收) IN_TRANSIT(运输中) OUT_FOR_DELIVERY(派送中) DELIVERED(已送达) UNDELIVERABLE(无法派送) DELAYED(延迟派送) RETURNING(退回中) RETURNED(已退回) |
trackingEvents | 追踪信息 | Array | 必填 | |
└ eventDate | 事件时间 | String | 必填 | 例:2021-01-01 10:00:00 |
└ eventPlace | 事件地点 | String | 必填 | 例:TEST中转仓,CA |
└ eventDesc | 事件描述 | String | 必填 | 例:到达中转站 |
请求示例:
{ "accessId": "3215435", "method": "getTrackingInfo", "content": "{\"orderNumber\":\"CESH210204147401\",\"trackingNumber\":\"DS35841212312\"}", "sign": "11fbd649164860b5571cb60dfc99baccb375f392" }
返回示例:
{ "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" } ] } }
9. 测算费用(开发中)
方法名:
- getEstimateCost
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
customerOrderNo | 客户单号 | String | 必填 | |
sendAddress | 寄件地址 | Object | 必填 | |
└contactName | 联系人 | String | N | |
└companyName | 公司名称 | String | N | |
└cellPhone | 联系电话 | String | N | |
└countryCode | 国家二字码 | String | N | |
└province | 省州二字码 | String | N | |
└city | 城市 | String | N | |
└postCode | 发件邮编 | String | 必填 | |
└address | 详细地址 | String | N | |
└address2 | 详细地址2 | String | N | |
receivingAddress | 收件地址 | Object | 必填 | |
└contactName | 联系人 | String | 必填 | |
└companyName | 公司名称 | String | 必填 | |
└cellPhone | 联系电话 | String | 必填 | |
└countryCode | 国家二字码 | String | 必填 | |
└province | 省州二字码 | String | 必填 | |
└city | 城市 | String | 必填 | |
└postCode | 发件邮编 | String | 必填 | |
└address | 详细地址 | String | 必填 | |
└address2 | 详细地址2 | String | 必填 | |
cargoReqList | 货箱信息 | array [object] | 必填 | |
└serialNumber | 箱子编号 | String | 必填 | |
└weight | 货箱重量 | number | 必填 | |
└length | 长 | number | 必填 | |
└width | 宽 | number | 必填 | |
└high | 高 | number | 必填 |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
code | 必填 | |||
message | 必填 | |||
data | array[Object] | 必填 | ||
└productCode | 渠道代码 | String | 必填 | |
└weightUnit | 计费重单位 | String | 必填 | |
└chargedWeight | 计费重 | number | 必填 | |
└totalFee | 总费用 | number | 必填 | |
└addressType | 地址类型 1-未知 2-商业 3-住宅 | number | 必填 | |
└timestamp | number | 必填 |
请求示例:
{ "loginAccount": "Test001", "timestamp": 1234567898, "customerOrderNo": "test023203232", "schemeProductCodeList": [ "FEDEX-001" ], "sendAddress": { "contactName": "ONT8", "companyName":"yamax", "cellPhone": "6262652412", "countryCode": "US", "province": "CA", "city": "MORENO VALLEY", "postCode": "92551", "address": "24300 NANDINA AVE", "address2": "24300 NANDINA AVE" }, "receivingAddress": { "contactName": "ONT8", "companyName":"yamax", "cellPhone": "6262652412", "countryCode": "US", "province": "CA", "city": "MORENO VALLEY", "postCode": "92551", "address": "24300 NANDINA AVE", "address2": "24300 NANDINA AVE" }, "cargoReqList": [{ "serialNumber": "001", "weight": "15", "length": "60", "width": "50", "high": "40" }, { "serialNumber": "002", "weight": "15", "length": "60", "width": "50", "high": "40" }, { "serialNumber": "003", "weight": "15", "length": "60", "width": "50", "high": "40" }] }
返回示例:
{ "code": 0, "message": "string", "data": [ { "productCode": "string", "weightUnit": "string", "chargedWeight": 0, "totalFee": 0, "addressType": 0 } ], "timestamp": 0 }