Requisiti
Per integrare l’API di Dodo Payments, avrai bisogno di:- Un account commerciante Dodo Payments
- Credenziali API (chiave API e chiave segreta webhook) dal dashboard
Integrazione API
Sessioni di Checkout
Utilizza le Checkout Sessions per vendere prodotti in abbonamento con un checkout ospitato sicuro. Includi il tuo prodotto in abbonamento inproduct_cart e reindirizza i clienti al valore restituito checkout_url.
- Node.js SDK
- Python SDK
- REST API
Risposta API
Di seguito è riportato un esempio della risposta:checkout_url.
Webhook
Quando integri gli abbonamenti, riceverai webhook per tracciare il ciclo di vita dell’abbonamento. 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 all’integrazione dettagliata.Tipi di eventi di abbonamento
I seguenti eventi webhook tracciano le modifiche di stato dell’abbonamento:subscription.active- L’abbonamento è stato attivato con successo.subscription.updated- L’oggetto abbonamento è stato aggiornato (scatena l’evento per qualsiasi modifica al campo).subscription.on_hold- L’abbonamento viene sospeso a causa di un rinnovo non riuscito.subscription.failed- La creazione dell’abbonamento non è riuscita durante la creazione del mandato.subscription.renewed- L’abbonamento viene 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): previsto entro 2-10 minuti
- Per i giorni di prova: non appena terminano
subscription.renewed- Indica l’addebito e il rinnovo per il ciclo successivo. (In pratica, ogni volta che viene addebitato un pagamento per prodotti in abbonamento, riceveraisubscription.renewedoltre apayment.succeeded)
- Mancato pagamento dell’abbonamento
subscription.failed- La creazione dell’abbonamento è fallita per impossibilità di creare un mandato.payment.failed- Indica un pagamento non riuscito.
- Abbonamento in sospeso
subscription.on_hold- L’abbonamento viene messo in sospeso a causa di un rinnovo o di un addebito per cambio piano non riuscito.- Quando un abbonamento viene sospeso, non si rinnova automaticamente finché non viene aggiornato il metodo di pagamento.
Best Practice: per semplificare l’implementazione, consigliamo di monitorare principalmente gli eventi relativi all’abbonamento per gestire il ciclo di vita dell’abbonamento.
Gestione dell’abbonamento in attesa
Quando un abbonamento entra nello statoon_hold, è necessario aggiornare il metodo di pagamento per riattivarlo. Questa sezione spiega quando gli abbonamenti vengono messi in sospeso e come gestirli.
Quando gli abbonamenti vengono messi in attesa
Un abbonamento viene messo in attesa quando:- Il pagamento di rinnovo non riesce: L’addebito di rinnovo automatico fallisce a causa di fondi insufficienti, carta scaduta o rifiuto della banca
- Il pagamento per cambio piano non riesce: Un addebito immediato durante l’aggiornamento/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 Update Payment Method. Questa operazione effettua automaticamente:
- Crea un addebito per gli importi residui
- Genera una fattura per tale addebito
- Elabora il pagamento utilizzando il nuovo metodo
- Riattiva l’abbonamento nello stato
activeal completamento del pagamento
Handle subscription.on_hold webhook
Quando ricevi un webhook
subscription.on_hold, aggiorna lo stato dell’applicazione e avvisa il cliente:Update payment method
Quando il cliente è pronto per aggiornare il metodo di pagamento, chiama l’API Update Payment Method:
Puoi anche usare un ID di metodo di pagamento esistente se il cliente ha metodi salvati:
Payload dell’evento di abbonamento di esempio
| Proprietà | Tipo | Richiesto | Descrizione |
|---|---|---|---|
business_id | stringa | Sì | L’identificatore univoco per l’azienda |
timestamp | stringa | Sì | Il timestamp di quando si è verificato l’evento (non necessariamente lo stesso momento della consegna) |
type | stringa | Sì | Il tipo di evento. Consulta Event Types |
data | oggetto | Sì | Il payload dati principale. Consulta Data Object |
Cambiare i 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 proration.Change Plan API Reference
Per informazioni dettagliate sulla modifica dei piani di abbonamento, consulta la nostra documentazione sull’API Change Plan.
Opzioni di Prorata
Quando cambi i piani di abbonamento, hai due opzioni per gestire l’addebito immediato:1. prorated_immediately
- Calcola l’importo proporzionale in base al tempo rimanente nel ciclo di fatturazione corrente
- Addebita al cliente solo la differenza tra il piano precedente e quello nuovo
- Durante un periodo di prova, questo comporterà l’immediato passaggio dell’utente al nuovo piano, addebitando subito il cliente
2. full_immediately
- Addebita al cliente l’intero importo dell’abbonamento per il nuovo piano
- Ignora il tempo rimanente o i crediti residui del piano precedente
- Utile quando si desidera resettare il ciclo di fatturazione o addebitare l’importo totale indipendentemente dalla proratizzazione
3. difference_immediately
- Quando si esegue un upgrade, il cliente viene addebitato immediatamente la differenza tra i due importi del piano.
- Ad esempio, se il piano attuale è di 30 dollari e il cliente passa a 80 dollari, viene addebitato $50 immediatamente.
- Quando si esegue un downgrade, l’importo inutilizzato del piano corrente viene aggiunto come credito interno e applicato automaticamente ai successivi rinnovi dell’abbonamento.
- Ad esempio, se il piano corrente è di 50 dollari e il cliente passa a un piano da 20 dollari, i restanti $30 vengono accreditati e utilizzati per il prossimo ciclo di fatturazione.
Comportamento
- Quando invochi questa API, Dodo Payments avvia immediatamente un addebito basato sull’opzione di proratizzazione selezionata
- Se il cambio piano è un downgrade e utilizzi
prorated_immediately, i crediti verranno calcolati automaticamente e aggiunti al saldo crediti dell’abbonamento. Questi crediti sono specifici per quell’abbonamento e verranno utilizzati solo per compensare i futuri pagamenti ricorrenti dello stesso abbonamento - L’opzione
full_immediatelybypassa il calcolo dei crediti e addebita l’intero importo del nuovo piano
Elaborazione degli addebiti
- L’addebito immediato avviato al momento del cambio 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 viene risolto
Abbonamenti On-Demand
Gli abbonamenti on-demand consentono di addebitare i clienti in modo flessibile, non solo su un programma fisso. Questa funzione è disponibile per tutti gli account.
on_demand nel body della richiesta. Questo ti permette 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 dopo passo—including esempi di richieste/risposte, politiche di retry sicure e gestione dei webhook—consulta la Guida agli abbonamenti on-demand.