Varje event. Varje payload. Signerad.
Fabrixa skickar orderhändelser till din slutpunkt i realtid. Din server tillhandahåller en offentlig POST-slutpunkt; vi skickar hela orderinnehållet med en HMAC-SHA256-signatur och händelseämnet i rubrikerna. Verifiera signaturen, returnera snabbt statuskoden 200 och bearbeta asynkront.
Tre rubriker identifierar och verifierar begäran.
Varje POST-webhook innehåller samma tre rubriker. Använd x-webhook-topic för att vidarebefordra händelsen och x-webhook-signature för att kontrollera det innan du litar på organisationen.
content-type är alltid application/json. x-webhook-signature är Base64-kodningen av HMAC-SHA256 för det obearbetade innehållet. x-webhook-topic är evenemangets namn.
{
"content-type": "application/json",
"x-webhook-topic": "order.updated",
"x-webhook-signature": "YmEwNjBhMGMy...MAxMw=="
}
Två ämnen idag.
Varje webhook utlöses av en specifik x-webhook-topic värde. Båda innehåller hela orderobjektet, vilket innebär att en enda hanterare kan växla mellan ämnena.
En ny beställning har lagts.
Utlöses när en order skapas i Fabrixa – antingen via en API-förfrågan eller direkt i plattformen.
En befintlig beställning ändras.
Utlöses när orderuppgifterna ändras – till exempel när orderstatusen eller leveransstatusen ändras framöver.
Vad statusfälten kan visa.
Nyttolasten innehåller både en beställning status och en fulfillment_status. Aktivera dessa för att styra ditt eget orderstatus.
- Completed — levererad eller avhämtad och mottagandet bekräftat.
- Canceled — betalningen avbröts; transaktionen genomfördes inte.
- On hold — beställningen är tillfälligt spärrad.
- Imported — beställningen har importerats till plattformen.
- Unfulfilled — har ännu inte förberetts eller skickats.
- Partially fulfilled — vissa artiklar har behandlats eller skickats, andra väntar på behandling.
- Scheduled — planerade och schemalagda för bearbetning.
- Rejected — begäran om uppfyllande avslogs.
- Fulfilled — helt färdigbehandlade och levererade eller ställda till förfogande.
Hur kroppen ser ut.
Hela order.updated nyttolasten, precis som den beskrivs i API-referensdokumentet – beställningen, dess statusar och raderna med uppgifter om varianter, produkter och leverantörer.
{
"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" }
}
]
}
]
}
Beräkna HMAC på nytt, jämför och lita sedan på meddelandetexten.
Beräkna HMAC-SHA256 på den obearbetade begäranens nyttolast med din hemliga nyckel, kod den med base64 och jämför med x-webhook-signature. Använd alltid en jämförelse med konstant tid (hash_equals) för att undvika tidsbaserade attacker.
$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…
}
Omförsök och det svar vi förväntar oss.
Upp till 10 försök, därefter inaktiveras funktionen
A 2xx (t.ex. 200) eller en 301 / 302 räknas som en framgång. Varje 4xx, 5xx eller om tidsgränsen överskrids utlöses ett nytt försök – upp till totalt 10 stycken. Efter det tionde misslyckandet inaktiveras webhooken.
Returnera 200 snabbt, bearbeta asynkront
Bekräfta med 200 OK så snabbt som möjligt och hantera sedan nyttolasten asynkront via ett bakgrundsjobb eller en kö. En långsam slutpunkt kan betraktas som ett fel även om den till slut lyckas.
Konfigurera din webhook-ändpunkt.
Integrationsguiden beskriver hur du registrerar din slutpunkt och hanterar ordercykeln från början till slut. Den fullständiga API-referensen innehåller det fullständiga schemat för nyttolasten.


