按 OMS 出库单号更新当前客户的交运(揽收)状态,支持直接状态或 TikTok、Lazada、Shopee、SHEIN、Mercado、Temu 原始状态映射。
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
使用范围
本页补录已有的出库单接口。每次按当前鉴权客户及 outboundOrderNo 更新一张既有 OMS 出库单的交运(揽收)状态,不是按平台订单号修改平台订单的处理中、已发货等业务状态。不主动查询平台,不创建订单,不要求订单已有运单号。
Mercado 主/子状态完整请求
Mercado 必须使用 shipment.status / shipment.substatus,不能用订单 PAID 等业务状态代替。
{
"appKey": "YOUR_APP_KEY",
"reqTime": "1793325600",
"data": {
"requestId": "erp-20261030-0002",
"outboundOrderNo": "OBS000002",
"salesPlatform": 10,
"platformOrderStatus": "READY_TO_SHIP",
"platformOrderSubStatus": "PICKED_UP",
"statusTime": "2026-10-30 10:00:00"
}
}SHEIN 平台原始状态完整请求
{
"appKey": "YOUR_APP_KEY",
"reqTime": "1793325600",
"data": {
"requestId": "erp-20261030-0003",
"outboundOrderNo": "OBS000003",
"salesPlatform": 31,
"platformOrderStatus": "4"
}
}Temu 平台原始状态完整请求
{
"appKey": "YOUR_APP_KEY",
"reqTime": "1793325600",
"data": {
"requestId": "erp-20261030-0004",
"outboundOrderNo": "OBS000004",
"salesPlatform": 34,
"platformOrderStatus": "5"
}
}上述 AppKey、出库单号、追踪号和时间均为示例。实际调用须替换为已授权 AppKey、所属出库单、当前 reqTime,并重新计算签名;不要直接调用示例。
六平台状态映射
下表为当前服务映射口径,不代表接口会主动拉取平台状态。未知状态或不支持的组合返回参数/业务错误,不猜测或强行推进。
| 平台(salesPlatform) | 未揽收 1 | 平台取消 2 | 已揽收 3 | 补充规则 |
|---|---|---|---|---|
| TikTok(20) | UNPAID、ON_HOLD、AWAITING_SHIPMENT、PARTIALLY_SHIPPING、AWAITING_COLLECTION | CANCEL、CANCELLED | IN_TRANSIT、DELIVERED、COMPLETED | 原映射不变 |
| Lazada(3) | PENDING、READY_TO_SHIP、PACKED、PROCESSING,可与取消状态混合 | 全部子单 CANCELED/CANCELLED | 任一子单 SHIPPED/DELIVERED | 当前全部子单状态去重后用英文逗号拼接,如 ready_to_ship,canceled;任一已交运优先,其次全部取消 |
| Shopee(4) | UNPAID、READY_TO_SHIP、PROCESSED、IN_CANCEL、INVOICE_PENDING | CANCELLED | SHIPPED、COMPLETED | 原映射不变 |
| SHEIN(31) | 1、2、7 | 未配置 | 4、5 | 3、6、8、9 等未映射值拒绝;状态用字符串 |
| Mercado(10) | PENDING、HANDLING;READY_TO_SHIP + 无子状态/AUTHORIZED_BY_CARRIER | CANCELLED、CANCELED | SHIPPED、DELIVERED、NOT_DELIVERED;READY_TO_SHIP + PICKED_UP/IN_HUB | 主状态能独立确定时按主状态;READY_TO_SHIP 的未知子状态拒绝 |
| Temu(34) | 1、2 | 3 | 5、51 | 4、41 不证明实物揽收,拒绝;状态用字符串 |
响应字段
以下为完整响应,不是仅展示 data。外层使用 code / msg / data,没有外层 success 字段。先判断业务 code,再判断 data.success。HTTP 200 或 code=200 不代表目标状态一定应用成功。
| 字段 | 类型 | 返回保证与含义 |
| --- | --- | --- | --- |
| code | integer | 公共业务码;200 为处理结果返回,24030 为接口业务异常;鉴权/校验错误沿用公共错误码 |
| msg | string | 公共提示,成功默认操作成功,业务异常说明失败原因 |
| data | object/null | 正常处理时为结果对象;业务异常不保证有结果 |
| data.outboundOrderNo | string | 正常结果存在,OMS 出库单号 |
| data.beforeStatus | integer/null | 正常快照时赋值;0 无信息、1 未揽收、2 平台取消、3 已揽收;并发缺失快照时可能为空或省略 |
| data.afterStatus | integer/null | 更新后状态,与 beforeStatus 同一编码及空值边界 |
| data.changed | boolean | 结果对象存在时赋值,揽收状态是否实际变化 |
| data.success| boolean | 结果对象存在时赋值,是否达到请求目标;终态冲突为 false |
| data.message| string | 更新、幂等、缺失快照或冲突说明 |
实际变更成功
{
"code": 200,
"data": {
"outboundOrderNo": "OBS000001",
"beforeStatus": 1,
"afterStatus": 3,
"changed": true,
"success": true,
"message": "揽收状态更新成功"
},
"msg": "操作成功"
}相同终态重复提交:幂等成功
{
"code": 200,
"data": {
"outboundOrderNo": "OBS000001",
"beforeStatus": 3,
"afterStatus": 3,
"changed": false,
"success": true,
"message": "状态未变化,按幂等处理"
},
"msg": "操作成功"
}冲突示例:已揽收后请求平台取消
{
"code": 200,
"data": {
"outboundOrderNo": "OBS000001",
"beforeStatus": 3,
"afterStatus": 3,
"changed": false,
"success": false,
"message": "订单当前揽收状态与请求目标不一致,未覆盖当前状态"
},
"msg": "操作成功"
}业务异常示例
{
"code": 24030,
"data": null,
"msg": "请求销售平台与订单平台不一致"
}幂等、终态与重试
- 仅外部允许提交 1/2/3,不能主动回退为 0 无信息。
- 未揽收等非终态可按统一状态机推进;已揽收与平台取消是受保护终态,不互相覆盖,也不回退为未揽收。
- 相同状态重复提交返回 changed=false、success=true;不同终态冲突返回 changed=false、success=false,原状态不变。
- requestId 用于日志追踪,重复请求仍按当前出库单状态处理,不复用旧响应缓存。
- 网络异常或超时不能直接视为失败;先查询单据状态核对,需要时按相同目标重试。不可通过更换 requestId 绕过终态保护。
- 已推仓单据沿现有流程同步 WMS 揽收状态;不自动取消/拦截出库单,不改变平台订单履约业务状态。
