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
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.
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.
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:
Hent ut verdiene timestamp og hmac fra zonos-signature-headeren.
Beregn din egen HMAC-SHA256-signatur over den rå, uparsede forespørselsteksten, ved hjelp av hemmeligheten du mottok da du opprettet webhooken.
Sammenlign den beregnede signaturen din med hmac-verdien ved hjelp av en tidskonstant sammenligning, og avvis forespørselen hvis de ikke stemmer overens.
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.
Webhooks
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 å:
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:
mutation WebhookCreate($input: WebhookCreateInput!) {webhookCreate(input: $input) {idurltypestatussecretheaders {key}}}Rediger webhook-detaljer
For å redigere en eksisterende webhook via API:
mutation WebhookUpdate($input: WebhookUpdateInput!) {webhookUpdate(input: $input) {idurltypestatus}}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— 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:
timestampoghmacfrazonos-signature-headeren.hmac-verdien ved hjelp av en tidskonstant sammenligning, og avvis forespørselen hvis de ikke stemmer overens.timestamper 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.const crypto = require('crypto');function verifyZonosWebhook(rawBody, signatureHeader, secret) {const [timestampPart, hmacPart] = signatureHeader.split(',');const receivedHmac = hmacPart.split('=')[1];const expectedHmac = crypto.createHmac('sha256', secret).update(rawBody).digest('base64');const receivedBuffer = Buffer.from(receivedHmac);const expectedBuffer = Buffer.from(expectedHmac);if (receivedBuffer.length !== expectedBuffer.length) {return false;}return crypto.timingSafeEqual(receivedBuffer, expectedBuffer);}Vis webhook-logger
For å vise webhook-logger via API:
query WebhookLogs($first: Int$after: String$filter: WebhookLogsFilterInput) {webhookLogs(first: $first, after: $after, filter: $filter) {edges {node {idtypeurlcreatedAtresponseStatus}}}}WebhookCreateInput WebhookLogsFilterInput WebhookUpdateInput
webhookCreate webhookUpdate
Var denne siden nyttig?