Skip to main content

运单服务-下单

基本信息

  • 方法:POST
  • 路径:/label/carrier/create
  • Handler:carrierApi.CreateOrder
  • Service:CarrierOpenAPIService.CreateOrder

用途

创建开放运单并向承运商下单,返回 TMS 运单号、渠道订单号、主跟踪号、面单地址和成本摘要。

幂等规则

externalRequestId 是幂等键,行为如下:

  • 如果同一 OpenAPI 用户下已经存在 created 状态的相同请求,会直接返回历史结果
  • 如果同一请求仍处于 processing 状态,会返回:request is processing, please retry later

请求参数

在询价参数基础上,额外支持以下字段。嵌套对象结构见下方各对象字段说明。

字段类型必填说明
externalRequestIdstring外部请求号,幂等键
carrierCodestring承运商代码
serviceCodestring服务代码
accountAliasstring账号别名,多账号场景建议传
accountIdint预留字段,当前未使用
senderAddressobject发件地址,结构见下方地址对象字段
recipientAddressobject收件地址,结构见下方地址对象字段
returnAddressobject退件地址,结构见下方地址对象字段;当前服务实现未消费
packagesarray包裹列表,至少 1 条,元素结构见下方包裹对象字段
productsarray商品列表,元素结构见下方商品对象字段
optionsobject附加选项,结构见下方附加选项对象字段
labelFileTypestring面单文件类型,如 PDF
sellerOrderNumberstring卖家订单号
referenceNostring订单参考号;当前服务实现未消费
selectedRateIdstring选中的报价 ID;当前服务实现未消费

地址对象字段

用于 senderAddressrecipientAddressreturnAddress 等字段。

字段类型必填说明
codestring地址编码
namestring名称/公司名
attentionNamestring联系人姓名
countryCodestring国家代码,如 US
stateCodestring州/省代码,如 CANY
citystring城市
addressLine1string地址行 1
addressLine2string地址行 2
addressLine3string地址行 3
postalCodestring邮编
phonestring联系电话
phoneExtensionstring电话分机
emailstring邮箱
memostring备注
midstringMID 标识,部分国际件场景使用
isResidentialbool是否住宅地址,默认 false
verifyStatusint地址校验状态,一般由响应回填,请求可不传

说明:Gin 绑定仅校验地址对象本身非空;实际调用时 countryCodeaddressLine1postalCode 为业务必填。

包裹对象字段

用于 packages[] 数组元素,至少 1 条。

字段类型必填说明
idint包裹 ID,内部使用,开放接口可不传
lengthfloat长度,单位由 options.dimensionUnitCode 决定
widthfloat宽度
heightfloat高度
weightfloat重量,单位由 options.weightUnitCode 决定
quantityint数量,默认 1
declaredValuefloat单包裹申报价值
reference1string参考号 1
reference2string参考号 2
reference3string参考号 3
hazMatobject危险品信息,结构见下方危险品对象字段
freightClassstring货运等级,LTL 等场景使用
quantityUnitPcsint件数单位

危险品对象字段

嵌套在 packages[].hazMat 中,仅危险品包裹需要传。

字段类型必填说明
ReferenceNumberstring参考号
shippingNamestring危险品正式运输名称
RegulationSetstring法规集,空运常用 IATA
TransportationModestring运输模式,常用 CAO
classDivisionNumberstring危险等级/分类号
quantitystring危险品数量
IDNumberstringUN/ID 编号
UOMstring计量单位
PackagingTypestring包装类型,如 FIBERBOARD BOX

商品对象字段

用于 products[] 数组元素,国际件建议传。

字段类型必填说明
idint商品 ID,内部使用,开放接口可不传
descriptionstring商品描述
quantityint数量
weightfloat重量
declaredValuefloat申报价值
declaredValueClassint申报价值等级
hsCodestringHS 编码
originCountrystring原产国代码

附加选项对象字段

用于 options 字段。

字段类型必填说明
deliveryConfirmationstring签收确认类型,如 signatureadult_signature
shipDatestring发货日期,格式 YYYY-MM-DD
packageTypestring包装类型,如 YOUR_PACKAGING
dimensionUnitCodestring尺寸单位,常用 INCM
weightUnitCodestring重量单位,常用 LBSKG
declaredValueCurrencyCodestring申报价值币种,如 USD
isUniqueSellerOrderNumberbool卖家订单号是否唯一,默认 false

请求示例

{
"externalRequestId": "REQ-20260611-CREATE-001",
"carrierCode": "UPARCEL",
"serviceCode": "GROUND",
"accountAlias": "UPARCEL_MAIN",
"accountId": 0,
"senderAddress": {
"name": "Sender Company",
"attentionName": "Tom",
"countryCode": "US",
"stateCode": "CA",
"city": "Los Angeles",
"addressLine1": "123 Main St",
"addressLine2": "",
"postalCode": "90001",
"phone": "1234567890",
"email": "demo@example.com",
"isResidential": false
},
"recipientAddress": {
"name": "Receiver Company",
"attentionName": "Jerry",
"countryCode": "US",
"stateCode": "NY",
"city": "New York",
"addressLine1": "456 Madison Ave",
"addressLine2": "",
"postalCode": "10001",
"phone": "1234567890",
"email": "demo@example.com",
"isResidential": false
},
"returnAddress": {
"name": "Return Company",
"attentionName": "Tom",
"countryCode": "US",
"stateCode": "CA",
"city": "Los Angeles",
"addressLine1": "789 Return Rd",
"addressLine2": "",
"postalCode": "90001",
"phone": "1234567890",
"email": "demo@example.com",
"isResidential": false
},
"packages": [
{
"length": 10,
"width": 8,
"height": 6,
"weight": 5.5,
"quantity": 1,
"declaredValue": 120,
"reference1": "BOX-001",
"reference2": "",
"reference3": ""
}
],
"products": [
{
"description": "T-shirt",
"quantity": 1,
"weight": 1.2,
"declaredValue": 25,
"hsCode": "610910",
"originCountry": "US"
}
],
"options": {
"deliveryConfirmation": "signature",
"shipDate": "2026-06-11",
"packageType": "YOUR_PACKAGING",
"dimensionUnitCode": "IN",
"weightUnitCode": "LBS",
"declaredValueCurrencyCode": "USD",
"isUniqueSellerOrderNumber": false
},
"labelFileType": "PDF",
"sellerOrderNumber": "SO-20260611-001",
"referenceNo": "REF-001",
"selectedRateId": "rate_d4g8m1abc"
}

成功响应示例

{
"code": 200,
"data": {
"externalRequestId": "REQ-20260611-CREATE-001",
"tmsShipmentNumber": "OAPI_d4g8m1abc",
"carrierCode": "UPARCEL",
"serviceCode": "GROUND",
"platformOrderNumber": "P202606110001",
"masterTrackingNumber": "1Z999AA10123456784",
"trackingNumbers": [
"1Z999AA10123456784"
],
"labelUrl": "https://label.example.com/1.pdf",
"labelFileType": "PDF",
"labels": [
{
"trackingNumber": "1Z999AA10123456784",
"labelUrl": "https://label.example.com/1.pdf",
"fileType": "PDF"
}
],
"costEstimate": {
"amount": 15.67,
"currencyCode": "USD",
"source": "carrier_cost"
}
},
"message": "success"
}

返回字段说明

字段类型说明
data.externalRequestIdstring外部请求号
data.tmsShipmentNumberstringTMS 侧生成的开放运单号
data.carrierCodestring承运商代码
data.serviceCodestring服务代码
data.platformOrderNumberstring渠道订单号
data.masterTrackingNumberstring主跟踪号
data.trackingNumbersarray[string]跟踪号列表
data.labelUrlstring主面单地址
data.labelFileTypestring面单文件类型
data.labelsarray面单明细,元素结构见下方面单对象字段
data.costEstimateobject成本摘要,结构见下方成本摘要对象字段

面单对象字段

用于 data.labels[] 数组元素。

字段类型说明
trackingNumberstring该面单对应跟踪号
labelUrlstring面单下载地址
fileTypestring面单文件类型,如 PDF

成本摘要对象字段

用于 data.costEstimate

字段类型说明
amountfloat预估成本金额
currencyCodestring币种,如 USD
sourcestring成本来源,当前固定为 carrier_cost

接口说明

  • 服务层会先落一条 processing 状态的审计记录,再调用渠道适配器 BuyLabel()
  • 下单成功后会更新为 created 状态,并保存跟踪号、面单列表和成本摘要
  • 如果保存审计记录时遇到唯一键冲突,会尝试返回已存在的幂等结果

当前实现注意点:

  • accountId 当前未使用
  • returnAddressreferenceNoselectedRateId 在请求结构中已定义,但当前服务实现没有实际消费
  • 实际下单服务代码取自解析后的账号服务,不是直接把请求里的 selectedRateId 用于下单