Skip to main content

TMS 运单开放接口-批量下单

基本信息

  • 方法:POST
  • 路径:/label/sync-batch-create

用途

接收一次批量下单请求,落库批次与明细,并异步执行。每条明细处理完成以及整批完成时,会向 callbackUrl 发起 POST 回调通知。

公共请求头

所有 TMS 运单开放接口都需要传以下请求头:

Content-Type: application/json
Apikey: {{api_key}}
Apisign: {{api_sign}}
Timestamp: {{timestamp}}

请求参数

字段类型必填说明
callbackUrlstring回调地址,必须为带 scheme 与 host 的合法 URL
itemsarray批量下单明细列表,至少 1 条,上限由系统配置决定(默认 100

items 字段

每条元素内嵌运单结构,下表只列出非嵌入字段。

字段类型必填说明
itemReferencestring明细外部唯一标识;同一批次内不允许重复
apiUserCodestring该明细对应的客户编号;缺失会被预校验拒绝(apiUserCode is required
serviceCodestring该明细使用的服务代码;缺失会被预校验拒绝(serviceCode is required
accountIdint指定账号 ID;当前未消费
shipFromobject发件地址,结构同运单创建接口
shipToobject收件地址,结构同运单创建接口
packagesarray包裹列表,结构同运单创建接口
productsarray商品列表,结构同运单创建接口
optionsobject附加选项,结构同运单创建接口
sellerOrderNumberstring卖家订单号

请求示例

{
"callbackUrl": "https://client.example.com/tms/batch-callback",
"items": [
{
"itemReference": "ITEM-001",
"apiUserCode": "CUST-001",
"serviceCode": "UPARCEL_GROUND",
"accountId": 0,
"shipFrom": {
"name": "Sender Company",
"countryCode": "US",
"stateCode": "CA",
"city": "Los Angeles",
"addressLine1": "123 Main St",
"postalCode": "90001",
"phone": "1234567890",
"isResidential": false
},
"shipTo": {
"name": "Receiver Company",
"countryCode": "US",
"stateCode": "NY",
"city": "New York",
"addressLine1": "456 Madison Ave",
"postalCode": "10001",
"phone": "1234567890",
"isResidential": false
},
"packages": [
{
"length": 10,
"width": 8,
"height": 6,
"weight": 5.5,
"quantity": 1,
"declaredValue": 120
}
],
"options": {
"shipDate": "2026-06-26",
"dimensionUnitCode": "IN",
"weightUnitCode": "LBS",
"declaredValueCurrencyCode": "USD"
},
"sellerOrderNumber": "SO-20260626-001"
},
{
"itemReference": "ITEM-002",
"apiUserCode": "CUST-001",
"serviceCode": "FEDEX_GROUND",
"shipFrom": {
"name": "Sender Company",
"countryCode": "US",
"stateCode": "CA",
"city": "Los Angeles",
"addressLine1": "123 Main St",
"postalCode": "90001",
"isResidential": false
},
"shipTo": {
"name": "Receiver Company",
"countryCode": "US",
"stateCode": "TX",
"city": "Houston",
"addressLine1": "9100 Southwest Freeway",
"postalCode": "77036",
"isResidential": false
},
"packages": [
{
"length": 12,
"width": 10,
"height": 8,
"weight": 7.5,
"quantity": 1
}
]
}
]
}

成功响应示例

{
"code": 200,
"data": {
"batchId": 1001,
"batchNo": "sbl_d4g8m1abc",
"totalCount": 2,
"acceptedCount": 2,
"rejectedCount": 0,
"status": "processing"
},
"message": "success"
}

返回字段说明

字段类型说明
data.batchIdint批次 ID
data.batchNostring批次号,格式为 sbl_ + xid
data.totalCountint总条数
data.acceptedCountint预校验通过条数
data.rejectedCountint预校验拒绝条数(如缺 serviceCode/apiUserCode
data.statusstring批次状态,见下方

批次状态

取值含义
pending待处理(无 accepted 项时短暂出现)
processing处理中
partial_success部分成功
success全部成功
failed全部失败(含 accepted=0 的情况)

明细状态

取值含义
pending待处理
processing处理中
success成功
failed失败
rejected预校验拒绝

回调通知

回调由系统侧主动发起,POST 到请求里的 callbackUrlContent-Type: application/json,HTTP 状态码 2xx 视为成功,否则按配置上限重试。

明细级回调(每条处理完成时)

{
"batchId": 1001,
"batchNo": "sbl_d4g8m1abc",
"itemReference": "ITEM-001",
"status": "success",
"shipmentNumber": "S202606260001",
"trackingCode": "1Z999AA10123456784",
"errorMessage": ""
}
字段类型说明
batchIdint批次 ID
batchNostring批次号
itemReferencestring明细外部标识
statusstring明细状态,success / failed / rejected
shipmentNumberstring成功时回填的 TMS 运单号
trackingCodestring成功时回填的跟踪号
errorMessagestring失败/拒绝原因

批次级回调(整批处理完成时)

{
"batchId": 1001,
"batchNo": "sbl_d4g8m1abc",
"totalCount": 2,
"acceptedCount": 2,
"rejectedCount": 0,
"successCount": 2,
"failedCount": 0,
"status": "success"
}
字段类型说明
batchIdint批次 ID
batchNostring批次号
totalCountint总条数
acceptedCountint预校验通过条数
rejectedCountint预校验拒绝条数
successCountint实际下单成功条数
failedCountint实际下单失败条数
statusstring批次最终状态

接口说明

  • 接口只做请求受理,不阻塞等待下单结果
  • 预校验仅检查 serviceCode/apiUserCode 是否为空,以及 itemReference 是否重复;其余业务校验在异步处理阶段完成,失败原因通过明细回调 errorMessage 返回
  • 失败的明细会重试,达到上限后标记为 failed 并停止
  • items[].accountId 当前未使用
  • 异步处理依赖 Redis 队列与定时补偿扫描;Redis 不可用时吞吐会下降

错误响应示例

{
"code": 400,
"data": null,
"message": "callbackUrl is required"
}
codemessage场景
401请传入API授权信息缺少 Apikey
401请传入apiSign授权签名信息缺少 Apisign
400由 Gin 绑定错误文本决定参数绑定失败
400callbackUrl is required / callbackUrl is invalid缺失或非法 callbackUrl
400items is required缺失 items
400itemReference is required / duplicate itemReference in batchitemReference 缺失或重复
400items exceeds limit 100超过单批上限

响应码约定:

  • 成功时响应体 code = 200
  • 参数校验或业务失败时,通常返回 code = 400
  • 鉴权失败时,通常返回 code = 401
  • 这套开放接口的成功码不是后台私有接口常见的 0