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 Checkout Sessions för att sälja prenumerationsprodukter via en säker, värdhanterad kassa. Skicka din prenumerationsprodukt iproduct_cart och omdirigera kunderna 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 aktiveras framgångsrikt.subscription.updated- Prenumerationsobjektet uppdaterades (utlöses vid alla fältändringar).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
De webhooks du tar emot och deras timing beror på om produkten har en provperiod. Omedelbar debitering (0 provdagar):subscription.active: medgivandet auktoriseras och prenumerationen aktiveras.payment.succeeded: bekräftar den första debiteringen. Förvänta dig detta inom 2–10 minuter efter checkout.
- Vid provperiodens start (checkout):
subscription.activeutlöses när betalningsmetoden har auktoriserats. Ingen återkommande debitering görs ännu. Den första riktiga debiteringen skjuts upp tills provperioden är slut. - Vid provperiodens slut: det återkommande beloppet debiteras och du tar emot
payment.succeededtillsammans medsubscription.renewed.
subscription.renewed: utlöses vid varje faktureringsperiod när förnyelsebetalningen dras, alltid tillsammans medpayment.succeeded. Den innehåller även den uppdateradenext_billing_date.
Varje gång pengar faktiskt dras för en prenumerationsprodukt får du
subscription.renewed och payment.succeeded. Använd subscription.renewed (i stället för endast payment.succeeded) som signal för att förlänga åtkomsten till nästa period.- Prenumerationsfel
subscription.failed– Det gick inte att skapa prenumerationen eftersom ett medgivande inte kunde skapas.payment.failed– Anger en misslyckad betalning.
- Prenumeration pausad
subscription.on_hold– Prenumerationen pausas på grund av en misslyckad förnyelsebetalning eller en misslyckad debitering för planändring.- När en prenumeration pausas förnyas den inte automatiskt förrän betalningsmetoden har uppdaterats.
Bästa praxis: För att förenkla implementeringen rekommenderar vi att du främst spårar prenumerationshändelser för att hantera prenumerationens livscykel.
subscription.failed jämfört med subscription.on_hold
Dessa två händelser är lätta att blanda ihop, men de kräver helt olika hantering:
Hantera pausad prenumeration
När en prenumeration övergår till tillståndeton_hold måste du uppdatera betalningsmetoden för att återaktivera den. Det här avsnittet förklarar när prenumerationer pausas och hur du hanterar dem.
När prenumerationer pausas
En prenumeration pausas när:- Förnyelsebetalningen misslyckas: Den automatiska förnyelsedebiteringen misslyckas på grund av otillräckliga medel, ett utgånget kort eller att banken nekar betalningen
- Debiteringen för planändringen misslyckas: En omedelbar debitering under en upp- eller nedgradering av planen misslyckas
- Auktorisering av betalningsmetoden misslyckas: Betalningsmetoden kan inte auktoriseras för återkommande debiteringar
Återaktivera prenumerationer från pausat tillstånd
För att återaktivera en prenumeration från tillståndeton_hold använder du API:t Update Payment Method. Detta gör automatiskt följande:
- Skapar en debitering för återstående belopp
- Genererar en faktura för debiteringen
- Behandlar betalningen med den nya betalningsmetoden
- Återaktiverar prenumerationen till tillståndet
activenär betalningen har genomförts
1
Handle subscription.on_hold webhook
När du tar emot en webhook av typen
subscription.on_hold uppdaterar du applikationens tillstånd och meddelar kunden:2
Update payment method
När kunden är redo att uppdatera sin betalningsmetod anropar du API:t Update Payment Method:
Du kan även använda ett befintligt ID för betalningsmetoden om kunden har sparade betalningsmetoder:
3
Monitor webhook events
När du har uppdaterat betalningsmetoden övervakar du följande webhook-händelser:
payment.succeeded– Debiteringen för återstående belopp genomfördessubscription.active– Prenumerationen har återaktiverats
Exempel på payload för prenumerationshändelse
Ändra prenumerationsplaner
Du kan uppgradera eller nedgradera en prenumerationsplan med API-endpointen för planändring. Detta låter dig ändra prenumerationens produkt och antal samt hantera proportionell debitering.Change Plan API Reference
Mer detaljerad information om hur du ändrar prenumerationsplaner finns i vår API-dokumentation för Change Plan.
Alternativ för proportionell debitering
När du ändrar prenumerationsplaner har du två alternativ för hur den omedelbara debiteringen ska hanteras:1. prorated_immediately
- Beräknar det proportionella beloppet baserat på den återstående tiden i den aktuella faktureringsperioden
- Debiterar kunden endast skillnaden mellan den gamla och den nya planen
- Under en provperiod växlar användaren omedelbart till den nya planen och kunden debiteras direkt
2. full_immediately
- Debiterar kunden hela prenumerationsbeloppet för den nya planen
- Ignorerar eventuell återstående tid eller krediter från den föregående planen
- Användbart när du vill återställa faktureringsperioden eller debitera hela beloppet oavsett proportionell debitering
3. difference_immediately
- Vid uppgradering debiteras kunden omedelbart skillnaden mellan de två planbeloppen.
- Om den aktuella planen till exempel kostar 30 dollar och kunden uppgraderar till en plan på 80 dollar debiteras de $50 direkt.
- Vid nedgradering läggs det outnyttjade beloppet från den aktuella planen till som en intern kredit och används automatiskt vid framtida förnyelser av prenumerationen.
- Om den aktuella planen till exempel kostar 50 dollar och kunden byter till en plan på 20 dollar krediteras de återstående $30 och används under nästa faktureringsperiod.
4. do_not_bill
- Tillämpas planändringen omedelbart men debiterar ingenting vid ändringstillfället.
- Den uppdaterade planen (samt antal/tillägg) faktureras vid nästa schemalagda förnyelse, och det ursprungliga faktureringsdatumet bevaras.
Beteende
- När du anropar detta API initierar Dodo Payments omedelbart en debitering baserat på det valda alternativet för proportionell debitering
- Om planändringen är en nedgradering och du använder
prorated_immediatelyberäknas krediter automatiskt och läggs till i prenumerationens kreditsaldo. Dessa krediter gäller endast den prenumerationen och används bara för att kvitta framtida återkommande betalningar för samma prenumeration - Alternativet
full_immediatelykringgår kreditberäkningar och debiterar hela beloppet för den nya planen
Debiteringsbehandling
- Den omedelbara debiteringen som initieras vid planändringen slutförs vanligtvis på mindre än 2 minuter
- Om denna omedelbara debitering misslyckas av någon anledning pausas prenumerationen automatiskt tills problemet har lösts
On-demand-prenumerationer
Create Subscription
API-referens för att skapa prenumerationsprodukter och hantera prenumerationens livscykel
Change Subscription Plan
API-referens för att uppgradera, nedgradera eller ändra prenumerationsplaner med prorateringsalternativ
Update Payment Method
API-referens för att uppdatera betalningsmetoder och återaktivera prenumerationer som är i vänteläge
Patch Subscription
API-referens för att uppdatera prenumerationsdetaljer och konfiguration
on_demand i request body. Detta låter dig auktorisera en betalningsmetod utan en omedelbar debitering eller ange ett anpassat startpris.
Så här debiterar du en on-demand-prenumeration:
För efterföljande debiteringar använder du endpointen POST /subscriptions//charge och anger det belopp som ska debiteras kunden för transaktionen.
För en fullständig steg-för-steg-guide (inklusive exempel på request/response, säkra retry-policyer och webhook-hantering), se guiden för on-demand-prenumerationer.
Viktigt att känna till om prenumerationsfakturering
Provperioder innebär en auktorisering på $0, inte en debitering. När en prenumeration har en provperiod skapar provperiodens start en medgivandeauktorisering på $0 för att spara kortet; den första riktiga debiteringen sker när provperioden slutar. I betalningslistan visas en prenumeration under provperiod med exakt en betalning med
amount: 0.Prenumerationens livscykel:
on_hold = en förnyelse misslyckades (kan återställas: be kunden uppdatera sin betalningsmetod; dunning-försök tillämpas). expired = perioden avslutades utan förnyelse och kan inte återaktiveras. Kunden måste prenumerera igen. cancelled = avslutad av kunden eller handlaren. De flesta misslyckade förnyelser beror på avslag från kortutgivaren (otillräckliga medel, nekade kort), inte på ett Dodo-fel.Relaterad API-referens
Create Subscription
API-referens för att skapa prenumerationsprodukter och hantera prenumerationens livscykel
Change Subscription Plan
API-referens för att uppgradera, nedgradera eller ändra prenumerationsplaner med alternativ för proportionell debitering
Update Payment Method
API-referens för att uppdatera betalningsmetoder och återaktivera pausade prenumerationer
Patch Subscription
API-referens för att uppdatera prenumerationsuppgifter och konfiguration