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
- Du angir en
webhook_urlnår du oppretter en ordre, eller konfigurerer en standard webhook-URL på prosjektnivå. - Når ordrestatusen endres (f.eks. fra
newtilcompleted), sender Cost+ en POST-forespørsel til din webhook-URL. - Serveren din mottar webhooken, og kaller deretter Cost+ API-et for å hente de fullstendige ordredetaljene.
- 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"
}| Felt | Beskrivelse |
|---|---|
event | Typen hendelse. For tiden status_changed for ordreoppdateringer. |
order_id | Den unike identifikatoren for ordren som fikk statusendring. |
project_id | Prosjektet 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
- Opprett ordre — sett
webhook_urlper ordre - Oppdater ordre — oppdater webhook-URL-en på en eksisterende ordre
- Webhook-hendelseskjemaer — innholdsformat for
OrderStatusChangedEventogTransactionStatusChangedEvent