Förutsättningar
För att integrera Dodo Payments API behöver du:- Ett Dodo Payments handelskonto
- API-uppgifter (API-nyckel och webhook hemlig nyckel) från instrumentpanelen
API-integration
Utcheckningssessioner
Använd utcheckningssessioner för att sälja prenumerationsprodukter med en säker, hostad utcheckning. Skicka din prenumerationsprodukt iproduct_cart och omdirigera kunder till den returnerade checkout_url.
- Node.js SDK
- Python SDK
- REST API
API-svar
Följande är ett exempel på svaret:checkout_url.
Webhooks
När du integrerar prenumerationer kommer du att få webhooks för att spåra prenumerationslivscykeln. Dessa webhooks hjälper dig att hantera prenumerationsstatusar och betalningsscenarier effektivt. För att ställa in din webhook-slutpunkt, följ vår Detaljerade integrationsguide.Prenumerationseventtyper
Följande webhook-händelser spårar ändringar i prenumerationsstatus:subscription.active- Prenumerationen har aktiverats framgångsrikt.subscription.updated- Prenumerationsobjektet har uppdaterats (utlöses vid ändring av något fält).subscription.on_hold- Prenumerationen sätts på paus på grund av misslyckad förnyelse.subscription.failed- Skapandet av prenumerationen misslyckades under skapandet av mandatet.subscription.renewed- Prenumerationen förnyas för nästa faktureringsperiod.
Betalningsscenarier
Framgångsrik betalningsflöde När en betalning lyckas kommer du att få följande webhooks:subscription.active- Indikerar aktivering av prenumerationenpayment.succeeded- Bekräftar den första betalningen:- För omedelbar fakturering (0 provdagar): Förvänta dig inom 2-10 minuter
- För provdagar: när det slutar
subscription.renewed- Indikerar betalningsavdrag och förnyelse för nästa cykel. (I grund och botten, när betalning dras för prenumerationsprodukter, får dusubscription.renewedwebhook tillsammans medpayment.succeeded)
- Prenumerationsfel
subscription.failed- Skapandet av prenumerationen misslyckades på grund av misslyckande att skapa ett mandat.payment.failed- Indikerar misslyckad betalning.
- Prenumeration på paus
subscription.on_hold- Prenumerationen sätts på paus på grund av misslyckad förnyelsebetalning eller misslyckad avgift vid planändring.- När en prenumeration sätts på paus kommer den inte att förnyas automatiskt förrän betalningsmetoden uppdateras.
Bästa praxis: För att förenkla implementeringen rekommenderar vi att främst spåra prenumerationsevent för att hantera prenumerationslivscykeln.
Hantera prenumeration på paus
När en prenumeration går in ion_hold tillstånd, behöver du uppdatera betalningsmetoden för att återaktivera den. Denna sektion förklarar när prenumerationer sätts på paus och hur man hanterar dem.
När prenumerationer sätts på paus
En prenumeration sätts på paus när:- Förnyelsebetalning misslyckas: Den automatiska förnyelseavgiften misslyckas på grund av otillräckliga medel, utgången kort eller bankavslag
- Avgift vid planändring misslyckas: En omedelbar avgift under planuppgradering/nedgradering misslyckas
- Behörighet för betalningsmetod misslyckas: Betalningsmetoden kan inte auktoriseras för återkommande avgifter
Återaktivera prenumerationer från paus
För att återaktivera en prenumeration frånon_hold tillstånd, använd API:et för att uppdatera betalningsmetoden. Detta gör automatiskt:
- Skapar en avgift för utestående belopp
- Genererar en faktura för avgiften
- Behandlar betalningen med den nya betalningsmetoden
- Återaktiverar prenumerationen till
activetillstånd efter lyckad betalning
1
Hantera subscription.on_hold webhook
När du får en
subscription.on_hold webhook, uppdatera din applikationsstatus och meddela kunden:2
Uppdatera betalningsmetod
När kunden är redo att uppdatera sin betalningsmetod, anropa API:et för att uppdatera betalningsmetoden:
Du kan också använda en befintlig betalningsmetod-ID om kunden har sparade betalningsmetoder:
3
Övervaka webhook-händelser
Efter att ha uppdaterat betalningsmetoden, övervaka dessa webhook-händelser:
payment.succeeded- Avgiften för utestående belopp var framgångsriksubscription.active- Prenumerationen har återaktiverats
Exempel på prenumerationseventpayload
| Egenskap | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
business_id | string | Ja | Den unika identifieraren för företaget |
timestamp | string | Ja | Tidsstämpeln för när händelsen inträffade (inte nödvändigtvis samma som när den levererades) |
type | string | Ja | Typen av händelse. Se Händelsetyper |
data | object | Ja | Huvuddatapayloaden. Se Dataobjekt |
Ändra prenumerationsplaner
Du kan uppgradera eller nedgradera en prenumerationsplan med hjälp av API-slutpunkten för att ändra plan. Detta gör att du kan modifiera prenumerationens produkt, kvantitet och hantera proration.API-referens för att ändra plan
För detaljerad information om att ändra prenumerationsplaner, vänligen se vår dokumentation för API:et för att ändra plan.
Prorationsalternativ
När du ändrar prenumerationsplaner har du två alternativ för att hantera den omedelbara avgiften:1. prorated_immediately
- Beräknar det proraterade beloppet baserat på den återstående tiden i den aktuella faktureringscykeln
- Tar ut avgift från kunden endast för skillnaden mellan den gamla och den nya planen
- Under en provperiod kommer detta omedelbart att växla användaren till den nya planen och ta ut avgift från kunden direkt
2. full_immediately
- Tar ut avgift från kunden för hela prenumerationsbeloppet för den nya planen
- Ignorerar eventuell återstående tid eller krediter från den tidigare planen
- Användbart när du vill återställa faktureringscykeln eller ta ut hela beloppet oavsett proration
3. difference_immediately
- Vid uppgradering debiteras kunden omedelbart skillnaden mellan de två planbeloppen.
- Till exempel, om den nuvarande planen är 30 Dollar och kunden uppgraderar till 80 Dollar, debiteras de $50 direkt.
- Vid nedgradering läggs det oanvända beloppet från den nuvarande planen som intern kredit och tillämpas automatiskt på framtida prenumerationsförnyelser.
- Till exempel, om den nuvarande planen är 50 Dollar och kunden byter till en 20 Dollar-plan, krediteras de återstående $30 och används för nästa faktureringscykel.
Beteende
- När du anropar detta API initierar Dodo Payments omedelbart en avgift baserat på ditt valda prorationsalternativ
- Om planändringen är en nedgradering och du använder
prorated_immediately, kommer krediter automatiskt att beräknas och läggas till prenumerationens kreditbalans. Dessa krediter är specifika för den prenumerationen och kommer endast att användas för att kompensera framtida återkommande betalningar av samma prenumeration - Alternativet
full_immediatelykringgår kreditberäkningar och debiterar hela beloppet för den nya planen
Avgiftsbehandling
- Den omedelbara avgiften som initieras vid planändring slutförs vanligtvis inom mindre än 2 minuter
- Om denna omedelbara avgift misslyckas av någon anledning, sätts prenumerationen automatiskt på paus tills problemet är löst
On-Demand Prenumerationer
On-demand prenumerationer låter dig ta betalt av kunder flexibelt, inte bara på ett fast schema. Kontakta support för att aktivera denna funktion.
on_demand fältet i din begäran. Detta gör att du kan auktorisera en betalningsmetod utan en omedelbar avgift, eller ställa in ett anpassat initialpris.
För att ta betalt för en on-demand prenumeration:
För efterföljande avgifter, använd POST /subscriptions/charge slutpunkten och specificera beloppet som ska debiteras kunden för den transaktionen.
För en komplett, steg-för-steg-guide—inklusive exempel på begäran/svar, säkra återföringspolicyer och webhook-hantering—se Guiden för on-demand prenumerationer.