Ugrás a fő tartalomra
Egy Fabrixa webhook hasznos adata a képernyőn — aláírt JSON megrendelési esemény, szőtt textíliára vonatkozóan
Fejlesztők · Webhookok – útmutató

Minden esemény. Minden hasznos adat. Aláírva.

Az Fabrixa valós időben továbbítja a megrendelési eseményeket a végpontodra. A szervered egy nyilvános POST végpontot tesz elérhetővé; mi a teljes megrendelés tartalmát küldjük el HMAC-SHA256 aláírással és a fejlécekben szereplő eseménytémával. Ellenőrizd az aláírást, azonnal küldj vissza 200-as kódot, majd aszinkron módon dolgozd fel az adatokat.

HMAC-SHA256 · order.created / order.updated · 10-szeri újrapróbálkozás a kézbesítésnél

Kérésfejlécek

A kérés azonosítását és érvényesítését három fejléc biztosítja.

Minden webhook POST-kérés ugyanazt a három fejlécet tartalmazza. Használja a x-webhook-topic az esemény továbbításához és x-webhook-signature ellenőrizd le, mielőtt megbízol a szervezetben.

content-type mindig application/json. x-webhook-signature a nyers test Base64-kódolású HMAC-SHA256-értéke. x-webhook-topic ez az esemény neve.

Beérkező fejlécek
{
  "content-type":        "application/json",
  "x-webhook-topic":     "order.updated",
  "x-webhook-signature": "YmEwNjBhMGMy...MAxMw=="
}
Webhook-események

Ma két téma lesz.

Minden webhookot egy adott x-webhook-topic érték. Mindkettő a teljes megrendelési objektumot hordozza, így egyetlen kezelő is át tud váltani a témára.

order.created

Új megrendelés érkezett.

Akkor aktiválódik, amikor egy megrendelés létrejön az Fabrixa-ben – akár API-kérés útján, akár közvetlenül a platformon.

order.updated

Egy meglévő megrendelés módosul.

Akkor aktiválódik, amikor a megrendelés adatai megváltoznak – például a megrendelés állapota vagy a teljesítési állapot továbbhalad.

Állapotok

Mit árulhatnak el az állapotmezők?.

A hasznos teher hordozza a megrendelést status valamint egy különálló fulfillment_status. Kapcsold be ezeket, hogy saját rendelési állapotodat irányíthasd.

Rendelésállapotok
  • Completed — kiszállítva vagy átvéve, és az átvétel megerősítve.
  • Canceled — a fizetést törölték; a tranzakció nem zárult le.
  • On hold — a megrendelés ideiglenesen felfüggesztésre került.
  • Imported — a megrendelést feltöltötték a platformra.
Rendeléskezelési állapotok
  • Unfulfilled — még nem készült el, illetve nem került elküldésre.
  • Partially fulfilled — egyes tételeket már feldolgoztunk vagy kiszállítottunk, mások feldolgozása vagy kiszállítása még folyamatban van.
  • Scheduled — feldolgozásra tervezve és ütemezve.
  • Rejected — a teljesítési kérelmet elutasították.
  • Fulfilled — teljes körűen feldolgozva és kiszállítva, illetve rendelkezésre bocsátva.
Payload

Hogyan néz ki a test?.

A teljes order.updated a hasznos adat, pontosan úgy, ahogyan azt az API referencia dokumentálja — a megrendelés, annak állapotai, valamint a változatot, a terméket és a beszerzési forrást tartalmazó sorok.

POST-test — order.updated
{
  "id": 23069,
  "number": "1250211835",
  "comments": null,
  "is_archived": false,
  "status": "imported",
  "fulfillment_status": "unfulfilled",
  "purchased_at": "2025-04-17T16:17:21.000000Z",
  "created_at":   "2025-04-17T16:17:23.000000Z",
  "updated_at":   "2025-04-18T07:43:52.000000Z",
  "rows": [
    {
      "id": 27954,
      "quantity": 1,
      "client_barcode": "1250211835",
      "fulfillment_status": "unfulfilled",
      "variant": {
        "id": 293457,
        "name": "Sherpa fleece deken",
        "subtitle": "100x150",
        "SKU": "SFD787231",
        "product": {
          "id": 5319, "name": "Sherpa fleece deken", "subtitle": "Sherpa fleece deken"
        }
      },
      "sources": [
        {
          "type": "print",
          "url": "https://storage.googleapis.com/fabrixa-api/…/120002795400.pdf",
          "properties": { "fill_style": "contain" }
        }
      ]
    }
  ]
}
Ellenőrizze az aláírást

Számítsd ki újra a HMAC-ot, hasonlítsd össze, majd fogadd el a tartalmat.

Számítsa ki újra a nyers kérelem hasznos adatainak HMAC-SHA256-értékét a titkos kulcsával, kódolja azt Base64-kódolással, majd hasonlítsa össze a x-webhook-signature. Mindig állandó időbeli összehasonlítást használj (hash_equals), hogy elkerüljék az időalapú támadásokat.

Nyers PHP
$payload = file_get_contents('php://input');
$secret  = 'your-secret-key';

$expected = base64_encode(
  hash_hmac('sha256', $payload, $secret, true)
);
$received = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';

// constant-time compare
if (!hash_equals($expected, $received)) {
  http_response_code(403);
  exit('Invalid signature');
}
Laravel
public function handle(Request $request)
{
  $secret  = 'your-secret-key';
  $payload = $request->getContent();

  $expected = base64_encode(
    hash_hmac('sha256', $payload, $secret, true)
  );
  $received = $request->header('x-webhook-signature');

  if (!hash_equals($expected, $received)) {
    abort(403, 'Invalid signature');
  }
  // Continue processing…
}
Kézbesítés és válaszadás

Újrakísérletek és a várt válasz.

Újrapróbálkozások

Legfeljebb 10 kísérlet, utána letiltásra kerül

Bármelyik 2xx a válasz (pl. 200) sikernek minősül, akárcsak egy 301 vagy 302 átirányítás. Bármelyik 4xx, 5xx vagy a várakozási idő lejárta újbóli kísérletet vált ki – összesen legfeljebb 10-et. A tizedik sikertelen kísérlet után a webhook deaktiválásra kerül.

Válasz

Gyors 200-as visszatérés, aszinkron feldolgozás

Erősítse meg a következővel: 200 OK a lehető leggyorsabban, majd a hasznos adatokat aszinkron módon kezelje háttérfeladat vagy sor segítségével. Egy lassú végpontot hiba esetén is kezelni lehet, még akkor is, ha végül sikerrel jár.

GYIK

Webhookok – válaszok

Hogyan ellenőrizhetem egy Fabrixa webhook aláírását?

Számítsd ki újra a nyers kérelemtest HMAC-SHA256-értékét a titkos kulcsod segítségével, kódold az eredményt base64-kódolással, majd hasonlítsd össze az x-webhook-signature fejléccel egy állandó időbeli összehasonlító függvény, például a hash_equals segítségével. Az Fabrixa gyakorlati példákat nyújt nyers PHP-ben és Laravelben, és bármilyen eltérést el kell utasítani, mielőtt a hasznos adat feldolgozásra kerülne.

Milyen webhook-eseményeket küld az Fabrixa?

Az Fabrixa két eseményt küld, amelyeket az x-webhook-topic fejléc azonosít: az „order.created” eseményt, amelyet akkor vált ki, amikor megrendelés érkezik az API-n keresztül vagy közvetlenül a platformon, és az „order.updated” eseményt, amelyet akkor vált ki, amikor a megrendelés állapota vagy a teljesítés állapota megváltozik. Mindkettő a teljes megrendelési objektumot tartalmazza, így egy kezelő is kezelheti a témát.

Hányszor próbálja meg újra a Fabrixa egy sikertelen webhookot?

A Fabrixa legfeljebb 10-szer megkísérli újra a webhook továbbítását, ha a válasz nem 2xx, 301 vagy 302 kód. Bármely 4xx, 5xx kód vagy időtúllépés hibának minősül, és újraküldést vált ki; a tizedik sikertelen kísérlet után a webhook deaktiválódik, ezért a végpontnak gyorsan 200-as kódot kell visszaadnia, és a hasznos adatot aszinkron módon kell feldolgoznia.

Milyen fejléceket tartalmaz egy Fabrixa webhook-kérés?

Minden webhook POST-kérés három fejléccel rendelkezik: a content-type, amelynek értéke mindig application/json; az x-webhook-topic, amely megnevezi az eseményt (például order.updated); valamint az x-webhook-signature, amely a nyers testrész base64-kódolású HMAC-SHA256 aláírása. Használja a topic fejléceket az esemény továbbításához, az aláírást pedig annak ellenőrzéséhez, mielőtt megbízik a hasznos adatban.

Milyen rendelési állapotok jelennek meg egy Fabrixa webhook adatközvetítésében?

A hasznos adatcsomag tartalmaz egy állapotmezőt, amelynek négy értéke lehet — „Befejezve”, „Törölve”, „Felfüggesztve” és „Importálva” —, valamint egy külön „fulfillment_status” mezőt, amelynek öt értéke lehet: „Nem teljesítve”, „Részben teljesítve”, „Beütemezve”, „Elutasítva” és „Teljesítve”. Egyetlen „order.updated” esemény is jelentheti bármelyik mezőben bekövetkezett változást.

Készítse el a kezelőjét

Állítsd be a webhook végpontodat.

Az integrációs útmutató végigvezeti Önt a végpont regisztrációján és a megrendelés életciklusának teljes kezelésén. A teljes API-referencia tartalmazza a teljes hasznosadat-sémát.

Tudásbázis

Kérdéseid vannak az integrációkkal és az API-vel kapcsolatban?

Az „Integrációk és API” témakörhöz tartozó mind a 8 válasz → Kérdezze meg ügyfélszolgálatunkat →