错误码

HIOBuy 有两类错误形态:协议错误(非 2xx,含 error 对象)与 业务失败(部分订单路由 HTTP 200 且 success: false)。

协议错误(HTTP 4xx / 5xx) {#protocol-errors}

{
  "error": {
    "code": "INBOUND_VALIDATION_FAILED",
    "message": "Some inbound information is missing or invalid.",
    "request_id": "req_abc123",
    "category": "VALIDATION_ERROR",
    "field": "tracking_number",
    "details": {
      "fields": [
        {
          "field": "items[0].name",
          "code": "REQUIRED",
          "message": "Product name is required."
        }
      ]
    }
  }
}
字段说明
error.code机器可读枚举,用于分支
error.message人类可读说明(英文)
error.request_id与响应头 x-request-id 一致
error.category粗分类:AUTH_ERROR / RATE_LIMIT_ERROR / VALIDATION_ERROR / CHANNEL_ERROR / INTERNAL_ERROR
error.field可选,与本错误最相关的字段路径
error.details可选对象;校验类可含 details.fields
error.upstream可选,渠道上游摘要(已脱敏)

字段级 details.fields[].codeREQUIRED | INVALID_VALUE | INVALID_FORMAT | OUT_OF_RANGE

HTTP 状态原则

HTTP场景
400JSON 无法解析 / 通用校验
401API Key 无效
403已认证但无能力(含履约门禁)
404资源不存在或无权
409状态 / 唯一性冲突
422可解析但业务校验失败
429限流 / 配额
500 / 502 / 503内部或上游故障

错误码参考 {#error-codes}

机器可读权威目录见 data/errors.catalog.json。摘要:

CodeHTTPCategoryWhen
INVALID_API_KEY401AUTH_ERROR无效或缺失 Bearer Token
UNAUTHORIZED401AUTH_ERROR缺少或无效的 API Key(同 INVALID_API_KEY)
CHANNEL_NOT_AUTHORIZED401AUTH_ERRORApp 未授权该渠道
FORBIDDEN403AUTH_ERRORKey 有效但无权限(如渠道未开通)
INSUFFICIENT_SCOPE403AUTH_ERRORAPI Key 缺少该路由所需 scope
CHANNEL_NOT_ENABLED403AUTH_ERROR该 App 未启用此 channel
CHANNEL_AUTH_REQUIRED403AUTH_ERROR尚未完成该 channel 授权
CHANNEL_AUTH_EXPIRED403AUTH_ERROR授权已过期,需在 Portal 重新授权
CHANNEL_AUTH_REVOKED403AUTH_ERROR授权已撤销
FULFILLMENT_MODE_NOT_SUPPORTED403AUTH_ERROR当前履约模式不支持(如 self 调用履约接口)
FULFILLMENT_ACCESS_REQUIRED403AUTH_ERROR(预留)缺少有效履约访问授权
FULFILLMENT_ACCESS_SUSPENDED403AUTH_ERROR(预留)履约访问已暂停
WAREHOUSE_AUTH_REQUIRED403AUTH_ERROR仓库代履约但未完成仓库授权
WAREHOUSE_AUTH_EXPIRED403AUTH_ERROR仓库授权已过期
WAREHOUSE_AUTH_INVALID403AUTH_ERROR仓库拒绝开发者鉴权
VALIDATION_ERROR400VALIDATION_ERROR请求参数不合法 / 币种不支持等
UNSUPPORTED_CHANNEL400VALIDATION_ERROR未知 channel 值
UNSUPPORTED_FIELD400VALIDATION_ERROR该路由不允许此字段
NOT_FOUND404VALIDATION_ERROR路由或资源不存在
CHANNEL_CAPABILITY_NOT_SUPPORTED400CHANNEL_ERROR该渠道不支持此接口
CHANNEL_UPSTREAM_ERROR502CHANNEL_ERROR阿里官方接口失败(已脱敏)
WAREHOUSE_UPSTREAM_ERROR502CHANNEL_ERROR仓库/履约商上游失败(已脱敏)
INTERNAL_ERROR500INTERNAL_ERROR服务内部错误 — 可退避重试
RATE_LIMIT_EXCEEDED429RATE_LIMIT_ERROR超过每分钟/突发限流
QUOTA_EXCEEDED429RATE_LIMIT_ERROR当日渠道配额已用尽
PLATFORM_QUOTA_EXCEEDED429RATE_LIMIT_ERROR平台该渠道月度总容量已达上限
PAYMENT_DECLINED402VALIDATION_ERROR支付被拒绝
PAYMENT_INSUFFICIENT_FUNDS402VALIDATION_ERROR余额不足(采购支付)
ORDER_ALREADY_PAID409VALIDATION_ERROR订单已支付
ORDER_CANCELLED409VALIDATION_ERROR订单已取消
PRODUCT_UNAVAILABLE422VALIDATION_ERROR商品不可售 / 已下架
IDEMPOTENCY_CONFLICT409VALIDATION_ERROR外部单号/幂等键冲突
EXTERNAL_ORDER_ID_ALREADY_EXISTS409VALIDATION_ERRORexternal_order_id 在当前 App 内已使用
PARCEL_NOT_FOUND404VALIDATION_ERROR无效或尚未入库的包裹号
INVALID_SHIPPING_CHANNEL400VALIDATION_ERROR无效的 shipping_channel_code
INSUFFICIENT_BALANCE402VALIDATION_ERROR履约钱包余额不足(支付/退运确认等)
SHIPMENT_ALREADY_PAID409VALIDATION_ERROR国际运输单已支付
SHIPMENT_NOT_FOUND404VALIDATION_ERROR运输单不存在或无权限
SHIPMENT_NOT_INTERCEPTABLE409VALIDATION_ERROR当前状态无法申请拦截
SHIPMENT_INTERCEPTION_ALREADY_REQUESTED409VALIDATION_ERROR已经提交过拦截申请
INVALID_INTERCEPTION_REASON422VALIDATION_ERROR拦截 reason CODE 不合法
INTERCEPTION_REMARK_REQUIRED422VALIDATION_ERRORreason = OTHER 时 remark 必填
SHIPMENT_CREATE_EXCEPTION400VALIDATION_ERROR创单被拒绝(未填物品属性、包裹未入库等,见 message)
SHIPMENT_NOT_CANCELLABLE409VALIDATION_ERROR当前状态不可取消运输单
SHIPMENT_ALREADY_CANCELLED409VALIDATION_ERROR运输单已取消
PACKAGE_ALREADY_CONSOLIDATED409VALIDATION_ERROR包裹已在其他运输单中
INBOUND_TRACKING_ALREADY_SHIPPED409VALIDATION_ERROR物流单号已关联已发货包裹
INBOUND_TRACKING_ALREADY_EXISTS409VALIDATION_ERROR物流单号已存在
INBOUND_VALIDATION_FAILED422VALIDATION_ERROR入库预报字段校验失败
INBOUND_NOT_FOUND404VALIDATION_ERRORInbound 不存在或无权
PACKAGE_NOT_FOUND404VALIDATION_ERROR包裹不存在或无权访问
INBOUND_NOT_EDITABLE409VALIDATION_ERROR当前状态不可取消/修改
INBOUND_ALREADY_RECEIVED409VALIDATION_ERROR已到仓,不可取消预报
INBOUND_PACKAGE_MISMATCH409VALIDATION_ERROR无法关联到给定入库/包裹
INVALID_TRACKING_NUMBER422VALIDATION_ERROR物流单号格式无效
PACKAGE_COUNT_INVALID422VALIDATION_ERRORpackage_count 非法
TOTAL_VALUE_INVALID422VALIDATION_ERRORtotal_value 非法
UNSUPPORTED_CURRENCY422VALIDATION_ERROR币种不支持(Inbound:CNY/USD/KRW)
UNCLAIMED_PACKAGE_NOT_FOUND404VALIDATION_ERROR无人认领包裹不存在
TRACKING_NUMBER_MISMATCH422VALIDATION_ERROR认领时完整物流单号不匹配
PACKAGE_ALREADY_CLAIMED409VALIDATION_ERROR包裹已被认领
PACKAGE_NOT_CLAIMABLE409VALIDATION_ERROR当前状态不可认领
CLAIM_ATTEMPTS_EXCEEDED429RATE_LIMIT_ERROR同一 ucp 认领失败次数过多
RETURN_NOT_FOUND404VALIDATION_ERROR退运单不存在或无权
RETURN_NOT_CONFIRMABLE409VALIDATION_ERROR当前状态不可确认退运
RETURN_NOT_CANCELLABLE409VALIDATION_ERROR当前状态不可取消退运
RETURN_ALREADY_RETURNED409VALIDATION_ERROR已退货
RETURN_ALREADY_CANCELLED409VALIDATION_ERROR已取消 / 已作废
RETURN_FEE_NOT_READY409VALIDATION_ERROR退运费用未就绪
RETURN_FEE_CHANGED409VALIDATION_ERROR确认金额与当前费用不一致
PACKAGE_NOT_RETURNABLE409VALIDATION_ERROR包裹状态不可退运
INVALID_RETURN_REASON422VALIDATION_ERROR退运原因 CODE 非法
INVALID_RETURN_ADDRESS422VALIDATION_ERROR退货地址非法
RETURN_VALIDATION_FAILED422VALIDATION_ERROR退运字段校验失败
VALUE_ADDED_SERVICE_NOT_FOUND422VALIDATION_ERROR增值服务 CODE 不存在
VALUE_ADDED_SERVICE_UNAVAILABLE422VALIDATION_ERROR增值服务当前不可用
VALUE_ADDED_SERVICE_INVALID_STAGE422VALIDATION_ERROR增值服务阶段不匹配
VALUE_ADDED_SERVICE_QUANTITY_INVALID422VALIDATION_ERROR增值服务数量非法
SERVICE_REQUEST_NOT_FOUND404VALIDATION_ERROR服务申请不存在
RESOURCE_NOT_FOUND404VALIDATION_ERROR关联资源不存在
RESOURCE_NOT_ELIGIBLE_FOR_SERVICE409VALIDATION_ERROR资源状态不可申请服务
SERVICE_FEE_NOT_READY409VALIDATION_ERROR服务报价未就绪
SERVICE_FEE_CHANGED409VALIDATION_ERROR服务确认金额不一致
SERVICE_REQUEST_VALIDATION_FAILED422VALIDATION_ERROR服务申请字段校验失败
TRANSACTION_NOT_FOUND404VALIDATION_ERROR账务流水不存在或不属于当前 App
INVOICE_NOT_FOUND404VALIDATION_ERROR发票不存在或不属于当前 App
TRANSACTION_NOT_INVOICEABLE409VALIDATION_ERROR流水不可开票
TRANSACTION_ALREADY_INVOICED409VALIDATION_ERROR流水已开票
TRANSACTION_INVOICE_PENDING409VALIDATION_ERROR流水开票处理中
INVOICE_NOT_DOWNLOADABLE409VALIDATION_ERROR发票未开具,不可下载
INVOICE_VALIDATION_FAILED422VALIDATION_ERROR发票申请校验失败
INVOICE_CURRENCY_MISMATCH422VALIDATION_ERROR发票币种不一致
INVALID_INVOICE_TITLE422VALIDATION_ERROR发票抬头非法
INVALID_TAX_NUMBER422VALIDATION_ERROR税号非法
INVALID_BILLING_ADDRESS422VALIDATION_ERRORbilling_address 缺失或无效
TICKET_NOT_FOUND404VALIDATION_ERROR工单不存在或不属于当前 Application
TICKET_NOT_REPLYABLE409VALIDATION_ERROR工单不可回复(如已关闭)
TICKET_ALREADY_CLOSED409VALIDATION_ERROR工单已关闭
INVALID_TICKET_CATEGORY422VALIDATION_ERROR工单分类非法
INVALID_TICKET_PRIORITY422VALIDATION_ERROR工单优先级非法
INVALID_RELATED_RESOURCE422VALIDATION_ERROR关联资源类型非法
TICKET_VALIDATION_FAILED422VALIDATION_ERROR工单字段校验失败
RELATED_RESOURCE_NOT_FOUND404VALIDATION_ERROR关联业务资源不存在或不属于当前 App
MESSAGE_REQUIRED422VALIDATION_ERROR消息内容必填
MESSAGE_TOO_LONG422VALIDATION_ERROR消息超过 10000 字符

业务失败(HTTP 200) {#business-failures}

采购 preview/create/pay 在市场拒绝但 Gateway 请求合法时,可能返回 HTTP 200success: false

{
  "channel": "1688",
  "success": false,
  "code": "ORDER_CREATE_FAILED",
  "message": "One or more lines could not be purchased.",
  "failed_offers": [
    {
      "offer_id": "...",
      "spec_id": "...",
      "error_code": "STOCK_NOT_ENOUGH",
      "error_message": "Insufficient stock"
    }
  ],
  "request_id": "req_..."
}
  • 先检查 success
  • 查看 unavailable_lines(preview)或 failed_offers(create)
  • 部分成功:1688 可能 success: truefailed_offers 非空

商品上游失败 {#upstream-product-errors}

无效淘宝口令、商品不存在或厂商超时等,商品路由通常返回 502 CHANNEL_UPSTREAM_ERROR,而不是空商品壳。

建议处理 {#handling}

  1. 每条错误路径记录 request_id
  2. 429 / 500 指数退避重试;未修正输入前不要重试 400 / 401
  3. 502 CHANNEL_UPSTREAM_ERROR,向运维展示厂商信息;瞬时故障可再试一次。
  4. 创单使用 external_order_id / 淘宝 outer_purchase_id 做幂等 — 见 采购订单

获取支持

需要集成帮助?请联系开发者支持 support@hiobuy.com · 预计 1–2 个工作日内回复

发送邮件