Lỗi

HIOBuy dùng hai dạng lỗi: protocol errors (HTTP không phải 2xx với object error) và business outcomes (HTTP 200 với success: false trên một số route đơn hàng).

Protocol errors (HTTP 4xx / 5xx) {#protocol-errors}

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "product_id, url, mi_id, or tao_password is required.",
    "request_id": "req_abc123",
    "category": "VALIDATION_ERROR"
  }
}
FieldMô tả
error.codeEnum cho máy đọc — dùng cho logic rẽ nhánh
error.messageGiải thích cho người đọc (tiếng Anh)
error.request_idGiống header response x-request-id
error.categoryNhóm tổng quát: AUTH_ERROR, RATE_LIMIT_ERROR, VALIDATION_ERROR, CHANNEL_ERROR, INTERNAL_ERROR
error.upstreamTóm tắt lỗi vendor tùy chọn trên CHANNEL_UPSTREAM_ERROR (đã sanitize)

Tham chiếu mã lỗi {#error-codes}

Catalog chính thức cho máy đọc là data/errors.catalog.json. Tóm tắt:

CodeHTTPCategoryKhi nào
INVALID_API_KEY401AUTH_ERRORBearer token không hợp lệ hoặc bị thiếu
CHANNEL_NOT_AUTHORIZED401AUTH_ERRORKênh chưa được ủy quyền cho app này
INSUFFICIENT_SCOPE403AUTH_ERRORKey/app không được phép thực hiện thao tác
FULFILLMENT_MODE_NOT_SUPPORTED403AUTH_ERROR/v1/fulfillment/* trên app self-fulfillment
VALIDATION_ERROR400VALIDATION_ERRORField body bị thiếu/không hợp lệ, currency không được hỗ trợ
UNSUPPORTED_CHANNEL400VALIDATION_ERRORGiá trị channel không xác định
UNSUPPORTED_FIELD400VALIDATION_ERRORví dụ currency trên product routes
NOT_FOUND404VALIDATION_ERRORĐơn hàng hoặc tài nguyên không tồn tại
RATE_LIMIT_EXCEEDED429RATE_LIMIT_ERRORRate limit theo phút
QUOTA_EXCEEDED429RATE_LIMIT_ERRORHết quota kênh hằng ngày
PLATFORM_QUOTA_EXCEEDED429RATE_LIMIT_ERRORGiới hạn năng lực toàn nền tảng
CHANNEL_CAPABILITY_NOT_SUPPORTED400CHANNEL_ERRORThao tác không khả dụng trên kênh này
CHANNEL_UPSTREAM_ERROR502CHANNEL_ERRORMarketplace từ chối cuộc gọi
INTERNAL_ERROR500INTERNAL_ERRORGateway lỗi ngoài dự kiến — retry với backoff
PARCEL_NOT_FOUND404VALIDATION_ERRORKiện hàng không hợp lệ hoặc chưa nhập kho (fulfillment)
INVALID_SHIPPING_CHANNEL400VALIDATION_ERRORshipping_channel_code sai
INSUFFICIENT_BALANCE402VALIDATION_ERRORVí fulfillment không đủ để thanh toán

Lỗi nghiệp vụ (HTTP 200) {#business-failures}

Procurement preview/create/pay có thể trả về HTTP 200 với success: false khi marketplace từ chối thao tác nhưng request Gateway hợp lệ.

{
  "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_..."
}
  • Kiểm tra success trước khi xem cuộc gọi là đã hoàn tất
  • Xem unavailable_lines (preview) hoặc failed_offers (create)
  • Thành công một phần: 1688 có thể trả success: true với failed_offers không rỗng

Lỗi upstream sản phẩm {#upstream-product-errors}

Taobao口令 không hợp lệ, sản phẩm bị thiếu hoặc vendor timeout trên product routes thường trả về 502 với CHANNEL_UPSTREAM_ERROR — không phải một product shell rỗng.

Cách xử lý khuyến nghị {#handling}

  1. Ghi log request_id trên mọi nhánh lỗi.
  2. Retry 429500 với exponential backoff; không retry 400 / 401 khi chưa sửa input.
  3. Với 502 CHANNEL_UPSTREAM_ERROR, hiển thị message vendor cho ops; có thể retry một lần cho sự cố tạm thời.
  4. Order create: dùng external_order_id / Taobao outer_purchase_id để idempotency — xem Procurement orders.