Katrs notikums. Katrs datu bloks. Parakstīts.
Fabrixa reāllaikā nosūta pasūtījuma notikumus uz jūsu galapunktu. Jūsu serveris nodrošina vienu publisku POST galapunktu; mēs nosūtām pilnu pasūtījuma saturu ar HMAC-SHA256 parakstu un notikuma tēmu galvenajos laukos. Pārbaudiet parakstu, ātri atgrieziet kodu 200 un apstrādājiet asinhroni.
Trīs galvenes identificē un pārbauda pieprasījumu.
Katram webhook POST pieprasījumam ir tie paši trīs galvenes. Izmantojiet x-webhook-topic lai novirzītu notikumu un x-webhook-signature lai to pārbaudītu, pirms uzticaties šai iestādei.
content-type vienmēr ir application/json. x-webhook-signature ir neapstrādātā satura Base64 HMAC-SHA256 kodējums. x-webhook-topic ir pasākuma nosaukums.
{
"content-type": "application/json",
"x-webhook-topic": "order.updated",
"x-webhook-signature": "YmEwNjBhMGMy...MAxMw=="
}
Šodien divas tēmas.
Katru webhook izsauc konkrēts x-webhook-topic vērtība. Abos ir iekļauts pilns pasūtījuma objekts, tādējādi viens apstrādātājs var pārslēgties uz šo tēmu.
Ir veikts jauns pasūtījums.
Tiek aktivizēts, kad Fabrixa tiek izveidots pasūtījums — vai nu izmantojot API pieprasījumu, vai tieši platformā.
Iepriekš veiktais pasūtījums tiek mainīts.
Tiek aktivizēts, kad mainās pasūtījuma dati — piemēram, pasūtījuma statuss vai izpildes statuss.
Ko var norādīt statusa lauki.
Pasūtījumu pārvadā kravas daļa status kā arī atsevišķs fulfillment_status. Ieslēdziet šīs funkcijas, lai paši vadītu sava pasūtījuma statusu.
- Completed — nosūtīts vai saņemts, un saņemšana apstiprināta.
- Canceled — maksājums tika atcelts; darījums netika pabeigts.
- On hold — pasūtījums ir uz laiku bloķēts.
- Imported — pasūtījums tika importēts platformā.
- Unfulfilled — vēl nav sagatavots vai nosūtīts.
- Partially fulfilled — daži pasūtījumi jau apstrādāti vai nosūtīti, citi vēl gaida apstrādi.
- Scheduled — plānoti un ieplānoti apstrādei.
- Rejected — pieprasījums tika noraidīts.
- Fulfilled — pilnībā apstrādāti un piegādāti vai nodoti rīcībā.
Kā izskatās ķermenis.
Pilns order.updated datu kopa, tieši tā, kā to apraksta API atsauces dokumenti — pasūtījums, tā statusi un rindas ar informāciju par variantu, produktu un avotu.
{
"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" }
}
]
}
]
}
Pārrēķiniet HMAC, salīdziniet un pēc tam uzticieties datu ķermenim.
Pārrēķiniet neapstrādātā pieprasījuma datu daļas HMAC-SHA256, izmantojot savu slepeno atslēgu, kodējiet to ar Base64 un salīdziniet ar x-webhook-signature. Vienmēr izmantojiet salīdzinājumu ar nemainīgu laiku (hash_equals), lai novērstu laika uzbrukumus.
$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'); }
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…
}
Atkārtotie mēģinājumi un gaidītā atbilde.
Līdz 10 mēģinājumiem, pēc tam tiek bloķēta
Jebkurš 2xx atbilde (piem., 200) tiek uzskatīta par veiksmīgu, tāpat kā 301 vai 302 pāradresācija. Jebkurš 4xx, 5xx vai laika limita beigas izraisa atkārtotu mēģinājumu — kopumā līdz 10 reizēm. Pēc desmitās neveiksmes webhook tiek deaktivizēts.
Ātri atgriezt 200, apstrādāt asinhroni
Apstipriniet ar 200 OK cik vien ātri iespējams, pēc tam apstrādājiet datu slodzi asinhroni, izmantojot fona uzdevumu vai rindu. Lēnu galapunktu var uzskatīt par kļūdu, pat ja tas galu galā izdodas.
Webhooks, atbildes
Kā pārbaudīt Fabrixa webhook parakstu?
Pārrēķiniet neapstrādātā pieprasījuma satura HMAC-SHA256, izmantojot savu slepeno atslēgu, kodējiet rezultātu ar base64 un salīdziniet to ar x-webhook-signature galvenes ierakstu, izmantojot salīdzināšanu ar nemainīgu laiku, piemēram, hash_equals. Fabrixa piedāvā praktiskus piemērus neapstrādātā PHP un Laravel vidē, un jebkura neatbilstība ir jānoraida, pirms tiek apstrādāts datu bloks.
Kādus webhook notikumus nosūta Fabrixa?
Fabrixa nosūta divus notikumus, kurus identificē x-webhook-topic galvene: „order.created“, kas tiek izraisīts, kad pasūtījums tiek veikts, izmantojot API vai tieši platformā, un „order.updated“, kas tiek izraisīts, kad mainās pasūtījuma statuss vai izpildes statuss. Abi notikumi satur pilnu pasūtījuma objektu, tādējādi viens apstrādātājs var apstrādāt abas tēmas.
Cik reizes Fabrixa atkārto neveiksmīgu webhook mēģinājumu?
Fabrixa atkārto webhooka nosūtīšanu līdz 10 reizēm, ja atbilde nav 2xx, 301 vai 302. Jebkurš 4xx, 5xx vai laika limita pārsniegums tiek uzskatīts par kļūdu un izraisa atkārtotu mēģinājumu; pēc desmitā neveiksmīgā mēģinājuma webhook tiek deaktivizēts, tādēļ galapunktam ir ātri jāatgriež 200 un asinhroni jāapstrādā datu slodze.
Kādus galvenes laukus ietver Fabrixa webhook pieprasījums?
Katram webhook POST pieprasījumam ir trīs galvenes: „content-type“ (vienmēr „application/json“); „x-webhook-topic“, kas nosauc notikumu, piemēram, „order.updated“; un „x-webhook-signature“ — neapstrādātā satura Base64 kodēts HMAC-SHA256 paraksts. Izmantojiet tēmu, lai maršrutētu notikumu, un parakstu, lai to pārbaudītu, pirms uzticaties datu saturam.
Kādi pasūtījuma statusi parādās Fabrixa tīmekļa paziņojuma datu blokā?
Datu blokā ir statusa lauks ar četrām vērtībām — „Pabeigts”, „Atcelts”, „Aizturēts” un „Importēts” —, kā arī atsevišķs lauks „fulfillment_status” ar piecām vērtībām: „Nepildīts”, „Daļēji pildīts”, „Plānots”, „Noraidīts” un „Pildīts”. Vienā „order.updated” notikumā var tikt ziņots par izmaiņām jebkurā no šiem laukiem.
Konfigurējiet savu webhook galapunktu.
Integrācijas rokasgrāmata sniedz detalizētu aprakstu par galapunkta reģistrēšanu un pasūtījuma dzīves cikla pārvaldību no sākuma līdz beigām. Pilnā API atsauces dokumentācijā ir iekļauta pilnīga datu slodzes shēma.


