Hvert event. Hver payload. Signert.
Fabrixa sender bestillingshendelser til endpointet ditt i sanntid. Serveren din eksponerer ett offentlig POST-endpoint; vi sender hele bestillingsinnholdet med en HMAC-SHA256-signatur og hendelsestemaet i headerne. Bekreft signaturen, returner 200 raskt, og behandle asynkront.
Tre overskrifter identifiserer og verifiserer forespørselen.
Hver POST-webhook inneholder de samme tre headerne. Bruk x-webhook-topic for å videreformidle hendelsen og x-webhook-signature for å verifisere den før du stoler på innholdet.
content-type er alltid application/json. x-webhook-signature er base64-kodet HMAC-SHA256 av den ubehandlede brødteksten. x-webhook-topic er navnet på arrangementet.
{
"content-type": "application/json",
"x-webhook-topic": "order.updated",
"x-webhook-signature": "YmEwNjBhMGMy...MAxMw=="
}
To temaer i dag.
Hver webhook utløses av en bestemt x-webhook-topic verdi. Begge inneholder hele bestillingsobjektet, slik at én enkelt håndterer kan skifte mellom emnene.
Det er lagt inn en ny bestilling.
Utløses når en ordre opprettes i Fabrixa – enten via en API-forespørsel eller direkte i plattformen.
En eksisterende ordre endres.
Utløses når opplysningene om en ordre endres — for eksempel når ordrestatusen eller leveringsstatusen endres.
Hva statusfeltene kan fortelle.
Nyttelasten inneholder bestillingen status samt en egen fulfillment_status. Bruk disse til å styre din egen bestillingsstatus.
- Completed — sendt eller hentet, og mottak bekreftet.
- Canceled — betalingen ble kansellert; transaksjonen ble ikke gjennomført.
- On hold — bestillingen er midlertidig sperret.
- Imported — bestillingen ble importert til plattformen.
- Unfulfilled — ikke utarbeidet eller sendt ennå.
- Partially fulfilled — noen varer er behandlet eller sendt, andre er under behandling.
- Scheduled — planlagt og satt opp til behandling.
- Rejected — oppfyllelsesforespørselen ble avslått.
- Fulfilled — fullstendig behandlet og levert eller gjort tilgjengelig.
Hvordan kroppen ser ut.
Hele order.updated payload, nøyaktig slik det er beskrevet i API-referansedokumentene – bestillingen, statusene og radene med opplysninger om variant, produkt og kilde.
{
"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" }
}
]
}
]
}
Beregn HMAC-verdien på nytt, sammenlign, og godta deretter innholdet.
Beregn HMAC-SHA256 på nytt for den ubehandlede forespørselsdataen med din hemmelige nøkkel, kod den med base64, og sammenlign med x-webhook-signature. Bruk alltid en sammenligning med konstant tid (hash_equals) for å unngå tidsangrep.
$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…
}
Nye forsøk og det svaret vi forventer.
Opptil 10 forsøk, deretter deaktivert
Noen 2xx et svar (f.eks. 200) regnes som vellykket, og det samme gjelder en 301 eller 302 omdirigering. Enhver 4xx, 5xx eller tidsavbrudd utløser en retry — opptil 10 ganger totalt. Etter det tiende mislykkede forsøket deaktiveres webhooken.
Returner 200 raskt, behandle asynkront
Bekreft med 200 OK så raskt som mulig, og deretter behandle payloaden asynkront via en bakgrunnsoppgave eller en kø. Et tregt endpoint kan betraktes som en feil, selv om det til slutt lykkes.
Webhooks, besvart
Hvordan verifiserer jeg en Fabrixa-webhook-signatur?
Beregn HMAC-SHA256 på nytt for den ubehandlede forespørselsteksten ved hjelp av din hemmelige nøkkel, kod resultatet med base64, og sammenlign det med «x-webhook-signature»-overskriften ved hjelp av en sammenligning med konstant tid, for eksempel «hash_equals». Fabrixa gir praktiske eksempler i ren PHP og Laravel, og eventuelle avvik bør avvises før payloaden behandles.
Hvilke webhook-hendelser sender Fabrixa?
Fabrixa sender to hendelser, identifisert ved hjelp av x-webhook-topic-overskriften: «order.created», som utløses når en ordre legges inn via API eller direkte i plattformen, og «order.updated», som utløses når ordrestatusen eller leveringsstatusen endres. Begge inneholder hele ordreobjektet, slik at én håndterer kan håndtere begge hendelsene.
Hvor mange ganger prøver Fabrixa på nytt når en webhook mislykkes?
Fabrixa prøver å levere en webhook opptil 10 ganger dersom svaret ikke er en 2xx-, 301- eller 302-kode. Alle 4xx-, 5xx-koder eller tidsavbrudd regnes som en feil og utløser et nytt forsøk; etter det tiende mislykkede forsøket deaktiveres webhooken, så endpointet bør raskt returnere 200 og behandle payloaden asynkront.
Hvilke overskrifter inneholder en Fabrixa-webhook-forespørsel?
Hver POST-forespørsel til en webhook inneholder tre overskrifter: «content-type», som alltid er «application/json»; «x-webhook-topic», som angir navnet på hendelsen, for eksempel «order.updated»; og «x-webhook-signature», som er den base64-kodede HMAC-SHA256-signaturen for den ubehandlede brødteksten. Bruk emnet til å rute hendelsen og signaturen til å verifisere den før du stoler på payloaden.
Hvilke ordrestatus vises i payloaden til en Fabrixa-webhook?
Payloaden inneholder et statusfelt med fire verdier – «Fullført», «Avbrutt», «På vent» og «Importert» – samt et eget felt kalt «fulfillment_status» med fem verdier: «Ikke utført», «Delvis utført», «Planlagt», «Avvist» og «Utført». En enkelt «order.updated»-hendelse kan rapportere en endring i begge feltene.
Konfigurer webhook-endpointet ditt.
Integrasjonsveiledningen gir en trinnvis gjennomgang av hvordan du registrerer endpointet ditt og håndterer hele bestillingssyklusen. Den fullstendige API-referansen inneholder det komplette nyttelastskjemaet.


