跳到主要内容

运单服务-询价

基本信息

  • 方法:POST
  • 路径:/label/carrier/rate
  • Handler:carrierApi.GetRate
  • Service:CarrierOpenAPIService.GetRate

用途

根据承运商、服务代码、账号别名、发件地址、收件地址和包裹信息查询可用报价。

公共请求头

所有承运商开放接口(询价 / 下单 / 取消 / 轨迹 / 地址校验)都需要传以下请求头:

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

鉴权规则:

  • Apikey 不能为空
  • Apisign 不能为空
  • Timestamp 参与签名校验
  • 鉴权成功后,系统会把当前 OpenAPI 用户写入上下文中的 userId

请求参数

字段类型必填说明
externalRequestIdstring外部请求号
carrierCodestring承运商代码
serviceCodestring服务代码
accountAliasstring账号别名,多账号场景建议传
accountIdint预留字段,当前未使用
senderAddressobject发件地址,结构见下方地址对象字段
recipientAddressobject收件地址,结构见下方地址对象字段
packagesarray包裹列表,至少 1 条,元素结构见下方包裹对象字段
productsarray商品列表,国际件建议传,元素结构见下方商品对象字段
optionsobject附加选项,结构见下方附加选项对象字段

地址对象字段

用于 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-RATE-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
},
"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
}
}

成功响应示例

{
"code": 200,
"data": {
"rates": [
{
"rateId": "rate_d4g8m1abc",
"carrierCode": "UPARCEL",
"serviceCode": "GROUND",
"estDays": 3,
"costEstimate": {
"amount": 12.34,
"currencyCode": "USD",
"source": "carrier_cost"
}
}
]
},
"message": "success"
}

返回字段说明

字段类型说明
data.ratesarray报价列表
data.messagesarray附加提示信息,通常为空
data.rates[].rateIdstring报价 ID
data.rates[].carrierCodestring承运商代码
data.rates[].carrierNamestring承运商名称
data.rates[].serviceCodestring服务代码
data.rates[].estDaysint预计妥投天数
data.rates[].costEstimateobject成本摘要,无成本时可能为空
data.rates[].costEstimate.amountfloat预估成本金额
data.rates[].costEstimate.currencyCodestring币种,如 USD
data.rates[].costEstimate.sourcestring成本来源,当前固定为 carrier_cost

接口说明

  • 该接口内部会把请求转换为标准 shipment.Shipment 后调用渠道适配器 GetRate()
  • serviceCode 不传时,会按账号可用服务解析
  • 如果账号解析失败,会直接返回错误

错误响应示例

{
"code": 400,
"data": null,
"message": "未找到可用的账号服务"
}
codemessage场景
401请传入API授权信息缺少 Apikey
401请传入apiSign授权签名信息缺少 Apisign
400由 Gin 绑定错误文本决定参数绑定失败
400未找到可用的账号服务找不到可用账号
400存在多个可用账号,请提供 accountAlias 进行消歧多账号未消歧
400unsupported carrier不支持的承运商

响应码约定:

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