Få realtidsaviseringar om events för er Zonos-integration.
Webhooks ger Zonos möjlighet att proaktivt meddela era externa system när vissa events inträffar. När det prenumererade eventet inträffar skickar Zonos en HTTP POST-förfrågan till den webhook-URL ni anger. Förfrågningens body innehåller eventdetaljer så att ert system kan bearbeta eventet programmatiskt.
Webhooks är användbara för att integrera Zonos med andra plattformar, utlösa automatiserade arbetsflöden och synkronisera data mellan system i realtid. Ni kan till exempel använda webhooks för att:
Uppdatera ert orderhanteringssystem när en order skapas i Zonos
Meddela er fulfillment-leverantör när en sändning avbokas
Logga statusändringar för internationella ordrar för revisionsändamål
Viktigt: Spara värdet för secret när ni skapar webhooken — det returneras endast här, och ni behöver det för att verifiera webhook-signaturer. Se Verifiera webhook-signaturer nedan.
Varje webhook-förfrågan som Zonos skickar innehåller en zonos-signature-header så att ni kan bekräfta att förfrågan verkligen kom från Zonos och att innehållet inte har ändrats under överföringen.
timestamp — tidpunkten, i Unix-epoktid i millisekunder, då förfrågan signerades.
hmac — en HMAC-SHA256-signatur av den råa JSON-förfrågans body, beräknad med er webhooks secret som nyckel och Base64-kodad.
För att verifiera en förfrågan:
Läs ut värdena för timestamp och hmac från headern zonos-signature.
Beräkna er egen HMAC-SHA256-signatur över den råa, oparsade förfrågans body, med hjälp av det secret ni fick när ni skapade webhooken.
Jämför er beräknade signatur med värdet för hmac med hjälp av en konstant-tidsjämförelse, och avvisa förfrågan om de inte matchar.
Avvisa eventuellt förfrågningar där timestamp är äldre än några minuter för att skydda mot upprepning (replay) av en avlyssnad förfrågan. Zonos upprätthåller inte något leveransfönster själv, så denna kontroll är upp till er.
Webhooks
Lyssna på events med webhooks
Få realtidsaviseringar om events för er Zonos-integration.
Webhooks ger Zonos möjlighet att proaktivt meddela era externa system när vissa events inträffar. När det prenumererade eventet inträffar skickar Zonos en HTTP POST-förfrågan till den webhook-URL ni anger. Förfrågningens body innehåller eventdetaljer så att ert system kan bearbeta eventet programmatiskt.
Webhooks är användbara för att integrera Zonos med andra plattformar, utlösa automatiserade arbetsflöden och synkronisera data mellan system i realtid. Ni kan till exempel använda webhooks för att:
Webhook-typer
Alla tillgängliga webhook-typer finns i enumerationen
WebhookType. Exempelpayloads för varje typ finns i vår guide om Händelsetyper.Skapa webhooks
Så här skapar ni en webhook via API:
mutation WebhookCreate($input: WebhookCreateInput!) {webhookCreate(input: $input) {idurltypestatussecretheaders {key}}}Redigera webhook-detaljer
Så här redigerar ni en befintlig webhook via API:
mutation WebhookUpdate($input: WebhookUpdateInput!) {webhookUpdate(input: $input) {idurltypestatus}}Verifiera webhook-signaturer
Varje webhook-förfrågan som Zonos skickar innehåller en
zonos-signature-header så att ni kan bekräfta att förfrågan verkligen kom från Zonos och att innehållet inte har ändrats under överföringen.Headerns värde har följande format:
timestamp— tidpunkten, i Unix-epoktid i millisekunder, då förfrågan signerades.hmac— en HMAC-SHA256-signatur av den råa JSON-förfrågans body, beräknad med er webhooks secret som nyckel och Base64-kodad.För att verifiera en förfrågan:
timestampochhmacfrån headernzonos-signature.hmacmed hjälp av en konstant-tidsjämförelse, och avvisa förfrågan om de inte matchar.timestampär äldre än några minuter för att skydda mot upprepning (replay) av en avlyssnad förfrågan. Zonos upprätthåller inte något leveransfönster själv, så denna kontroll är upp till er.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);}Visa webhook-loggar
Så här visar ni webhook-loggar 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 den här sidan till hjälp?