Dienstleistungsmarkt Händler-API
Phase 1: Produkte und Wareneingang

Händler-API: SKUs, Einkaufsvoranmeldungen und Bestand im Lager Shenzhen an Ihr System anbinden

Für eingetragene Unternehmen, die auf Shopee, Coupang und momo verkaufen. Übermitteln Sie die beim Einstellen der Artikel erzeugten Produktbarcodes per API und melden Sie beim Einkauf Sendungsnummern und Inhalte vor. Sobald die Ware im Lager Shenzhen eintrifft, wird automatisch ein Auftrag angelegt, etikettiert und jedes Stück einzeln gescannt und eingelagert; Bestand und Abweichungen werden in Echtzeit zurückgemeldet.

Unternehmen

Zugelassen (8-stellige Steuernummer erforderlich)

200 Einträge

Max. SKUs pro Sammelanfrage

WO-SK

Automatischer Etikettierauftrag bei Wareneingang

60 / Min.

Standard-Ratenlimit pro Schlüssel

1 Überblick

Phase 1 umfasst „Produkte und Wareneingang“: vom Anlegen einer SKU bis zur Einlagerung der Ware als Bestand im Lager Shenzhen.

Was Sie heute tun können

  • SKUs gesammelt anlegen oder aktualisieren (maßgeblich ist Ihre seller_sku), mit einem eigenen Produktbarcode für jede Farbe und Größe, verknüpft mit den Variantennummern auf Shopee / Coupang / momo.
  • Einfuhrbestimmungen automatisch anhand der 11-stelligen taiwanischen Zolltarifnummer prüfen und Produkte kennzeichnen, die eine Prüfung oder Genehmigung benötigen oder nicht eingeführt werden dürfen.
  • Beim Einkauf Sendungsnummern und den Inhalt jedes Kartons voranmelden; bei Eingang im Lager Shenzhen wird automatisch ein WO-SK-Etikettierauftrag angelegt, und das Lager etikettiert jedes Stück einzeln, scannt es und lagert es ein.
  • Bestand pro Lager und Bestandsbuchungen abfragen und per Webhook in Echtzeit über Eingang im Lager, abgeschlossenen Wareneingang, Mengenabweichungen und Bestandsänderungen informiert werden.

Ablauf des Wareneingangs

  1. SKUs anlegen: Produktbarcode, Varianten, Anmeldebezeichnung und Zolltarifnummer übermitteln.
  2. Wareneingang voranmelden: Sendungsnummern und die angemeldete Menge jeder SKU übermitteln.
  3. Eingang im Lager Shenzhen: Nach dem Scannen der Sendungsnummer wird automatisch ein WO-SK-Auftrag angelegt und gedruckt.
  4. Etikettieren und einlagern: Das Lager druckt die Produktbarcodes, etikettiert jedes Stück und zählt es per Scan.
  5. Wareneingang abgeschlossen: Die tatsächlich erhaltene Menge geht in den Bestand des Lagers Shenzhen ein, beschädigte Ware wird separat erfasst, und Abweichungen werden an Ihr System gemeldet.
Zu den Einfuhrbestimmungen: Das System bewertet automatisch anhand der Codes für Einfuhrbestimmungen in den Zolltarifdaten der taiwanischen Zollverwaltung; das Ergebnis dient nur als betriebliche Orientierung. Ob ein Produkt tatsächlich eine Prüfung, eine Genehmigung oder eine förmliche Zollanmeldung benötigt, entscheidet die Prüfung durch den Zoll und unsere Partner-Zollagentur. Händlerware ist für den Verkauf bestimmt und fällt nicht unter die Genehmigungsbefreiungen für den persönlichen Gebrauch.

Geplante Funktionen

Sammel-Versandaufträge, automatisch nach Anmeldevorschriften gruppierte Versandchargen sowie vorgelagerter Bestand, Sortierung und Plattform-Versandetiketten im Lager Taoyuan. Diese Funktionen werden bei Veröffentlichung auf dieser Seite angekündigt.

2 Zugang und API-Schlüssel

Die Händler-API steht nur eingetragenen Unternehmen offen; jeder Schlüssel ist an ein freigegebenes Händlerkonto gebunden.

Schritte zur Freischaltung

  1. Legen Sie im Mitgliederbereich einen Anmelder vom Typ „Unternehmen“ an und geben Sie die 8-stellige Steuernummer ein.
  2. Wenden Sie sich an den HowBridge-Kundenservice, um die Händler-API freischalten zu lassen. Nach erfolgreicher Prüfung wird ein Schlüssel ausgegeben.
  3. Der Schlüssel wird nur einmal angezeigt. Speichern Sie ihn in einer serverseitigen Umgebungsvariable und niemals im Browser oder in einer App.
  4. Wenn Sie Webhooks nutzen möchten, richten Sie zuerst auf der API-Seite im Mitgliederbereich die URL ein und verifizieren Sie sie; abonnieren Sie anschließend die Händlerereignisse.
Alle Anfragen verwenden Authorization: Bearer <Schlüssel>. Tokens, die bei der Anmeldung normaler Mitglieder in der App oder auf der Website erzeugt werden, können die Händler-API nicht aufrufen.
Authorization: Bearer 12|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept: application/json

3 Allgemeine Konventionen

Für alle Endpunkte gelten die folgenden Regeln.

Base URL

https://0523.tw/api/v1/merchant

Format und Sprache

Anfragen und Antworten sind JSON. Fehlermeldungen sind standardmäßig in traditionellem Chinesisch; mit Accept-Language: en erhalten Sie sie auf Englisch. Für die Programmlogik verwenden Sie immer den festen englischen error.code.

Antwortstruktur

Bei Erfolg wird {"success": true, "data": …, "meta": …} zurückgegeben, bei Fehlern {"success": false, "error": {"code", "message", "errors", "context"}}, wobei errors die Details pro Feld enthält. Einzige Ausnahme ist ein fehlender oder ungültiger Schlüssel: HTTP 401 mit dem Body {"message": "Unauthenticated."}.

{
  "success": false,
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "…",
    "errors": [
      { "code": "TRACKING_IN_USE", "field": "packages.0.tracking_no", "message": "…" }
    ]
  }
}

Ratenbegrenzung

Pro Schlüssel 60 Anfragen pro Minute und 5.000 pro Tag (im High-Volume-Tarif 300 pro Minute und 50.000 pro Tag); eine Sammelanfrage zählt als eine Anfrage. Für Echtzeitdaten abonnieren Sie Webhooks, statt regelmäßig abzufragen (Polling).

Antwort-HeaderBeschreibung
X-RateLimit-LimitLimit pro Minute
X-RateLimit-RemainingVerbleibende Anfragen in dieser Minute
X-RateLimit-Limit-Day
X-RateLimit-Remaining-Day
Tageslimit und verbleibende Anfragen
Retry-AfterSekunden bis zum erneuten Versuch nach Überschreiten des Limits

Idempotenz (Idempotency-Key)

Schreibende Anfragen können den Header Idempotency-Key mitsenden (8–128 Zeichen: Buchstaben, Ziffern und _-:.). Wird nach einem Netzwerk-Timeout mit demselben Key und demselben Inhalt erneut gesendet, erhalten Sie die ursprüngliche Antwort mit dem Header Idempotent-Replayed: true; derselbe Key mit anderem Inhalt ergibt 422. Einträge werden 24 Stunden aufbewahrt.

Sammelantworten

Sammel-Endpunkte melden das Ergebnis jedes Eintrags: 200, wenn alle erfolgreich sind, 207 bei teilweisem Fehlschlag und 422, wenn alle fehlschlagen. Jeder Eintrag enthält index, status (created / updated / failed) und die Fehlergründe.

Zulässige Zeichen in Kennungen

seller_sku darf nur Buchstaben, Ziffern und ._- enthalten (1–64 Zeichen); Produktbarcodes dürfen zusätzlich / und + enthalten (3–64 Zeichen). Groß- und Kleinschreibung wird nicht unterschieden.

4 Produkt-SKUs

Eine SKU wird eindeutig über Ihre seller_sku identifiziert: Wird dieselbe seller_sku erneut gesendet, gilt das als Aktualisierung, und nur die mitgesendeten Felder werden geändert.

SKUs gesammelt anlegen oder aktualisieren

POST/api/v1/merchant/skus/batch

Bis zu 200 Einträge pro Anfrage. Jeder Eintrag wird unabhängig verarbeitet; ein Fehler wirkt sich nicht auf die übrigen Einträge aus.

FeldTypPflichtBeschreibung
seller_skustringPflichtIhre SKU-Nummer, z. B. die Varianten-SKU bei Shopee.
product_namestringPflicht beim AnlegenProduktname. SKUs mit gleichem Namen werden unter einem Produkt zusammengefasst.
barcodestringOptionalProduktbarcode; das Lager druckt damit Etiketten und scannt ihn beim Einlagern. Jede Farbe und Größe braucht einen eigenen Barcode. Ohne Barcode lassen Sie das Feld leer, und das System erzeugt einen Systembarcode. Bei mehr als 16 Zeichen wird auf dem Etikett stattdessen der Systembarcode gedruckt.
gtinstringOptionalGTIN (8 / 12 / 13 / 14 Stellen, Prüfziffer wird validiert). Für Shopee-Produkte „ohne GTIN“ senden Sie 00.
specobjectOptionalVarianten, z. B. {"color": "schwarz", "size": "M"}, höchstens 5.
declared_name_zh
declared_name_en
stringOptionalAnmeldebezeichnung (Chinesisch / Englisch). Geben Sie Material und Verwendungszweck an; schreiben Sie nicht „Muster“ oder „Geschenk“.
declared_unit_valuenumberOptionalAngemeldeter Stückwert: Ihr Einkaufspreis pro Stück beim Lieferanten, nicht der Verkaufspreis auf der Plattform.
declared_currencystringOptionalCNY, TWD oder USD; Pflicht, wenn ein Stückwert angegeben ist.
hs_codestringOptional11-stellige Warennummer; das System prüft damit die Einfuhrbestimmungen.
origin_countrystringOptionalISO-Code des Ursprungslands, Standard CN.
weight_gintegerOptionalGewicht pro Stück (Gramm).
dimensions_cmarrayOptionalLänge, Breite, Höhe (cm), z. B. [20, 15, 3].
battery_typestringOptionalnone, contained (eingebaut), packed (beigepackt), standalone (nur Batterie).
channelsarrayOptionalPlattform-Produktzuordnungen, höchstens 20: platform (shopee / coupang / momo / other), shop_id, item_id, model_id, platform_sku.

Anforderungsbeispiel (POST JSON)

curl -X POST https://0523.tw/api/v1/merchant/skus/batch \
  -H "Authorization: Bearer $LUCKY_MERCHANT_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: sku-sync-20260917-001" \
  -d '{
  "items": [
    {
      "seller_sku": "TEE-RED-S",
      "barcode": "4710000000011",
      "product_name": "Cotton T-shirt",
      "spec": { "color": "red", "size": "S" },
      "declared_name_en": "Cotton knitted T-shirt",
      "declared_unit_value": 18.5,
      "declared_currency": "CNY",
      "hs_code": "61091000006",
      "weight_g": 160,
      "channels": [ { "platform": "shopee", "shop_id": "123456", "item_id": "2233", "model_id": "445566" } ]
    }
  ]
}'

Antwort 200

{
  "success": true,
  "data": [
    {
      "index": 0,
      "seller_sku": "TEE-RED-S",
      "status": "created",
      "sku": {
        "seller_sku": "TEE-RED-S",
        "barcode": "4710000000011",
        "system_barcode": null,
        "pick_code": "131999",
        "hs_code": "61091000006",
        "regulation": { "status": "ok", "import_codes": [], "reasons": [] },
        "channels": [ { "platform": "shopee", "shop_id": "123456", "item_id": "2233", "model_id": "445566", "platform_sku": null } ]
      }
    }
  ],
  "meta": { "summary": { "created": 1, "updated": 0, "failed": 0 } }
}

Bewertung der Einfuhrbestimmungen (regulation.status)

okKeine Codes für Einfuhrbestimmungen.
review_requiredDie Bestimmung betrifft nur einen Teil der Produkte (z. B. C02 „einige Produkte unter dieser Position unterliegen der Prüfpflicht“); anhand des tatsächlichen Verwendungszwecks bestätigen.
formal_requiredEinfuhrbestimmungen betroffen (Prüfung, Quarantäne, Genehmigung usw.); eine vereinfachte Zollanmeldung ist nicht möglich.
blockedWaren mit Ursprung in Festlandchina, deren Einfuhr nicht zulässig ist (MW0, Ursprungsland Festlandchina); keine Wareneingangs-Voranmeldung möglich.
unclassifiedNoch keine Zolltarifnummer angegeben, daher keine Bewertung möglich.

SKUs abfragen

GET/api/v1/merchant/skus

Filterbar nach seller_sku, barcode, regulation_status und updated_since (ISO 8601); Paginierung über page / per_page (max. 100).

Einzelne SKU

GET/api/v1/merchant/skus/{seller_sku}

Plattform-Produktzuordnungen aktualisieren

PUT/api/v1/merchant/skus/{seller_sku}/channels

Die übermittelte Liste ersetzt alle bisherigen Zuordnungen vollständig; dieselbe Plattformvariante kann nicht gleichzeitig mit zwei SKUs verknüpft sein.

Barcode-Etiketten herunterladen

GET/api/v1/merchant/skus/{seller_sku}/label.pdf?qty=10

Gibt ein PDF mit Etiketten im Format 40×30mm zurück; qty ist die Anzahl der Etiketten (1–1000). Das Lager Shenzhen druckt beim Etikettieren dasselbe Etikett; dieser Endpunkt ist für den Fall gedacht, dass Sie vor dem Versand selbst etikettieren möchten.

5 Wareneingangs-Voranmeldung

Nachdem der Lieferant die eingekaufte Ware versendet hat, melden Sie Sendungsnummern und Inhalte vor. Ein Wareneingangsauftrag kann mehrere Sendungsnummern enthalten, unter denen jeweils SKUs und Mengen aufgeführt sind.

Wareneingangsauftrag anlegen

POST/api/v1/merchant/inbound-orders

Validierung als Ganzes: Bei einem einzigen Fehler wird nichts angelegt. Eine Sendungsnummer kann jeweils nur zu einem laufenden Wareneingangsauftrag gehören; doppelte SKUs im selben Paket werden mengenmäßig zusammengeführt.

FeldTypPflichtBeschreibung
reference_nostringPflichtIhre Bestell- oder Wareneingangsnummer, eindeutig pro Händler (Buchstaben, Ziffern und ._-/).
supplier_order_nostringOptionalBestellnummer des Lieferanten, z. B. eine 1688-Bestellnummer.
warehouse_codestringOptionalEingangslager; derzeit nur SZ (Lager Shenzhen).
notesstringOptionalAnmerkungen (max. 1.000 Zeichen).
packagesarrayPflichtListe der Pakete, max. 50.
packages[].tracking_nostringPflichtSendungsnummer eines chinesischen Paketdienstes.
packages[].carrierstringOptionalCode des Paketdienstes, z. B. yto oder sf.
packages[].itemsarrayPflichtPaketinhalt: seller_sku und qty, max. 500 Zeilen pro Wareneingangsauftrag.

Anforderungsbeispiel (POST JSON)

curl -X POST https://0523.tw/api/v1/merchant/inbound-orders \
  -H "Authorization: Bearer $LUCKY_MERCHANT_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: po-20260917-0001" \
  -d '{
  "reference_no": "PO-20260917-0001",
  "supplier_order_no": "1688-3312456789",
  "packages": [
    {
      "tracking_no": "YT1234567890123",
      "carrier": "yto",
      "items": [
        { "seller_sku": "TEE-RED-S", "qty": 40 },
        { "seller_sku": "TEE-RED-M", "qty": 60 }
      ]
    }
  ]
}'
Schutz vor Doppelanlage: Wird dieselbe reference_no erneut angelegt, antwortet die API mit 409 INBOUND_REFERENCE_EXISTS, und error.context.inbound_order_id enthält die ID des ursprünglichen Wareneingangsauftrags. Für sichere Wiederholungen senden Sie einen Idempotency-Key mit.

Status des Wareneingangsauftrags

createdVorangemeldet; noch kein Paket im Lager eingetroffen.
partially_arrivedEin Teil der Pakete ist im Lager Shenzhen eingetroffen.
arrivedAlle Pakete sind im Lager eingetroffen; Etikettierung und Einlagerung laufen.
completedAlles eingelagert, die Mengen entsprechen der Voranmeldung.
completed_with_discrepancyAlles abgeschlossen, jedoch mit Unterlieferung, Überlieferung oder Beschädigung.
cancelledStorniert.

Paketstatus

awaiting_arrivalWartet auf Eingang im Lager.
labelingIm Lager eingetroffen, Auftrag angelegt; Etikettierung und Einlagerung laufen.
receivedEinlagerung abgeschlossen.
mismatchDie Zuordnung des Pakets beim Wareneingang stimmt nicht mit Ihrer Voranmeldung überein; der Kundenservice prüft den Fall.
cancelledStorniert oder ungültig gemacht; die Sendungsnummer wurde freigegeben.

Wareneingangsaufträge abfragen

GET/api/v1/merchant/inbound-orders

GET/api/v1/merchant/inbound-orders/{id}

Filterbar nach status, reference_no und updated_since. Für jedes Paket werden vorangemeldete, erhaltene und beschädigte Mengen sowie die Abweichung zurückgegeben.

Wareneingangsauftrag stornieren

POST/api/v1/merchant/inbound-orders/{id}/cancel

Nur möglich, solange noch kein Paket im Lager eingetroffen ist; nach der Stornierung können die Sendungsnummern erneut vorangemeldet werden.

6 Bestandsabfrage

Der Bestand wird pro Lager geführt: SZ Lager Shenzhen, TY Lager Taoyuan (der Bestand im Lager Taoyuan wird zusammen mit den Versandfunktionen freigeschaltet).

Bestand abfragen

GET/api/v1/merchant/inventory?warehouse_code=SZ

Filterbar nach warehouse_code und seller_sku[] (max. 200).

on_handMenge auf Lager.
reservedFür Aufträge reservierte Menge.
availableVerfügbare Menge = auf Lager − reserviert.
damagedBeschädigte Menge; nicht versandfähig.

Antwort 200

{
  "success": true,
  "data": [
    { "seller_sku": "TEE-RED-S", "barcode": "4710000000011", "warehouse_code": "SZ",
      "on_hand": 38, "reserved": 0, "available": 38, "damaged": 2, "updated_at": "2026-09-17T15:20:11+08:00" }
  ],
  "meta": { "total": 1, "page": 1, "per_page": 100, "last_page": 1 }
}

Bestandsbuchungen

GET/api/v1/merchant/inventory/movements?after_id=0&limit=200

Bewegungsdatensätze, die nur ergänzt und nie geändert werden. Blättern Sie mit dem Cursor after_id vorwärts (max. 500 Datensätze pro Anfrage) und merken Sie sich meta.next_after_id aus der Antwort, um den Abgleich fortzusetzen.

7 Webhook-Ereignisse

Ereignisse werden in dem Moment, in dem sie eintreten, an Ihre URL gesendet – Polling ist nicht nötig.

Einrichtung

  1. Richten Sie auf der API-Seite im Mitgliederbereich die Webhook-URL ein (nur https) und schließen Sie die Inhaberschaftsprüfung ab: Ihr Endpunkt muss mit HTTP 200 und dem Body {"challenge": "empfangener Wert"} antworten.
  2. Rufen Sie PUT /api/v1/merchant/webhook/events auf, um Händlerereignisse zu abonnieren. Eine spätere Änderung der URL im Mitgliederbereich hebt die Abonnements der Händlerereignisse nicht auf.
curl -X PUT https://0523.tw/api/v1/merchant/webhook/events \
  -H "Authorization: Bearer $LUCKY_MERCHANT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"events": ["inbound.arrived", "inbound.received", "inbound.discrepancy", "inventory.changed"]}'

Ereignisliste

sku.regulation_flaggedDie Bewertung der Einfuhrbestimmungen einer SKU hat sich zu „Prüfung erforderlich“, „förmliche Zollanmeldung erforderlich“ oder „Einfuhr nicht zulässig“ geändert.
inbound.arrivedEin Paket ist im Lager Shenzhen eingetroffen, und ein Auftrag wurde angelegt.
inbound.mismatchDie Zuordnung eines Pakets beim Wareneingang stimmt nicht mit der Voranmeldung überein; der Kundenservice prüft den Fall.
inbound.receivedDie Einlagerung eines Pakets ist abgeschlossen, mit vorangemeldeten, erhaltenen und beschädigten Mengen je SKU.
inbound.discrepancyDie eingelagerte Menge weicht von der Voranmeldung ab, oder es gibt Beschädigungen (wird zusammen mit inbound.received gesendet).
inventory.changedDer Bestand hat sich geändert, mit dem aktuellen Bestand der betroffenen SKUs.

inbound.received

{
  "event": "inbound.received",
  "delivery_id": "5b0f1c2e-8f3a-4d7e-9c21-0a6b2d4e8f10",
  "created_at": "2026-09-17T15:20:11+08:00",
  "data": {
    "inbound_order_id": 128,
    "reference_no": "PO-20260917-0001",
    "order_status": "completed_with_discrepancy",
    "tracking_no": "YT1234567890123",
    "work_order": "WO-SK-315",
    "warehouse_code": "SZ",
    "items": [
      { "seller_sku": "TEE-RED-S", "expected_qty": 40, "received_qty": 38, "damaged_qty": 2, "difference": 0 },
      { "seller_sku": "TEE-RED-M", "expected_qty": 60, "received_qty": 59, "damaged_qty": 0, "difference": -1 }
    ],
    "received_at": "2026-09-17T15:20:10+08:00"
  }
}

Signatur prüfen

Jede Zustellung enthält X-Lucky-Event, X-Lucky-Delivery-Id und X-Lucky-Signature: t=Zeitstempel,v1=Signatur. Berechnen Sie mit Ihrem Webhook-Secret einen HMAC-SHA256 über „Zeitstempel + . + Roh-Body“, vergleichen Sie ihn mit v1 und lehnen Sie Zeitstempel ab, die älter als 5 Minuten sind. Bei Wiederholungen desselben Ereignisses bleibt die delivery_id gleich und kann zur Deduplizierung genutzt werden.

Bei einer Antwort außerhalb von 2xx wird nach 1 Minute, 5 Minuten, 30 Minuten, 2 Stunden und 6 Stunden erneut zugestellt; nach 20 aufeinanderfolgenden Fehlschlägen wird der Webhook automatisch deaktiviert und muss im Mitgliederbereich neu eingerichtet werden.

// PHP
$body   = file_get_contents('php://input');
$header = $_SERVER['HTTP_X_LUCKY_SIGNATURE'] ?? '';
parse_str(str_replace(',', '&', $header), $sig);   // ['t' => '1789…', 'v1' => 'ab12…']

$expected = hash_hmac('sha256', ($sig['t'] ?? '') . '.' . $body, getenv('LUCKY_WEBHOOK_SECRET'));

if (! hash_equals($expected, $sig['v1'] ?? '') || abs(time() - (int) ($sig['t'] ?? 0)) > 300) {
    http_response_code(400);
    exit;
}
$event = json_decode($body, true);   // de-duplicate by $event['delivery_id']
http_response_code(200);

8 Fehlercodes

error.code ist immer Englisch. Im Folgenden die häufigsten Fehler.

HTTPerror.codeBeschreibung
401—Kein Schlüssel mitgesendet, Schlüssel ungültig oder abgelaufen (Body ist {"message": "Unauthenticated."}).
403MERCHANT_TOKEN_REQUIREDDieses Token hat keine Berechtigung für die Händler-API (z. B. ein Token aus der Anmeldung eines normalen Mitglieds).
403MERCHANT_NOT_APPROVED
MERCHANT_SUSPENDED
Das Konto ist noch nicht als Händler freigegeben, oder der Händler ist gesperrt.
403APP_SUSPENDED
APP_REVOKED
APP_NOT_FOUND
Die zum Schlüssel gehörende API-Anwendung ist gesperrt oder widerrufen.
422VALIDATION_FAILED
PRODUCT_NAME_REQUIRED
Ungültiges Datenformat; siehe die Details pro Feld in error.errors.
422BATCH_TOO_LARGEDie Anzahl der Einträge in der Sammelanfrage überschreitet das Limit.
207 / 409SKU_BARCODE_DUPLICATE
SKU_BARCODE_CONFLICT
Der Produktbarcode wird bereits von einer anderen SKU verwendet oder stimmt mit dem Systembarcode oder Kommissioniercode einer anderen SKU überein.
207 / 422GTIN_INVALID
HS_CODE_NOT_FOUND
Ungültige GTIN-Prüfziffer, oder die Zolltarifnummer existiert nicht.
404 / 422SKU_NOT_FOUND
SKU_IMPORT_BLOCKED
SKU nicht gefunden, oder die SKU ist eine nicht einfuhrfähige Ware und kann nicht vorangemeldet werden.
409INBOUND_REFERENCE_EXISTSDie Referenznummer des Wareneingangsauftrags existiert bereits.
422TRACKING_IN_USE
TRACKING_FORECASTED_BY_OTHER
TRACKING_ALREADY_WAREHOUSED
TRACKING_NOT_AVAILABLE
Die Sendungsnummer befindet sich bereits in einem laufenden Wareneingangsauftrag, wurde von einem anderen Mitglied vorangemeldet oder ist bereits unter einem anderen Mitglied im Lager eingegangen.
409INBOUND_NOT_CANCELLABLEEs ist bereits ein Paket im Lager eingetroffen; der Wareneingangsauftrag kann nicht storniert werden.
400 / 409 / 422IDEMPOTENCY_KEY_INVALID
IDEMPOTENCY_IN_PROGRESS
IDEMPOTENCY_KEY_REUSED
Der Idempotency-Key hat ein ungültiges Format, wurde für einen anderen Inhalt verwendet, oder die vorherige Anfrage wird noch verarbeitet.
409CONFLICT_RETRYDerselbe Datensatz wird gerade von einer anderen Anfrage geändert; bitte später erneut senden.
429RATE_LIMIT_EXCEEDEDRatenlimit überschritten; warten Sie gemäß Retry-After und versuchen Sie es dann erneut.

9 Codebeispiele

Führen Sie die folgenden Beispiele serverseitig aus und legen Sie den Schlüssel niemals in Frontend-Code ab.

use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;

$api = Http::withToken(config('services.lucky.merchant_key'))
    ->acceptJson()
    ->baseUrl('https://0523.tw/api/v1/merchant')
    ->timeout(20);

// 1) Sync SKUs (up to 200 per request)
$res = $api->withHeaders(['Idempotency-Key' => (string) Str::uuid()])
    ->post('/skus/batch', ['items' => $items]);

foreach ($res->json('data') as $row) {
    if ($row['status'] === 'failed') {
        logger()->warning('SKU failed', $row['errors']);
    }
}

// 2) Forecast an inbound order
$order = $api->withHeaders(['Idempotency-Key' => 'po-' . $po->id])
    ->post('/inbound-orders', [
        'reference_no' => $po->number,
        'packages'     => [[
            'tracking_no' => $po->tracking_no,
            'items'       => [['seller_sku' => 'TEE-RED-S', 'qty' => 40]],
        ]],
    ])->throw()->json('data');

// 3) Read Shenzhen stock
$stock = $api->get('/inventory', ['warehouse_code' => 'SZ'])->json('data');

10 Technischer Support

Wenn bei der Integration Probleme auftreten, nennen Sie uns bitte Anfragezeitpunkt, Endpunkt und error.code, damit wir Ihnen bei der Fehlersuche helfen können.

Offizielles LINE-Konto @0523tw

E-Mail für technische Fragen howyunqisoftware@gmail.com

Version v1 Phase 1 (2026-09-17): Produkt-SKUs, Wareneingangs-Voranmeldung, Etikettierung und Einlagerung im Lager Shenzhen, Bestandsabfrage, Webhooks.

Kundenservice zur Freischaltung kontaktieren