1. 简介
需要对接千易的第三方仓,需要看此文档
订单业务流程示意图:

2. 环境要求
授权:accessId(客户 ID)、secretKey(密钥,用于验证报文信息)。
接口地址:第三方提供服务地址供千易调用。 请求方式:
- Method: POST
- Content-Type: application/x-www-form-urlencoded
公共请求:
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
accessId | String | 是 | 第三方授权给千易客户 ID |
method | String | 是 | 接口方法名 |
content | String | 是 | 业务参数 |
sign | String | 是 | 签名 |
header参数:
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
warehouseType | String | N | 仓库类型 |
secret | String | N | 第三方仓秘钥/Token |
公共响应:
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
success | boolean | 是 | 业务处理是否成功 |
message | String | 否 | 业务处理异常消息 |
签名方式:
1、将 accessId 和 content 组成 json 字符串
{"accessId":"accessId","content":" 具体业务参数 "} , content 为空 时
{"accessId":"accessId"}
2、将第三方分配的客户 secretKey 添加到 json 的末尾,得到待加密字串
{"accessId":"accessId","content":"具体业务参数"}secretKey
3、对待加密字串做 sha1 加密得到签名
(org.apache.commons.codec.digest.DigestUtils.sha1Hex(待加密字串))
4、将签名赋值到公共请求的 sign 字段
加密前字符串样例: {"accessId":"ibxakq31y","content":"{\"pageSize\":1000,\"page\":1,\"warehouseCode\":\"WH000005\"}"}30534885b3eb4625c8c279822651683a
3. 仓库列表
描述: 获取所有的发货仓,用于后续下发入库单、库存同步、下发订单等流程
方法名:
- warehouses
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
warehouseList | 仓库信息 | Array | ||
└ warehouseCode | 仓库编码 | String | 必填 | 需具有唯一性 |
└ warehouseName | 仓库名称 | String | 必填 | 需具有唯一性 |
请求示例:
{
"accessId": "3215435",
"method": "warehouses",
"content": "",
"sign": "11fbd649164860b5571cb60dfc99baccb375f392"
}
返回示例:
{
"success": "true",
"message": "",
"warehouseList": [
{
"warehouseCode": "CA1",
"warehouseName": "CA Warehouse"
},
{
"warehouseCode": "CA2",
"warehouseName": " CA Warehouse 2"
}
]
}
4. 仓库物流列表
描述: 订单在erp审核的时候是要选物流的,我们支持仓库提供物流列表,用户在erp选择后就下发给仓库,channels接口就是用于获取仓库支持哪些物流的
方法名:
- channels
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
warehouseCode | 仓库编码 | String | N |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
channelList | ArrayList | |||
└ channelCode | 仓库物流代码 | String | 必填 | 需具有唯一性 |
└ channelName | 仓库物流名称 | String | 必填 | |
└ warehouseCode | 仓库编码 | String | N | |
└ carrierName | 承运商名称 | String | N |
请求示例:
{
"accessId": "3215435",
"method": "channels",
"content": "",
"sign": "11fbd649164860b5571cb60dfc99baccb375f392"
}
返回示例:
{
"success": "true",
"message": "",
"channelList": [
{
"channelCode": "FedexGround",
"channelName": "FedEx Ground",
"carrierName": "FEDEX"
}
]
}
5. 创建订单
描述: 在千易创建订单后会向仓库请求创建订单,以便仓库备货、发货
方法名:
- createOrder
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
orderNumber | 千易订单号 | String | 必填 | |
onlineOrderId | 平台订单号 | String | 必填 | 原始订单号,母单号 |
shopName | 店铺名称 | String | 必填 | |
warehouseCode | 仓库代码 | String | 必填 | |
logisticsCode | 发货渠道代码 | String | 必填 | |
platform | 平台 | String | 必填 | |
freight | 运费 | BigDecimal | 必填 | |
packageType | 包裹类型 | String | N | 默认NORMAL 普通包裹 OWN_PAKAGE 自发包裹 |
trackingNumber | 运单号 | String | N | 客供面单,包裹类型为自发包裹时必传 |
labelData | 面单 | String | N | 客供面单,包裹类型为自发包裹时必传,面单 数据为 PDF BASE64 |
codEnabled | 是否是cod订单 | Integer | 必填 | 1:cod订单 0:非cod订单 |
codPayAmount | cod订单金额 | BigDecimal | N | cod金额,cod订单必填 |
codCurrency | cod金额币种 | String | N | cod币种,cod订单必填 |
orderCreate | 订单创建时间 | Date | N | |
deliveryTime | 承诺送达时间 | Date | N | |
onlineShopId | 线上店铺id | String | N | 线上店铺id,只给部分仓库使用 |
receiver | 收件人信息 | Object | 必填 | |
└ name | 联系人 | String | 必填 | |
└ phone | 联系电话 | String | 必填 | |
联系邮箱 | String | Y | ||
└ country | 国家二字码 | String | 必填 | |
└ state | 省/州 | String | 必填 | |
└ city | 城市 | String | 必填 | |
└ district | 区 | String | N | |
└ address1 | 地址 1 | String | 必填 | |
└ address2 | 地址 2 | String | N | |
└ postalCode | 邮编 | String | 必填 | |
skuList | 订单商品信息 | Array | 必填 | |
└ sku | 仓库商品编码 | String | 必填 | |
└ erpSku | 商品编码 | String | 必填 | |
└ name | 商品名称 | String | 必填 | |
└ quantity | 数量 | String | 必填 | |
└ amount | 商品金额 | BigDecimal | 必填 | |
└ shippingPrice | 商品运费 | BigDecimal | N | |
└ hsCode | 海关编码 | String | N | |
└ chineseCustomsDecl arationName | 中文报关名 | String | N | |
└ englishCustomsDecl arationName | 英文报关名 | String | N |
请求示例:
{
"accessId": "3215435",
"method": "createOrder",
"content": "{\"orderNumber\":\"CESH210204147401\",\"onlineOrderId\":\"11319575377 9\",\"shopName\":\"测试\",\"logisticsCode\":\"FedexGround\",\"platform\":\"tiktok\",\"warehouseCode\":\"QY_01\",\"fr eight\":20.0,\"receiver\":{\"name\":\"Kimberly White\",\"phone\":\"1889838055188\",\"email\":\"\",\"country\":\"US\",\"state\":\"AR\",\"city\":\"Harrison\",\"district\":\"null\",\"address1\": \"TestStreet1\",\"address2\":\"\",\"postalCode\":\"72601\"},\"skuLi st\":[{\"sku\":\"CL0000000000001\",\"name\":null,\"quantity\":1,\"amo unt\":120.0,\"shippingPrice\":20.0,\"hsCode\":\"CL0000000000001\",\"chineseCustomsDeclarationName\":\" 测 试 商 品\",\"englishCustomsDeclarationName\":\"TEST\"}]}",
"sign": "11fbd649164860b5571cb60dfc99baccb375f392"
}
返回示例:
{
"success": "true",
"message": "",
"data": {
"warehouseOrderNumber": "S111111-09987666"
}
}
6. 取消订单
描述: 用于千易向仓库取消订单
方法名:
- cancelOrder
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
orderNumber | 千易订单号 | String | 必填 | |
warehouseCode | 仓库编码 | String | N | |
warehouseOrderNumber | 仓库订单号 | String | N |
请求示例:
{
"accessId": "3215435",
"method": " cancelOrder",
"content": " {\"orderNumber\":\"CESH210204147401\",\"warehouseOrderNumber\":\"CESH210204147401\"}",
"sign": "11fbd649164860b5571cb60dfc99baccb375f392"
}
返回示例:
{
"success": "true",
"message": ""
}
7. 查询订单信息
描述: 用于同步仓库的运单号、订单状态到千易
方法名:
- getOrder
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
orderNumber | 千易订单号 | String | 必填 | |
warehouseCode | 仓库编码 | String | N | |
warehouseOrderNumber | 仓库订单号 | String |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 | |
---|---|---|---|---|---|
orderNumber | 千易订单号 | String | 必填 | ||
wmsStatus | 第三方系统的出库订单状态 | String | 必填 | ||
status | 千易出库单状态 | String | 必填 | 需由 wmsStatus 自行映射SENDING( 出 库 中 ) SUCCESS ( 已发货、 已出库) CANCEL(取消) FAILED(失败或异常) | |
carrierName | 承运商名称 | String | N | ||
trackingNumber | 运单号 | String | N | status 为 SUCCESS 时必填 | |
failedReason | 失败原因 | String | N | status 为 FAILED 时必填 |
请求示例:
{
"accessId": "3215435",
"method": " getOrder",
"content": " {\"orderNumber\":\"CESH210204147401\"}",
"sign": "11fbd649164860b5571cb60dfc99baccb375f392"
}
返回示例:
{
"success": "true",
"message": "",
"data": {
"orderNumber": "S0000001",
"wmsStatus": "Shipped",
"status": "SUCCESS",
"carrierName": "FEDEX",
"trackingNumber": "TEST0001"
}
}
8. 库存同步
描述: 同步仓库的sku、sku库存信息到千易
方法名:
- syncInventory
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
pageSize | 每页数量 | Integer | 必填 | |
page | 当前页 | Integer | 必填 | |
warehouseCode | 仓库编码 | String | 必填 | |
warehouseSku | 仓库商品编码 | String | N | |
返回信息: | ||||
字段名 | 字段描述 | 类型 | 必填 | 备注 |
isLastPage | 是否是 最后一页 | Boolean | 必填 | true:最后一页false:不是最后一页 |
currentPage | 当前页 | Integer | 必填 | |
pageCount | 总页数 | Integer | 必填 | |
data | 库存信息 | List\ | ||
warehouseCode | 仓库编码 | String | 必填 | |
warehouseSku | 仓库商品编码 | String | 必填 | |
onwayQuantity | 在途数量 | String | Y | 默认 0 |
pendingQuantity | 待上架数量 | String | Y | 默认 0 |
sellableQuantity | 可售数量 | String | 必填 | |
unsellableQuantity | 不合格数量 | String | Y | 默认 0 |
reservedQuantity | 待出库数量 | String | Y | 默认 0 |
useQuantity | 占用数量 | String | Y | 默认 0 |
totalQuantity | 总库存数量 | String | 必填 |
请求示例:
{
"accessId": "3215435",
"method": " syncInventory",
"content": " {\"pageSize \":\"50\",\"page \":\"1\",\"warehouseCode\":\"wms\",\"warehouseSku \":\"sku\"}",
"sign": "11fbd649164860b5571cb60dfc99baccb375f392"
}
返回示例:
{
"success": "true",
"message": "",
"isLastPage": true,
"currentPage": 1,
"pageCount": 1,
"data": [
{
"warehouseCode": "wms",
"warehouseSku": "sku",
"onwayQuantity": "11",
"pendingQuantity": "22",
"sellableQuantity": "33",
"unsellableQuantity": "0",
"reservedQuantity": "22",
"useQuantity": "11",
"totalQuantity": "99"
}
]
}
9. 入库单创建
描述: 在千易创建入库单后会向仓库请求创建入库单,目的是增加仓库sku的库存
方法名:
- createAsnOrder
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
asnNumber | 千易入库单号 | String | 必填 | |
warehouseCode | 仓库代码 | String | 必填 | |
estimatedArrivalDate | 预计到货时间 | Long | 选填 | |
trackNumber | 运单号 | String | 选填 | |
type | 入库单类型 | String | 选填 | 入库单类型 |
orderNumber | erp订单号 | String | 选填 | 退货入库会有值 |
onlineOrderId | 线上订单号 | String | 选填 | 退货入库会有值 |
saleReturnReason | 退货原因 | String | 选填 | 退货入库会有值 |
skuList | 商品信息 | Array | 必填 | |
└ sku | 商品编码 | String | 必填 | |
└ name | 商品名称 | String | 选填 | |
└ quantity | 数量 | Number | 必填 | |
asnMarkSku | 装箱信息 | List | 选填 | |
└boxNumber | 箱号 | Number | 选填 | |
└ markCode | 箱唛号 | String | 选填 | |
└ quantity | 装箱数量 | Number | 选填 | |
└ sku | 商品编码 | String | 选填 | |
└ name | 商品名称 | String | 选填 |
请求示例:
{
"accessId": "67436532",
"method": "createAsnOrder",
"content": "{\"skuList\":[{\"sku\":\"CLO-CNQM5069BL\",\"quantity\":2}],\"trackNumber\":\"A240925139551\",\"asnNumber\":\"A240925139551\",\"asnMarkSku\":[{\"sku\":\"CLO-CNQM5069BL\",\"quantity\":2,\"markCode\":\"QY556553-A240925139551-1\",\"boxNumber\":\"1\",\"length\":1.0,\"width\":1.0,\"height\":1.0}],\"estimatedArrivalDate\":null,\"warehouseCode\":\"53\"}",
"sign": "1f04df03d527653ab65beafb4aa59c778ff3bd73"
}
返回示例:
{
"success": true,
"message": "",
"results": [
{
"asnNumber": "A1234",
"operation": "CANCEL",
"info": ""
}
]
}
10. 入库单查询
方法名: 描述: 用于同步仓库入库单的状态
- getAsnList
接口参数:

字段名 | 字段描述 | 类型 | 必填 | 备注 | |
---|---|---|---|---|---|
asnNumbers | 千易入库单号(批量) | List <String> |
必填 | ||
warehouseCode | 仓库编码 | String | 选填 | ||
返回信息: | |||||
字段名 | 字段描述 | 类型 | 必填 | 备注 | |
asnNumber | 千易入库单号 | String | 必填 | ||
wmsStatus | 第三方系统的入库订单状态 | String | 必填 | 需由 wmsStatus 提供映射后的状态,映射表见下「入库单状态」 | |
referenceNumber | 仓库入库单号 | String | 必填 | ||
finishTime | 完成时间 | String | 必填 | ||
skuList | 商品信息 | Array | 必填 | ||
└ sku | 商品编码 | String | 必填 | ||
└ name | 商品名称 | String | 选填 | ||
└estimatedQuantity | 预计数量 | Number | 必填 | ||
└receivedQuantity | 已收数量 | Number | 必填 | ||
└goodQuantity | 良品数量 | Number | 必填 | ||
└badQuantity | 不良品数量 | Number | 必填 |
11. 入库单状态
枚举值 | 备注 |
---|---|
NEW | 新建 |
DELETED | 已删除 |
SHIPPING | 在途 |
RECEIVING | 收获中 |
FINISHED | 已完成 |
CLOSED | 已关闭 |
请求示例:
{
"accessId": "3215435",
"method": " getAsnList",
"content": " {\"asnNumbers\":[\"CESH210204147401\",\"warehouseCode\":\"warehouse1\"]}",
"sign": "11fbd649164860b5571cb60dfc99baccb375f392"
}
返回示例:
{
"success": "true",
"message": "",
"asnList": [
{
"asnNumber": "sja11122",
"wmsStatus": "NEW",
"finishTime": "2024-10-26 12:23:34",
"referenceNumber": "A123445",
"skuList": [
{
"sku": "acs",
"name": "杯子",
"estimatedQuantity": 12,
"receivedQuantity": 12,
"goodQuantity": 5,
"badQuantity": 7
}
]
}
]
}
12. 入库单取消
描述: 用于取消仓库入库单
方法名:
- cancelAsnOrder
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
asnNumbers | 千易入库单号(批量) | List <String> |
必填 | |
warehouseCode | 仓库编码 | String | 选填 | |
返回信息: | ||||
字段名 | 字段描述 | 类型 | 必填 | 备注 |
success | 对当前sku操作是否成功 | String | 必填 | true成功,false失败 |
message | 失败信息 | String | 必填 | |
results | 结果 | List | 选填 | |
└asnNumber | 千易入库单号 | String | 必填 | |
└operation | 对入库单的操作 | String | 必填 | 取消:CANCEL |
└info | 备注信息 | String | 选填 | 失败信息 |
请求示例:
{
"accessId": "3215435",
"method": " cancelAsnOrder",
"content": " {\"asnNumbers\":[\"CESH210204147401\"],\"warehouseCode\":\"warehouse1\"}",
"sign": "11fbd649164860b5571cb60dfc99baccb375f392"
}
返回示例:
{
"success": true,
"message": "",
"results": [
{
"asnNumber": "A1234",
"operation": "CANCEL",
"info": ""
}
]
}
13. 商品下发仓库
描述: 在千易创建商品sku和仓库sku后下发映射关系给仓库,以便维护千易和仓库的sku映射关系,仓库商品不存在新建,存在则更新
方法名:
- insert_sku_info
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
warehouseCode | 仓库编码 | String | 选填 | |
sku | 仓库商品SKU,最大255字符 | String | 必填 | |
erpSku | 商品SKU,最大255字符 | String | 必填 | |
title | 商品名称,最大255字符 | String | 选填 | |
barcode | 商品条码,最大255字符 | String | 选填 | |
specifications | 商品规格 | String | 选填 | |
imageUrl | 图片链接 | String | 选填 | |
weight | 毛重 | Decimal | 选填 | |
netWeight | 净重 | Decimal | 选填 | |
weightUnit | 重量单位 | String | 选填 | |
length | 长 | Decimal | 选填 | |
width | 宽 | Decimal | 选填 | |
height | 高 | Decimal | 选填 | |
dimensionUnit | 长度单位 | String | 选填 | |
itemPackage | 包装数量 | Number | 选填 | |
返回信息: | ||||
字段名 | 字段描述 | 类型 | 必填 | 备注 |
success | 对当前sku操作是否成功 | String | 必填 | true成功,false失败 |
message | 失败信息 | String | 必填 | |
results | 失败结果集 | List | 选填 | |
└sku | 商品编码 | String | 必填 | |
└operation | 对sku的操作 | String | 必填 | 新建:CREATE |
└info | 备注信息 | String | 选填 | 失败信息 |
请求示例:
{
"method": "insert_sku_info",
"accessId": "67436532",
"content": "{\"itemPackage\":null,\"dimensionUnit\":\"cm\",\"length\":\"1\",\"weight\":\"1\",\"title\":\"A1234名称\",\"specifications\":\"黄-M\",\"warehouseCode\":\"53\",\"netWeight\":\"1\",\"imageUrl\":\"http://qianyierp-test.oss.aliyuncs.com/image/NjRhNzU5YWU3Y2M1NjI4YjZlNzIyZjJkYzUxYmYxNjk%3D.jpg\",\"width\":\"1\",\"sku\":\"A1234\",\"barcode\":\"A1234条码\",\"weightUnit\":\"KG\",\"height\":\"1\"}",
"sign": "d6c07b78107f3fd6819e038257b9236a7e48e297"
}
返回示例:
{
"success": true,
"message": "",
"results": [
{
"sku": "A1234",
"operation": "CANCEL",
"info": ""
}
]
}
14. WebHooks
14.1. 出库单状态推送接口
描述:仓库将出库单信息推送至千易ERP,warehouseExtraType请联系千易为您提供
方法名:
- pushOrderInfo
POST /sys/automatic/receiveOdo/{warehouseExtraType}
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
orderNumber | ERP订单号 | String | Y | |
onlineOrderId | 平台线上订单 | String | N | |
warehouseCode | 仓库编码 | String | Y | |
customerCode | 客户编码 | String | N | |
carrier | 承运商 | String | N | |
trackNumber | 运单号 | String | Y | |
warehouseOrderNumber | 仓库出库单号 | String | N | |
wmsStatus | 仓库单据状态 | String | Y | |
status | 单据状态 | String | Y | 需由 wmsStatus 自行映射SENDING( 出 库 中 ) SUCCESS ( 已发货、 已出库) CANCEL(取消) FAILED(失败或异常) |
shippingTime | 发运时间 | Long | N | 13位时间戳 |
skuList | 商品明细 | List <sku> |
N | |
errorMsg | 异常原因 | String | N |
sku 信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
sku | 仓库sku | String | Y | |
quantity | 商品数量 | Number | Y |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
success | 是否成功 | String | 必填 | true成功,false失败 |
errorMsg | 失败信息 | String | 选填 |
请求示例:
{
"accessId": "QIANYI",
"method": "pushOrderInfo",
"content": "{\"orderNumber\":\"DA250117100074\",\"onlineOrderId\":\"\",\"warehouseCode\":\"XY002\",\"carrier\":\"\",\"trackNumber\":\"333\",\"warehouseOrderNumber\":\"\",\"wmsStatus\":\"error\",\"status\":\"FAILED\",\"skuList\":{\"sku\":\"60000-test02\",\"quantity\":4},\"errorMsg\":\"仓库接收失败\"}",
"sign": "a125ee2d535ab0811c6d9f74d52a525534b3aee8"
}
返回信息:
{
"success": true,
"errorMsg": ""
}
14.2. 入库单推送接口
描述: 仓库将入库单信息推送至千易ERP,warehouseExtraType请联系千易为您提供
方法名:
- pushAsnInfo
POST /sys/automatic/receiveAsn/{warehouseExtraType}
接口参数:
字段名 | 字段描述 | 类型 | 必填 | 备注 | |
---|---|---|---|---|---|
warehouseCode | 仓库编码 | String | Y | ||
customerCode | 客户编码 | String | N | ||
asnNumber | 千易入库单号 | String | Y | ||
wmsStatus | 第三方系统的入库订单状态 | String | Y | 需由 wmsStatus 提供映射后的状态,映射表见下「入库单状态」 | |
referenceNumber | 仓库入库单号 | String | N | ||
finishTime | 完成时间 | Long | N | 13位时间戳 | |
updateTime | 收货更新时间 | Long | Y | 13位时间戳 | |
skuList | 商品信息 | Array | Y | ||
└ sku | 商品编码 | String | Y | ||
└ name | 商品名称 | String | N | ||
└estimatedQuantity | 预计数量 | Number | N | ||
└receivedQuantity | 已收数量 | Number | Y | goodQuantity + badQuantity | |
└goodQuantity | 良品数量 | Number | N | ||
└badQuantity | 不良品数量 | Number | N | ||
batchNo | 批次号 | String | N | 增量收货场景下,防止千易重复消费同一个入库批次号消息,需保证唯一性 |
返回信息:
字段名 | 字段描述 | 类型 | 必填 | 备注 |
---|---|---|---|---|
success | 是否成功 | String | 必填 | true成功,false失败 |
errorMsg | 失败信息 | String | 选填 |
请求示例:
{
"accessId": "QIANYI",
"method": "pushAsnInfo",
"content": "{\"customerCode\":null,\"asnNumber\":\"A241022159999\",\"warehouseCode\":\"Test-bin\",\"wmsStatus\":\"RECEIVING\",\"referenceNumber\":\"A241022159999\",\"finishTime\":null,\"updateTime\":1744098883894,\"skuList\":{\"sku\":\"V-012B-R\",\"name\":\"V-012B-R\",\"estimatedQuantity\":121,\"receivedQuantity\":2,\"goodQuantity\":2,\"badQuantity\":0},\"batchNo\":\"222222-1\"}",
"sign": "a125ee2d535ab0811c6d9f74d52a525534b3aee8"
}
返回信息
{
"success": true,
"errorMsg": ""
}
15. 入库单推送状态
枚举值 | 备注 |
---|---|
FINISHED | 已完成 |
CLOSED | 已关闭 |
SHIPPING | 发运中 |
RECEIVING | 收货中 |
智慧的跨境电商合作伙伴
