Prerequisites
To integrate the Dodo Payments API, you’ll need:- A Dodo Payments merchant account
- API credentials (API key and webhook secret key) from the dashboard
API Integration
Checkout Sessions
Use Checkout Sessions to sell subscription products with a secure, hosted checkout. Pass your subscription product inproduct_cart and redirect customers to the returned checkout_url.
- Node.js SDK
- Python SDK
- REST API
API Response
The following is an example of the response:checkout_url.
Webhook
Quando integri gli abbonamenti, riceverai webhook per monitorare il ciclo di vita degli abbonamenti. Questi webhook ti aiutano a gestire efficacemente gli stati degli abbonamenti e gli scenari di pagamento. Per configurare il tuo endpoint webhook, segui la nostra Guida dettagliata all’integrazione.Tipi di eventi di abbonamento
I seguenti eventi webhook monitorano i cambiamenti di stato dell’abbonamento:subscription.active- L’abbonamento è stato attivato con successo.subscription.updated- L’oggetto dell’abbonamento è stato aggiornato (si attiva su qualsiasi modifica del campo).subscription.on_hold- L’abbonamento è messo in attesa a causa di un rinnovo fallito.subscription.failed- La creazione dell’abbonamento è fallita durante la creazione del mandato.subscription.renewed- L’abbonamento è rinnovato per il prossimo periodo di fatturazione.
Scenari di pagamento
Flusso di pagamento riuscito Quando un pagamento ha successo, riceverai i seguenti webhook:subscription.active- Indica l’attivazione dell’abbonamentopayment.succeeded- Conferma il pagamento iniziale:- Per la fatturazione immediata (0 giorni di prova): Aspettati entro 2-10 minuti
- Per i giorni di prova: ogni volta che termina
subscription.renewed- Indica la deduzione del pagamento e il rinnovo per il prossimo ciclo. (Fondamentalmente, ogni volta che il pagamento viene dedotto per i prodotti in abbonamento, riceverai il webhooksubscription.renewedinsieme apayment.succeeded)
- Fallimento dell’abbonamento
subscription.failed- La creazione dell’abbonamento è fallita a causa del fallimento nella creazione di un mandato.payment.failed- Indica un pagamento fallito.
- Abbonamento in attesa
subscription.on_hold- L’abbonamento è messo in attesa a causa di un pagamento di rinnovo fallito o di un addebito per cambio piano fallito.- Quando un abbonamento è in attesa, non si rinnoverà automaticamente fino a quando il metodo di pagamento non sarà aggiornato.
Miglior pratica: Per semplificare l’implementazione, consigliamo di monitorare principalmente gli eventi di abbonamento per gestire il ciclo di vita degli abbonamenti.
subscription.failed vs. subscription.on_hold
Questi due eventi sono facili da confondere, ma richiedono una gestione molto diversa:
Gestione abbonamento in attesa
Quando un abbonamento entra nello statoon_hold, devi aggiornare il metodo di pagamento per riattivarlo. Questa sezione spiega quando gli abbonamenti vengono messi in attesa e come gestirli.
Quando gli abbonamenti vengono messi in attesa
Un abbonamento è messo in attesa quando:- Il pagamento di rinnovo fallisce: La carica automatica di rinnovo fallisce a causa di fondi insufficienti, carta scaduta o rifiuto della banca
- Il cambio di piano fallisce: Un addebito immediato durante l’upgrade/downgrade del piano fallisce
- L’autorizzazione del metodo di pagamento fallisce: Il metodo di pagamento non può essere autorizzato per addebiti ricorrenti
Riattivazione degli abbonamenti in attesa
Per riattivare un abbonamento dallo statoon_hold, usa l’API di aggiornamento del metodo di pagamento. Questo automaticamente:
- Crea un addebito per i restanti debiti
- Genera una fattura per l’addebito
- Elabora il pagamento utilizzando il nuovo metodo di pagamento
- Riattiva l’abbonamento allo stato
activeal pagamento riuscito
1
Handle subscription.on_hold webhook
Quando ricevi un webhook
subscription.on_hold, aggiorna lo stato della tua applicazione e notifica al cliente:2
Update payment method
Quando il cliente è pronto ad aggiornare il proprio metodo di pagamento, chiama l’API di aggiornamento del metodo di pagamento:
Puoi anche utilizzare un ID di metodo di pagamento esistente se il cliente ha metodi di pagamento salvati:
3
Monitor webhook events
Dopo aver aggiornato il metodo di pagamento, monitorare questi eventi webhook:
payment.succeeded- Il addebito per i debiti rimanenti è riuscitosubscription.active- L’abbonamento è stato riattivato
Esempio di payload evento abbonamento
Modifica dei piani di abbonamento
Puoi aggiornare o ridurre un piano di abbonamento utilizzando l’endpoint API di cambio piano. Questo ti consente di modificare il prodotto dell’abbonamento, la quantità e gestire la ripartizione.Change Plan API Reference
Per informazioni dettagliate sul cambio dei piani di abbonamento, fai riferimento alla nostra documentazione API di cambio piano.
Opzioni di ripartizione
Quando cambi i piani di abbonamento, hai due opzioni per gestire l’addebito immediato:1. prorated_immediately
- Calcola l’importo ripartito in base al tempo rimanente nel ciclo di fatturazione attuale
- Addebita al cliente solo la differenza tra il vecchio e il nuovo piano
- Durante un periodo di prova, ciò passerà immediatamente l’utente al nuovo piano, addebitando subito al cliente
2. full_immediately
- Addebita al cliente l’intero importo dell’abbonamento per il nuovo piano
- Ignora qualsiasi tempo rimanente o crediti dal piano precedente
- Utile quando si desidera reimpostare il ciclo di fatturazione o addebitare l’intero importo indipendentemente dalla ripartizione
3. difference_immediately
- Durante un upgrade, il cliente viene immediatamente addebitato la differenza tra gli importi dei due piani.
- Ad esempio, se il piano attuale è di 30 dollari e il cliente passa a un piano di 80 dollari, vengono addebitati immediatamente 50 dollari.
- Durante un downgrade, l’importo non utilizzato del piano attuale viene aggiunto come credito interno e automaticamente applicato ai futuri rinnovi dell’abbonamento.
- Ad esempio, se il piano attuale è di 50 dollari e il cliente passa a un piano di 20 dollari, i restanti 30 dollari vengono accreditati e usati per il prossimo ciclo di fatturazione.
Comportamento
- Quando invochi questa API, Dodo Payments inizia immediatamente un addebito in base alla tua opzione di ripartizione selezionata
- Se il cambio di piano è un downgrade e usi
prorated_immediately, i crediti saranno automaticamente calcolati e aggiunti al saldo del credito dell’abbonamento. Questi crediti sono specifici per quell’abbonamento e saranno utilizzati solo per compensare i pagamenti ricorrenti futuri dello stesso abbonamento - L’opzione
full_immediatelybypassa i calcoli del credito e addebita l’intero importo del nuovo piano
Elaborazione degli addebiti
- L’addebito immediato avviato al cambio del piano di solito completa l’elaborazione in meno di 2 minuti
- Se questo addebito immediato fallisce per qualsiasi motivo, l’abbonamento viene automaticamente messo in attesa fino a quando il problema non verrà risolto
Abbonamenti on-demand
Gli abbonamenti on-demand ti permettono di addebitare ai clienti in modo flessibile, non solo su un programma fisso. Questa funzione è disponibile per tutti gli account.
on_demand nel corpo della tua richiesta. Questo ti consente di autorizzare un metodo di pagamento senza un addebito immediato o impostare un prezzo iniziale personalizzato.
Per addebitare un abbonamento on-demand:
Per addebiti successivi, utilizza l’endpoint POST /subscriptions//charge e specifica l’importo da addebitare al cliente per quella transazione.
Per una guida completa passo-passo — inclusi esempi di richiesta/risposta, politiche di riprova sicure e gestione dei webhook — vedi la Guida agli abbonamenti on-demand.
Riferimento API correlato
Create Subscription
Riferimento API per la creazione di prodotti in abbonamento e gestione del ciclo di vita dell’abbonamento
Change Subscription Plan
Riferimento API per l’aggiornamento, il downgrade o il cambio dei piani di abbonamento con opzioni di ripartizione
Update Payment Method
Riferimento API per l’aggiornamento dei metodi di pagamento e la riattivazione degli abbonamenti in attesa
Patch Subscription
Riferimento API per l’aggiornamento dei dettagli dell’abbonamento e la configurazione