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 Sessioni di Checkout per vendere prodotti in abbonamento con un checkout sicuro e ospitato. Passa il tuo prodotto in abbonamento inproduct_cart e reindirizza i clienti all’checkout_url restituito.
- 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 (si attiva su qualsiasi modifica di campo).subscription.on_hold- L’abbonamento è stato messo in attesa a causa di un rinnovo non riuscito.subscription.failed- La creazione dell’abbonamento è fallita durante la creazione del mandato.subscription.renewed- L’abbonamento è stato 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 non riuscito.
- Abbonamento in attesa
subscription.on_hold- L’abbonamento è stato messo in attesa a causa di un pagamento di rinnovo non riuscito o di un addebito di cambio piano non riuscito.- Quando un abbonamento viene messo in attesa, non si rinnoverà automaticamente fino a quando il metodo di pagamento non verrà aggiornato.
Migliore Pratica: Per semplificare l’implementazione, ti consigliamo di tracciare principalmente gli eventi di abbonamento per gestire il ciclo di vita dell’abbonamento.
Gestione dell’abbonamento in attesa
Quando un abbonamento entra nello stato dion_hold, è necessario 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 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 stato dion_hold, utilizza l’API Aggiorna Metodo di Pagamento. Questo automaticamente:
- Crea un addebito per i restanti importi dovuti
- Genera una fattura per l’addebito
- Elabora il pagamento utilizzando il nuovo metodo di pagamento
- Riattiva l’abbonamento nello stato di
activedopo un pagamento riuscito
1
Gestisci il webhook subscription.on_hold
Quando ricevi un webhook
subscription.on_hold, aggiorna lo stato della tua applicazione e notifica il cliente:2
Aggiorna il metodo di pagamento
Quando il cliente è pronto per aggiornare il proprio metodo di pagamento, chiama l’API Aggiorna Metodo di Pagamento:
Puoi anche utilizzare un ID di metodo di pagamento esistente se il cliente ha metodi di pagamento salvati:
3
Monitora gli eventi webhook
Dopo aver aggiornato il metodo di pagamento, monitora questi eventi webhook:
payment.succeeded- L’addebito per i restanti importi dovuti è stato effettuato con successosubscription.active- L’abbonamento è stato riattivato
Payload dell’evento di abbonamento di esempio
| Proprietà | Tipo | Richiesto | Descrizione |
|---|---|---|---|
business_id | string | Sì | L’identificatore unico per l’azienda |
timestamp | string | Sì | Il timestamp di quando si è verificato l’evento (non necessariamente lo stesso di quando è stato consegnato) |
type | string | Sì | Il tipo di evento. Vedi Tipi di eventi |
data | object | Sì | Il payload principale dei dati. Vedi Oggetto Dati |
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.Riferimento API Cambio Piano
Per informazioni dettagliate su come cambiare i piani di abbonamento, ti preghiamo di consultare la nostra documentazione API Cambio Piano.
Opzioni di Prorata
Quando cambi i piani di abbonamento, hai due opzioni per gestire l’addebito immediato:1. prorated_immediately
- Calcola l’importo prorato 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, questo cambierà immediatamente l’utente al nuovo piano, addebitando il cliente subito
2. full_immediately
- Addebita al cliente l’importo totale dell’abbonamento per il nuovo piano
- Ignora qualsiasi tempo rimanente o crediti dal piano precedente
- Utile quando vuoi ripristinare il ciclo di fatturazione o addebitare l’importo totale indipendentemente dalla proration
3. difference_immediately
- Quando si aggiorna, al cliente viene immediatamente addebitata la differenza tra i due importi del piano.
- Ad esempio, se il piano attuale è di 30 Dollari e il cliente passa a un piano di 80 Dollari, viene addebitato $50 immediatamente.
- Quando si riduce, l’importo non utilizzato dal piano attuale viene aggiunto come credito interno e applicato automaticamente 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 vengono accreditati e utilizzati per il prossimo ciclo di fatturazione.
Comportamento
- Quando invochi questa API, Dodo Payments avvia immediatamente un addebito in base all’opzione di proration selezionata
- Se il cambio piano è una riduzione e utilizzi
prorated_immediately, i crediti verranno calcolati automaticamente e aggiunti al saldo di credito 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_immediatelysalta i calcoli di credito 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 ti consentono di addebitare i clienti in modo flessibile, non solo secondo un programma fisso. Contatta il supporto per abilitare questa funzionalità.
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 dopo passo—compresi esempi di richiesta/riposta, politiche di ripetizione sicura e gestione dei webhook—vedi la Guida agli Abbonamenti On-Demand.