DOCS

Lytt til hendelser med webhooks

Få sanntidshendelsesmeldinger for din Zonos-integrering.

Webhooks gir Zonos mulighet til å proaktivt varsle de eksterne systemene dine når bestemte hendelser inntreffer. Når den abonnerte hendelsen inntreffer, sender Zonos en HTTP POST-forespørsel til webhook-URL-en du angir. Forespørselsteksten inneholder hendelsesdetaljene, slik at systemet ditt kan håndtere hendelsen programmatisk.

Webhooks er nyttige for å integrere Zonos med andre plattformer, utløse automatiserte arbeidsflyter og holde data synkronisert på tvers av systemer i sanntid. Du kan for eksempel bruke webhooks til å:

  • Oppdatere ordrestyringssystemet ditt når en ordre opprettes i Zonos
  • Varsle leverandøren for ordreoppfylling når en forsendelse kanselleres
  • Logge statusendringer for internasjonale ordrer i revisjonsøyemed

Webhook-typer 

Alle tilgjengelige webhook-typer er inkludert i enum-en WebhookType. Eksempler på payloads for hver finner du i veiledningen Event Types.

Opprette webhooks 

For å opprette en webhook via API:

1mutation WebhookCreate($input: WebhookCreateInput!) {
2 webhookCreate(input: $input) {
3 id
4 url
5 type
6 status
7 secret
8 headers {
9 key
10 }
11 }
12}

Viktig: Lagre secret-verdien når du oppretter webhooken – den returneres bare her, og du vil trenge den for å verifisere webhook-signaturer. Se Verifisere webhook-signaturer nedenfor.

Rediger webhook-detaljer 

For å redigere en eksisterende webhook via API:

1mutation WebhookUpdate($input: WebhookUpdateInput!) {
2 webhookUpdate(input: $input) {
3 id
4 url
5 type
6 status
7 }
8}

Verifisere webhook-signaturer 

Hver webhook-forespørsel Zonos sender inkluderer en zonos-signature-header, slik at du kan bekrefte at forespørselen faktisk kom fra Zonos, og at payloaden ikke ble endret under overføringen.

Headerverdien har følgende format:

timestamp=<unix-timestamp-ms>,hmac=<base64-encoded-signature>
  • timestamp — tidspunktet, i Unix-epoke-millisekunder, da forespørselen ble signert.
  • hmac — en HMAC-SHA256-signatur av den rå JSON-forespørselsteksten, beregnet med webhookens hemmelighet som nøkkel og Base64-kodet.

For å verifisere en forespørsel:

  1. Hent ut verdiene timestamp og hmac fra zonos-signature-headeren.
  2. Beregn din egen HMAC-SHA256-signatur over den rå, uparsede forespørselsteksten, ved hjelp av hemmeligheten du mottok da du opprettet webhooken.
  3. Sammenlign den beregnede signaturen din med hmac-verdien ved hjelp av en tidskonstant sammenligning, og avvis forespørselen hvis de ikke stemmer overens.
  4. Du kan eventuelt avvise forespørsler der timestamp er eldre enn noen få minutter, for å beskytte mot at en oppfanget forespørsel spilles av på nytt. Zonos håndhever ikke selv et leveringsvindu, så denne kontrollen er opp til deg.
1const crypto = require('crypto');
2 
3function verifyZonosWebhook(rawBody, signatureHeader, secret) {
4 const [timestampPart, hmacPart] = signatureHeader.split(',');
5 const receivedHmac = hmacPart.split('=')[1];
6 
7 const expectedHmac = crypto
8 .createHmac('sha256', secret)
9 .update(rawBody)
10 .digest('base64');
11 
12 const receivedBuffer = Buffer.from(receivedHmac);
13 const expectedBuffer = Buffer.from(expectedHmac);
14 
15 if (receivedBuffer.length !== expectedBuffer.length) {
16 return false;
17 }
18 
19 return crypto.timingSafeEqual(receivedBuffer, expectedBuffer);
20}

Merk: Hvis du har konfigurert egendefinerte headere på webhooken din, blir disse også inkludert ordrett i hver forespørsel sammen med zonos-signature.

Vis webhook-logger 

For å vise webhook-logger via API:

1query WebhookLogs(
2$first: Int
3$after: String
4$filter: WebhookLogsFilterInput
5) {
6 webhookLogs(first: $first, after: $after, filter: $filter) {
7 edges {
8 node {
9 id
10 type
11 url
12 createdAt
13 responseStatus
14 }
15 }
16 }
17}
GraphQL API ReferenceTypes, inputs, and operations used in this guide
Bestill en demo

Var denne siden nyttig?