Gå til hovedinnholdet
En Fabrixa-webhook-payload på skjermen — signert JSON-bestillingshendelse, mot vevd tekstil
Utviklere · Webhook-referanse

Hvert event. Hver payload. Signert.

Fabrixa sender ordrehendelser til endpointet ditt i sanntid. Serveren din eksponerer ett offentlig POST-endpoint; vi sender hele ordreinnholdet med en HMAC-SHA256-signatur og hendelsestemaet i overskriftene. Bekreft signaturen, returner 200 raskt, og behandle asynkront.

HMAC-SHA256 · order.created / order.updated · 10 forsøk på levering

Forespørselshoder

Tre overskrifter identifiserer og verifiserer forespørselen.

Hver POST-webhook inneholder de samme tre overskriftene. Bruk x-webhook-topic for å videreformidle hendelsen og x-webhook-signature for å kontrollere det før du stoler på organisasjonen.

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.

Innkommende overskrifter
{
  "content-type":        "application/json",
  "x-webhook-topic":     "order.updated",
  "x-webhook-signature": "YmEwNjBhMGMy...MAxMw=="
}
Webhook-hendelser

To temaer i dag.

Hver webhook utløses av en bestemt x-webhook-topic verdi. Begge inneholder hele ordreobjektet, slik at én enkelt håndterer kan skifte mellom emnene.

order.created

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.

order.updated

En eksisterende ordre endres.

Utløses når opplysningene om en ordre endres — for eksempel når ordrestatusen eller leveringsstatusen endres.

Statuser

Hva statusfeltene kan fortelle.

Nyttelasten inneholder både en ordre status og en fulfillment_status. Slå på disse for å styre din egen ordrestatus.

Ordrestatus
  • 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.
Leveringsstatuser
  • 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.
Payload

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.

POST-innhold — 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" }
        }
      ]
    }
  ]
}
Bekreft signaturen

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.

Rå 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…
}
Levering og svar

Nye forsøk og det svaret vi forventer.

Nye forsøk

Opptil 10 forsøk, deretter deaktivert

A 2xx (f.eks. 200) eller en 301 / 302 regnes som en suksess. Enhver 4xx, 5xx eller hvis tidsavbrudd utløser et nytt forsøk — opptil 10 ganger totalt. Etter det tiende mislykkede forsøket deaktiveres webhooken.

Svar

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.

Lag din egen håndterer

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.