Riferimento API Cambia Piano
Anteprima Cambiamento Piano API
Guida all'Integrazione degli Abbonamenti
Cos’è un upgrade o downgrade dell’abbonamento?
Cambiare piano consente di spostare un cliente tra livelli o quantità di abbonamento. Usalo per:- Allineare i prezzi con l’uso o le funzionalità
- Passare da mensile ad annuale (o viceversa)
- Regolare la quantità per prodotti basati su posti
Quando utilizzare i cambiamenti di piano
- Aggiorna quando un cliente ha bisogno di più funzionalità, utilizzo o posti
- Riduci quando l’uso diminuisce
- Migra gli utenti a un nuovo prodotto o prezzo senza annullare il loro abbonamento
Requisiti
Prima di implementare i cambiamenti di piano di abbonamento, assicurati di avere:- Un account commerciante Dodo Payments con prodotti di abbonamento attivi
- Credenziali API (chiave API e chiave segreta webhook) dal dashboard
- Un abbonamento attivo esistente da modificare
- Endpoint webhook configurato per gestire eventi di abbonamento
Guida all’Implementazione Passo-Passo
Segui questa guida completa per implementare i cambiamenti di piano di abbonamento nella tua applicazione:Comprendere i Requisiti per il Cambiamento di Piano
- Quali prodotti di abbonamento possono essere cambiati con quali altri
- Quale modalità di proration si adatta al tuo modello di business
- Come gestire i cambiamenti di piano falliti in modo elegante
- Quali eventi webhook monitorare per la gestione dello stato
Scegli la Tua Strategia di Proration
- prorated_immediately
- difference_immediately
- full_immediately
- Calcola l’importo esatto prorato in base al tempo rimanente del ciclo
- Addebita un importo prorato in base al tempo non utilizzato rimanente nel ciclo
- Fornisce una fatturazione trasparente ai clienti
Implementa l'API Cambia Piano
prorated_immediately, full_immediately, o difference_immediately.Gestisci gli Eventi Webhook
subscription.active: Cambio piano riuscito, abbonamento aggiornatosubscription.plan_changed: Piano di abbonamento cambiato (upgrade/downgrade/aggiornamento addon)subscription.on_hold: Il costo del cambio piano è fallito, abbonamento in pausapayment.succeeded: Addebito immediato per il cambio piano riuscitopayment.failed: Addebito immediato fallito
Aggiorna lo Stato della Tua Applicazione
- Concedi/rimuovi funzionalità in base al nuovo piano
- Aggiorna il dashboard del cliente con i dettagli del nuovo piano
- Invia email di conferma sui cambiamenti di piano
- Registra le modifiche di fatturazione per scopi di audit
Testa e Monitora
- Testa tutte le modalità di proration con diversi scenari
- Verifica che la gestione dei webhook funzioni correttamente
- Monitora i tassi di successo dei cambiamenti di piano
- Configura avvisi per i cambiamenti di piano falliti
Anteprima dei Cambiamenti di Piano
Prima di confermare un cambiamento di piano, utilizza l’API Anteprima per mostrare ai clienti esattamente quanto verrà addebitato:- Node.js SDK
- Python SDK
API Cambia Piano
Utilizza l’API Cambia Piano per modificare prodotto, quantità e comportamento di proration per un abbonamento attivo.Esempi di avvio rapido
- Node.js SDK
- Python SDK
- Go SDK
- HTTP
invoice_id e payment_id vengono restituiti solo quando viene creato un addebito immediato e/o una fattura durante il cambiamento di piano. Fai sempre affidamento sugli eventi webhook (es. payment.succeeded, subscription.plan_changed) per confermare gli esiti.Gestione degli Addon
Quando cambi i piani di abbonamento, puoi anche modificare gli addon:Modalità di Proration
Scegli come addebitare il cliente quando cambi piano:prorated_immediately
- Addebiti per la differenza parziale nel ciclo attuale
- Se in prova, addebiti immediatamente e passa al nuovo piano ora
- Downgrade: può generare un credito proporzionale applicato ai rinnovi futuri
full_immediately
- Addebita l’intero importo del nuovo piano immediatamente
- Ignora il tempo rimanente dal vecchio piano
difference_immediately sono specifici per l’abbonamento e distinti dai Crediti Cliente. Si applicano automaticamente ai rinnovi futuri dello stesso abbonamento e non sono trasferibili tra abbonamenti.difference_immediately
- Upgrade: addebita immediatamente la differenza di prezzo tra i vecchi e i nuovi piani
- Downgrade: aggiungi il valore rimanente come credito interno all’abbonamento e applicalo automaticamente ai rinnovi
Scenari di Esempio
Upgrade: Basic ($30) → Pro ($80) con difference_immediately
Upgrade: Basic ($30) → Pro ($80) con difference_immediately
Downgrade: Plus ($50) → Starter ($20) con difference_immediately
Downgrade: Plus ($50) → Starter ($20) con difference_immediately
Upgrade a metà ciclo con prorated_immediately
Upgrade a metà ciclo con prorated_immediately
Resetta la fatturazione con full_immediately
Resetta la fatturazione con full_immediately
Gestione dei webhook
Monitora lo stato dell’abbonamento tramite webhook per confermare i cambiamenti di piano e i pagamenti.Tipi di eventi da gestire
subscription.active: abbonamento attivatosubscription.plan_changed: piano di abbonamento cambiato (upgrade/downgrade/cambiamenti addon)subscription.on_hold: addebito fallito, abbonamento in pausasubscription.renewed: rinnovo riuscitopayment.succeeded: pagamento per cambio piano o rinnovo riuscitopayment.failed: pagamento fallito
Verifica le firme e gestisci le intenzioni
- Gestore di Route Next.js
- Express.js
Migliori Pratiche
Segui queste raccomandazioni per cambiamenti di piano di abbonamento affidabili:Strategia di Cambiamento di Piano
- Testa a fondo: Testa sempre i cambiamenti di piano in modalità test prima della produzione
- Scegli la proration con attenzione: Seleziona la modalità di proration che si allinea con il tuo modello di business
- Gestisci i fallimenti in modo elegante: Implementa una corretta gestione degli errori e logica di ripetizione
- Monitora i tassi di successo: Monitora i tassi di successo/fallimento dei cambiamenti di piano e indaga sui problemi
Implementazione dei Webhook
- Verifica le firme: Verifica sempre le firme dei webhook per garantire l’autenticità
- Implementa l’idempotenza: Gestisci gli eventi webhook duplicati in modo elegante
- Elabora in modo asincrono: Non bloccare le risposte dei webhook con operazioni pesanti
- Registra tutto: Mantieni registri dettagliati per il debug e scopi di audit
Esperienza Utente
- Comunica chiaramente: Informa i clienti sui cambiamenti di fatturazione e sui tempi
- Fornisci conferme: Invia email di conferma per i cambiamenti di piano riusciti
- Gestisci i casi limite: Considera i periodi di prova, le proration e i pagamenti falliti
- Aggiorna immediatamente l’interfaccia utente: Riflette i cambiamenti di piano nella tua interfaccia applicativa
Problemi Comuni e Soluzioni
Risolvi i problemi tipici riscontrati durante i cambiamenti di piano di abbonamento:Addebito creato ma abbonamento non aggiornato
Addebito creato ma abbonamento non aggiornato
- Elaborazione del webhook fallita o ritardata
- Stato dell’applicazione non aggiornato dopo aver ricevuto i webhook
- Problemi di transazione del database durante l’aggiornamento dello stato
- Implementa una gestione robusta dei webhook con logica di ripetizione
- Usa operazioni idempotenti per gli aggiornamenti di stato
- Aggiungi monitoraggio per rilevare e avvisare su eventi webhook mancati
- Verifica che l’endpoint webhook sia accessibile e risponda correttamente
Crediti non applicati dopo il downgrade
Crediti non applicati dopo il downgrade
- Aspettative sul modo di proration: i downgrade accreditano l’intera differenza di prezzo del piano con
difference_immediately, mentreprorated_immediatelycrea un credito proporzionale basato sul tempo rimanente nel ciclo - I crediti sono specifici per l’abbonamento e non si trasferiscono tra abbonamenti
- Saldo del credito non visibile nel dashboard del cliente
- Usa
difference_immediatelyper i downgrade quando desideri crediti automatici - Spiega ai clienti che i crediti si applicano ai rinnovi futuri dello stesso abbonamento
- Implementa un portale clienti per mostrare i saldi dei crediti
- Controlla l’anteprima della prossima fattura per vedere i crediti applicati
Verifica della firma del webhook fallita
Verifica della firma del webhook fallita
- Chiave segreta del webhook errata
- Corpo della richiesta raw modificato prima della verifica della firma
- Algoritmo di verifica della firma errato
- Verifica di utilizzare il corretto
DODO_WEBHOOK_SECRETdal dashboard - Leggi il corpo della richiesta raw prima di qualsiasi middleware di parsing JSON
- Usa la libreria standard di verifica dei webhook per la tua piattaforma
- Testa la verifica della firma del webhook nell’ambiente di sviluppo
Il cambiamento di piano fallisce con errore 422
Il cambiamento di piano fallisce con errore 422
- ID abbonamento o ID prodotto non validi
- Abbonamento non in stato attivo
- Parametri richiesti mancanti
- Prodotto non disponibile per cambiamenti di piano
- Verifica che l’abbonamento esista e sia attivo
- Controlla che l’ID prodotto sia valido e disponibile
- Assicurati che tutti i parametri richiesti siano forniti
- Rivedi la documentazione API per i requisiti dei parametri
Addebito immediato fallisce durante il cambiamento di piano
Addebito immediato fallisce durante il cambiamento di piano
- Fondi insufficienti sul metodo di pagamento del cliente
- Metodo di pagamento scaduto o non valido
- La banca ha rifiutato la transazione
- La rilevazione delle frodi ha bloccato l’addebito
- Gestisci gli eventi webhook di
payment.failedin modo appropriato - Notifica al cliente di aggiornare il metodo di pagamento
- Implementa una logica di ripetizione per i fallimenti temporanei
- Considera di consentire cambi di piano con addebiti immediati falliti
Abbonamento in attesa dopo il cambio piano
Abbonamento in attesa dopo il cambio piano
on_holdCosa succede:
Quando il costo del cambio piano fallisce, l’abbonamento viene automaticamente posto nello stato di on_hold. L’abbonamento non si rinnoverà automaticamente fino a quando il metodo di pagamento non sarà aggiornato.Soluzione: Aggiorna il metodo di pagamento per riattivare l’abbonamentoPer riattivare un abbonamento dallo stato di on_hold dopo un cambio piano fallito:- Aggiorna il metodo di pagamento utilizzando l’API Aggiorna Metodo di Pagamento
- Creazione automatica dell’addebito: L’API crea automaticamente un addebito per i restanti importi dovuti
- Generazione della fattura: Viene generata una fattura per l’addebito
- Elaborazione del pagamento: Il pagamento viene elaborato utilizzando il nuovo metodo di pagamento
- Riattivazione: Dopo un pagamento riuscito, l’abbonamento viene riattivato allo stato di
active
subscription.on_hold: Abbonamento messo in attesa (ricevuto quando il costo del cambio piano fallisce)payment.succeeded: Pagamento per i restanti importi dovuti riuscito (dopo aver aggiornato il metodo di pagamento)subscription.active: Abbonamento riattivato dopo pagamento riuscito
- Notifica immediatamente i clienti quando un addebito per il cambiamento di piano fallisce
- Fornisci istruzioni chiare su come aggiornare il loro metodo di pagamento
- Monitora gli eventi webhook per tracciare lo stato di riattivazione
- Considera di implementare una logica di ripetizione automatica per i fallimenti di pagamento temporanei
Riferimento API Aggiorna Metodo di Pagamento
Testare la Tua Implementazione
Segui questi passaggi per testare a fondo la tua implementazione del cambiamento di piano di abbonamento:Configura l'ambiente di test
- Usa chiavi API di test e prodotti di test
- Crea abbonamenti di test con diversi tipi di piano
- Configura l’endpoint webhook di test
- Imposta monitoraggio e registrazione
Testa diversi modi di proration
- Testa
prorated_immediatelycon varie posizioni del ciclo di fatturazione - Testa
difference_immediatelyper upgrade e downgrade - Testa
full_immediatelyper ripristinare i cicli di fatturazione - Verifica che i calcoli dei crediti siano corretti
Testa la gestione dei webhook
- Verifica che tutti gli eventi webhook pertinenti siano ricevuti
- Testa la verifica della firma del webhook
- Gestisci gli eventi webhook duplicati in modo elegante
- Testa gli scenari di fallimento dell’elaborazione dei webhook
Testa gli scenari di errore
- Testa con ID abbonamenti non validi
- Testa con metodi di pagamento scaduti
- Testa i fallimenti di rete e i timeout
- Testa con fondi insufficienti
Gestione degli Errori
Gestisci gli errori API comuni in modo elegante nella tua implementazione:Codici di Stato HTTP
200 OK
200 OK
400 Bad Request
400 Bad Request
401 Non autorizzato
401 Non autorizzato
DODO_PAYMENTS_API_KEY sia corretto e abbia le autorizzazioni appropriate.404 Not Found
404 Not Found
422 Unprocessable Entity
422 Unprocessable Entity
500 Internal Server Error
500 Internal Server Error
Formato della Risposta di Errore
Prossimi Passi
- Rivedi il Change Plan API
- Esplora Customer Credits
- Implementa avvisi per
subscription.on_hold - Dai un’occhiata alla nostra Guida all’integrazione dei webhook