Webhooks
Modtag betalingsstatusnotifikationer i realtid
Webhooks giver Cost+ mulighed for at underrette din server i realtid, når en ordres status ændres. I stedet for at polle API'et angiver du en URL, og Cost+ sender en HTTP POST-anmodning til den, når der er en opdatering.
Sådan fungerer webhooks
- Du angiver en
webhook_url, når du opretter en ordre, eller konfigurerer en standard webhook-URL på projektniveau. - Når ordrestatus ændres (f.eks. fra
newtilcompleted), sender Cost+ en POST-anmodning til din webhook-URL. - Din server modtager webhooken og kalder derefter Cost+ API'et for at hente de fulde ordredetaljer.
- Du opdaterer dit system baseret på den verificerede ordrestatus.
Stol aldrig på webhook-payloaden alene til at opfylde en ordre. Bekræft altid ordrestatus ved at foretage en GET /v1/orders/{id}/-anmodning efter modtagelse af en webhook. Webhooken er en notifikationsmekanisme, ikke en kilde til sandhed.
Webhook-payload
Webhook-kroppen er et JSON-objekt, der indeholder hændelsestypen og ordre-ID'et:
{
"event": "status_changed",
"order_id": "b9ae6...",
"project_id": "proj_abc123"
}| Felt | Beskrivelse |
|---|---|
event | Hændelsestypen. I øjeblikket status_changed for ordreopdateringer. |
order_id | Den unikke identifikator for ordren, hvis status ændrede sig. |
project_id | Projektet, som ordren tilhører. |
Indstilling af webhook-URL
Du kan angive webhook-URL'en på to måder:
Per ordre
Inkluder feltet webhook_url, når du opretter en ordre:
{
"currency": "EUR",
"amount": 1295,
"webhook_url": "https://www.example.com/webhook"
}Projektstandard
Konfigurer en standard webhook-URL i dit Cost+-dashboard under projektindstillinger. Denne URL bruges til alle ordrer, der ikke angiver deres egen webhook_url.
Selvom du har en projektstandard, kan du overskrive den per ordre ved at inkludere webhook_url i ordreoprettelsesanmodningen.
Genforsøgslogik
Hvis din server ikke svarer med en 2xx-statuskode, forsøger Cost+ webhook-leveringen igen:
- Maksimalt antal genforsøg: 10 forsøg
- Genforsøgsinterval: 2 minutter mellem hvert forsøg
- Timeout for første forsøg: 4 sekunder
- Timeout for efterfølgende forsøg: 10 sekunder
Hvis alle 10 genforsøg fejler, markeres webhooken som fejlet. Du kan stadig hente ordrestatus når som helst ved at polle API'et.
Sørg for, at dit webhook-endpoint svarer hurtigt (inden for 4 sekunder for det første forsøg). Udfør eventuel langvarig behandling asynkront efter at have returneret et 200 OK-svar.
Best practices
- Bekræft altid via API'et. Ved modtagelse af en webhook skal du kalde
GET /v1/orders/\{order_id\}/for at bekræfte den aktuelle status, inden du foretager handlinger som at sende varer eller give adgang. - Returner 200 hurtigt. Bekræft webhooken med et
200-svar med det samme og behandl ordren asynkront for at undgå timeouts. - Håndter duplikater. Dit webhook-endpoint kan modtage den samme hændelse mere end én gang. Sørg for, at din behandlingslogik er idempotent.
- Brug HTTPS. Brug altid en HTTPS-URL til dit webhook-endpoint for at sikre, at payloaden transmitteres sikkert.
- Log webhook-payloads. Gem indkommende webhook-data til fejlfinding og revisionsformål.
Relaterede endpoints
- Opret ordre — angiv
webhook_urlper ordre - Opdater ordre — opdater webhook-URL'en på en eksisterende ordre
- Webhook-hændelsesskemaer — payload-format for
OrderStatusChangedEventogTransactionStatusChangedEvent