Cost+Docs

Webhooks

Motta sanntidsvarsler om betalingsstatus

Webhooks lar Cost+ varsle serveren din i sanntid når en ordres status endres. I stedet for å spørre API-et, oppgir du en URL, og Cost+ sender en HTTP POST-forespørsel til den når det skjer en oppdatering.

Slik fungerer webhooks

  1. Du angir en webhook_url når du oppretter en ordre, eller konfigurerer en standard webhook-URL på prosjektnivå.
  2. Når ordrestatusen endres (f.eks. fra new til completed), sender Cost+ en POST-forespørsel til din webhook-URL.
  3. Serveren din mottar webhooken, og kaller deretter Cost+ API-et for å hente de fullstendige ordredetaljene.
  4. Du oppdaterer systemet ditt basert på den verifiserte ordrestatusen.

Stol aldri på webhook-innholdet alene for å fullføre en ordre. Verifiser alltid ordrestatusen ved å gjøre en GET /v1/orders/{id}/-forespørsel etter å ha mottatt en webhook. Webhooken er en varslingsmekanisme, ikke en sannhetskilde.

Webhook-innhold

Webhook-kroppen er et JSON-objekt som inneholder hendelsestype og ordre-ID:

{
  "event": "status_changed",
  "order_id": "b9ae6...",
  "project_id": "proj_abc123"
}
FeltBeskrivelse
eventTypen hendelse. For tiden status_changed for ordreoppdateringer.
order_idDen unike identifikatoren for ordren som fikk statusendring.
project_idProsjektet som ordren tilhører.

Sette webhook-URL

Du kan sette webhook-URL-en på to måter:

Per ordre

Inkluder webhook_url-feltet når du oppretter en ordre:

{
  "currency": "EUR",
  "amount": 1295,
  "webhook_url": "https://www.example.com/webhook"
}

Prosjektstandard

Konfigurer en standard webhook-URL i Cost+ dashboardet under prosjektinnstillinger. Denne URL-en brukes for alle ordrer som ikke angir sin egen webhook_url.

Selv om du har en prosjektnivå-standard, kan du overstyre den per ordre ved å inkludere webhook_url i ordreopprettelsesforespørselen.

Logikk for nye forsøk

Hvis serveren din ikke svarer med en 2xx-statuskode, forsøker Cost+ å levere webhooken på nytt:

  • Maksimalt antall forsøk: 10
  • Intervall mellom forsøk: 2 minutter
  • Tidsgrense for første forsøk: 4 sekunder
  • Tidsgrense for påfølgende forsøk: 10 sekunder

Hvis alle 10 forsøk mislykkes, markeres webhooken som mislykket. Du kan fortsatt hente ordrestatusen når som helst ved å spørre API-et.

Sørg for at webhook-endepunktet ditt svarer raskt (innen 4 sekunder for det første forsøket). Utfør eventuell langvarig behandling asynkront etter å ha returnert et 200 OK-svar.

Beste praksis

  • Verifiser alltid via API-et. Når du mottar en webhook, kall GET /v1/orders/\{order_id\}/ for å bekrefte gjeldende status før du utfører handlinger som å sende varer eller gi tilgang.
  • Returner 200 raskt. Bekreft webhooken med et 200-svar umiddelbart og behandle ordren asynkront for å unngå tidsavbrudd.
  • Håndter duplikater. Webhook-endepunktet ditt kan motta samme hendelse mer enn én gang. Sørg for at behandlingslogikken din er idempotent.
  • Bruk HTTPS. Bruk alltid en HTTPS-URL for webhook-endepunktet ditt for å sikre at innholdet overføres sikkert.
  • Logg webhook-innhold. Lagre innkommende webhook-data for feilsøking og revisjon.

Relaterte endepunkter

On this page