الأخطاء

يستخدم HIOBuy شكلين للأخطاء: أخطاء البروتوكول (غير 2xx مع error) وإخفاقات الأعمال (HTTP 200 مع success: false في بعض مسارات الطلب).

Protocol errors (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."
        }
      ]
    }
  }
}
FieldDescription
error.codeMachine-readable enum — use for branching logic
error.messageHuman-readable explanation (English)
error.request_idSame as x-request-id response header
error.categoryCoarse grouping: AUTH_ERROR, RATE_LIMIT_ERROR, VALIDATION_ERROR, CHANNEL_ERROR, INTERNAL_ERROR
error.fieldOptional primary field path related to this error
error.detailsOptional object; validation may include details.fields: [{ field, code, message }]
error.upstreamOptional vendor error summary on CHANNEL_UPSTREAM_ERROR (sanitized)

Field-level details.fields[].code values: REQUIRED | INVALID_VALUE | INVALID_FORMAT | OUT_OF_RANGE.

HTTP status principles

HTTPWhen
400Unparseable JSON / generic validation
401Invalid API key
403Authenticated but not allowed (including fulfillment mode gate)
404Missing or inaccessible resource
409State / uniqueness conflict
422Parsed body fails business validation
429Rate limit / quota
500 / 502 / 503Internal or upstream failure

مرجع رموز الأخطاء {#error-codes}

الكتالوج المعياري: data/errors.catalog.json. ملخص:

CodeHTTPCategoryWhen
INVALID_API_KEY401AUTH_ERRORرمز Bearer غير صالح أو مفقود
UNAUTHORIZED401AUTH_ERRORمفتاح API مفقود/غير صالح
CHANNEL_NOT_AUTHORIZED401AUTH_ERRORالقناة غير مصرّح بها لهذا التطبيق
FORBIDDEN403AUTH_ERRORالمفتاح صالح لكن غير مسموح
INSUFFICIENT_SCOPE403AUTH_ERRORنطاق (scope) مطلوب للمسار مفقود
CHANNEL_NOT_ENABLED403AUTH_ERRORالقناة غير مفعّلة لهذا التطبيق
CHANNEL_AUTH_REQUIRED403AUTH_ERRORتفويض القناة غير مكتمل
CHANNEL_AUTH_EXPIRED403AUTH_ERRORانتهى تفويض القناة — أعد التفويض في Portal
CHANNEL_AUTH_REVOKED403AUTH_ERRORتم إلغاء تفويض القناة
FULFILLMENT_MODE_NOT_SUPPORTED403AUTH_ERROR/v1/fulfillment/* على تطبيق self-fulfillment
FULFILLMENT_ACCESS_REQUIRED403AUTH_ERROR(محجوز) لم يُمنح وصول fulfillment
FULFILLMENT_ACCESS_SUSPENDED403AUTH_ERROR(محجوز) وصول fulfillment معلّق
WAREHOUSE_AUTH_REQUIRED403AUTH_ERRORfulfillment مستودع دون تفويض المستودع
WAREHOUSE_AUTH_EXPIRED403AUTH_ERRORانتهى تفويض المستودع
WAREHOUSE_AUTH_INVALID403AUTH_ERRORWarehouse rejected developer authentication
VALIDATION_ERROR400VALIDATION_ERRORحقول body ناقصة/غير صالحة، عملة غير مدعومة
UNSUPPORTED_CHANNEL400VALIDATION_ERRORقيمة channel غير معروفة
UNSUPPORTED_FIELD400VALIDATION_ERRORحقل غير مسموح في هذا المسار
NOT_FOUND404VALIDATION_ERRORالمسار أو المورد غير موجود
CHANNEL_CAPABILITY_NOT_SUPPORTED400CHANNEL_ERRORالعملية غير متاحة على هذه القناة
CHANNEL_UPSTREAM_ERROR502CHANNEL_ERRORرفض السوق الطلب (مُنقّى)
WAREHOUSE_UPSTREAM_ERROR502CHANNEL_ERRORفشل upstream المستودع/fulfillment (مُنقّى)
INTERNAL_ERROR500INTERNAL_ERRORفشل Gateway غير متوقع — أعد المحاولة مع backoff
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_shipment_id أو مفتاحidempotency
EXTERNAL_ORDER_ID_ALREADY_EXISTS409VALIDATION_ERRORexternal_order_id مستخدم في هذا التطبيق
PARCEL_NOT_FOUND404VALIDATION_ERRORطرد غير صالح أو لم يدخل بعد
INVALID_SHIPPING_CHANNEL400VALIDATION_ERRORshipping_channel_code غير صالح
INSUFFICIENT_BALANCE402VALIDATION_ERRORرصيد محفظة fulfillment منخفض
SHIPMENT_ALREADY_PAID409VALIDATION_ERRORInternational shipment already paid
SHIPMENT_NOT_FOUND404VALIDATION_ERRORShipment missing or not owned
SHIPMENT_NOT_INTERCEPTABLE409VALIDATION_ERRORCurrent shipment state cannot request intercept
SHIPMENT_INTERCEPTION_ALREADY_REQUESTED409VALIDATION_ERRORIntercept already requested
INVALID_INTERCEPTION_REASON422VALIDATION_ERRORIntercept reason CODE is invalid
INTERCEPTION_REMARK_REQUIRED422VALIDATION_ERRORremark required when reason is OTHER
SHIPMENT_CREATE_EXCEPTION400VALIDATION_ERRORCreate refused (missing item attributes, parcel not inbound, etc. — read message)
SHIPMENT_NOT_CANCELLABLE409VALIDATION_ERRORShipment cannot be cancelled in current status
SHIPMENT_ALREADY_CANCELLED409VALIDATION_ERRORShipment already cancelled
PACKAGE_ALREADY_CONSOLIDATED409VALIDATION_ERRORParcel already in another shipment
INBOUND_TRACKING_ALREADY_SHIPPED409VALIDATION_ERRORالتتبع مرتبط بطرد مشحون
INBOUND_TRACKING_ALREADY_EXISTS409VALIDATION_ERRORالتتبع مسجّل مسبقًا
INBOUND_VALIDATION_FAILED422VALIDATION_ERRORأخطاء حقول الوارد في details.fields
INBOUND_NOT_FOUND404VALIDATION_ERRORالوارد مفقود أو غير مملوك
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عملة غير مدعومة (الوارد: 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مبلغ التأكيد ≠ fee.total
PACKAGE_NOT_RETURNABLE409VALIDATION_ERRORحالة الطرد تمنع الإرجاع
INVALID_RETURN_REASON422VALIDATION_ERRORرمز سبب إرجاع غير معروف
INVALID_RETURN_ADDRESS422VALIDATION_ERRORعنوان seller_return غير صالح
RETURN_VALIDATION_FAILED422VALIDATION_ERRORفشل التحقق من حقول الإرجاع
VALUE_ADDED_SERVICE_NOT_FOUND422VALIDATION_ERRORرمز VAS غير معروف
VALUE_ADDED_SERVICE_UNAVAILABLE422VALIDATION_ERRORVAS موجود لكنه غير متاح
VALUE_ADDED_SERVICE_INVALID_STAGE422VALIDATION_ERRORVAS غير مسموح في هذه المرحلة
VALUE_ADDED_SERVICE_QUANTITY_INVALID422VALIDATION_ERRORكمية VAS غير صالحة
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المعاملة مفقودة أو غير مملوكة
INVOICE_NOT_FOUND404VALIDATION_ERRORالفاتورة مفقودة أو غير مملوكة
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 missing or invalid
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نوع related_resource غير صالح
TICKET_VALIDATION_FAILED422VALIDATION_ERRORفشل التحقق من حقول التذكرة
RELATED_RESOURCE_NOT_FOUND404VALIDATION_ERRORمورد الأعمال المرتبط مفقود
MESSAGE_REQUIRED422VALIDATION_ERRORنص الرسالة مطلوب
MESSAGE_TOO_LONG422VALIDATION_ERRORالرسالة تتجاوز 10000 حرف

Business failures (HTTP 200) {#business-failures}

Procurement preview/create/pay may return HTTP 200 with success: false when the marketplace refuses the operation but the Gateway request was valid.

{
  "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_..."
}
  • Check success before treating the call as completed
  • Inspect unavailable_lines (preview) or failed_offers (create)
  • Partial success: 1688 may return success: true with non-empty failed_offers

Product upstream failures {#upstream-product-errors}

Invalid Taobao口令, missing product, or vendor timeouts on product routes typically return 502 with CHANNEL_UPSTREAM_ERROR — not an empty product shell.

  1. Log request_id on every error path.
  2. Retry 429 and 500 with exponential backoff; do not retry 400 / 401 without fixing input.
  3. On 502 CHANNEL_UPSTREAM_ERROR, surface vendor message to ops; optionally retry once for transient outages.
  4. Order create: use external_order_id / Taobao outer_purchase_id for idempotency — see Procurement orders.

Get Support

Need integration help? Contact Developer Support at support@hiobuy.com · Response within 1–2 business days

Email support