Fehler

HIOBuy verwendet zwei Fehlerformen: Protokollfehler (Nicht-2xx-HTTP mit einem error-Objekt) und geschäftliche Ergebnisse (HTTP 200 mit success: false auf einigen Bestell-Routen).

Protokollfehler (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"
  }
}
FeldBeschreibung
error.codeMaschinenlesbares Enum - für Branching-Logik verwenden
error.messageMenschenlesbare Erklärung (Englisch)
error.request_idIdentisch mit dem Antwort-Header x-request-id
error.categoryGrobe Gruppierung: AUTH_ERROR, RATE_LIMIT_ERROR, VALIDATION_ERROR, CHANNEL_ERROR, INTERNAL_ERROR
error.upstreamOptionale Vendor-Fehlerzusammenfassung bei CHANNEL_UPSTREAM_ERROR (bereinigt)

Fehlercode-Referenz {#error-codes}

Der kanonische maschinenlesbare Katalog ist data/errors.catalog.json. Zusammenfassung:

CodeHTTPKategorieWann
INVALID_API_KEY401AUTH_ERRORUngültiges oder fehlendes Bearer-Token
CHANNEL_NOT_AUTHORIZED401AUTH_ERRORChannel für diese App nicht autorisiert
INSUFFICIENT_SCOPE403AUTH_ERRORVorgang für diesen Schlüssel/diese App nicht erlaubt
FULFILLMENT_MODE_NOT_SUPPORTED403AUTH_ERROR/v1/fulfillment/* auf Self-Fulfillment-App
VALIDATION_ERROR400VALIDATION_ERRORFehlende/ungültige Body-Felder, nicht unterstütztes currency
UNSUPPORTED_CHANNEL400VALIDATION_ERRORUnbekannter channel-Wert
UNSUPPORTED_FIELD400VALIDATION_ERRORz. B. currency auf Produkt-Routen
NOT_FOUND404VALIDATION_ERRORBestellung oder Ressource existiert nicht
RATE_LIMIT_EXCEEDED429RATE_LIMIT_ERRORRate Limit pro Minute
QUOTA_EXCEEDED429RATE_LIMIT_ERRORTägliches Channel-Kontingent erschöpft
PLATFORM_QUOTA_EXCEEDED429RATE_LIMIT_ERRORPlattformweites Kapazitätslimit
CHANNEL_CAPABILITY_NOT_SUPPORTED400CHANNEL_ERRORVorgang auf diesem Channel nicht verfügbar
CHANNEL_UPSTREAM_ERROR502CHANNEL_ERRORMarketplace hat den Aufruf abgelehnt
INTERNAL_ERROR500INTERNAL_ERRORUnerwarteter Gateway-Fehler - mit Backoff erneut versuchen
PARCEL_NOT_FOUND404VALIDATION_ERRORUngültiges oder noch nicht eingegangenes Paket (Fulfillment)
INVALID_SHIPPING_CHANNEL400VALIDATION_ERRORUngültiger shipping_channel_code
INSUFFICIENT_BALANCE402VALIDATION_ERRORFulfillment-Wallet-Guthaben zu niedrig für Zahlung

Geschäftliche Fehlschläge (HTTP 200) {#business-failures}

Beschaffungs-Preview/Create/Pay kann HTTP 200 mit success: false zurückgeben, wenn der Marketplace den Vorgang ablehnt, die Gateway-Anfrage aber gültig war.

{
  "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_..."
}
  • Prüfen Sie success, bevor Sie den Aufruf als abgeschlossen behandeln
  • Untersuchen Sie unavailable_lines (Preview) oder failed_offers (Create)
  • Teilerfolg: 1688 kann success: true mit nicht leerem failed_offers zurückgeben

Produkt-Upstream-Fehler {#upstream-product-errors}

Ungültiges Taobao口令, fehlendes Produkt oder Vendor-Timeouts auf Produkt-Routen geben typischerweise 502 mit CHANNEL_UPSTREAM_ERROR zurück - keine leere Produkthülle.

Empfohlene Behandlung {#handling}

  1. request_id auf jedem Fehlerpfad loggen.
  2. 429 und 500 mit exponentiellem Backoff erneut versuchen; 400 / 401 nicht ohne Korrektur der Eingabe erneut versuchen.
  3. Bei 502 CHANNEL_UPSTREAM_ERROR Vendor-Nachricht an Operations anzeigen; optional einmal bei transienten Ausfällen erneut versuchen.
  4. Order Create: external_order_id / Taobao outer_purchase_id für Idempotenz verwenden - siehe Beschaffungsbestellungen.