API-Referenz zum Planwechsel
API zur Vorschau von Planänderungen
Leitfaden zur Abonnementintegration
Was ist ein Upgrade oder Downgrade eines Abonnements?
Planänderungen ermöglichen es Ihnen, einen Kunden zwischen Abonnementstufen oder -mengen zu verschieben. Verwenden Sie es, um:- Preise an Nutzung oder Funktionen anzupassen
- Von monatlich auf jährlich (oder umgekehrt) zu wechseln
- Die Menge für sitzbasierte Produkte anzupassen
Wann sollten Planänderungen verwendet werden
- Upgrade, wenn ein Kunde mehr Funktionen, Nutzung oder Plätze benötigt
- Downgrade, wenn die Nutzung abnimmt
- Benutzer auf ein neues Produkt oder einen neuen Preis migrieren, ohne ihr Abonnement zu kündigen
Voraussetzungen
Bevor Sie Änderungen an Abonnementplänen implementieren, stellen Sie sicher, dass Sie:- Ein Dodo Payments-Händlerkonto mit aktiven Abonnementprodukten haben
- API-Anmeldeinformationen (API-Schlüssel und Webhook-Geheimschlüssel) aus dem Dashboard haben
- Ein bestehendes aktives Abonnement zur Modifikation haben
- Einen Webhook-Endpunkt konfiguriert haben, um Abonnementereignisse zu verarbeiten
Schritt-für-Schritt-Implementierungsleitfaden
Befolgen Sie diesen umfassenden Leitfaden, um Änderungen an Abonnementplänen in Ihrer Anwendung zu implementieren:Verstehen Sie die Anforderungen an Planänderungen
- Welche Abonnementprodukte auf welche anderen geändert werden können
- Welcher Proratisierungsmodus zu Ihrem Geschäftsmodell passt
- Wie Sie fehlgeschlagene Planänderungen elegant handhaben
- Welche Webhook-Ereignisse Sie zur Statusverwaltung verfolgen sollten
Wählen Sie Ihre Proratisierungsstrategie
- prorated_immediately
- difference_immediately
- full_immediately
- Berechnet den genauen proratisierten Betrag basierend auf der verbleibenden Zykluszeit
- Berechnet einen proratisierten Betrag basierend auf der verbleibenden ungenutzten Zeit im Zyklus
- Bietet transparente Abrechnung für Kunden
Implementieren Sie die Change Plan API
prorated_immediately, full_immediately oder difference_immediately.Webhook-Ereignisse verarbeiten
subscription.active: Planänderung erfolgreich, Abonnement aktualisiertsubscription.plan_changed: Abonnementplan geändert (Upgrade/Downgrade/Add-on-Update)subscription.on_hold: Planänderungsgebühr fehlgeschlagen, Abonnement pausiertpayment.succeeded: Sofortige Gebühr für Planänderung erfolgreichpayment.failed: Sofortige Gebühr fehlgeschlagen
Aktualisieren Sie den Status Ihrer Anwendung
- Gewähren/entziehen Sie Funktionen basierend auf dem neuen Plan
- Aktualisieren Sie das Kunden-Dashboard mit den neuen Plandetails
- Senden Sie Bestätigungs-E-Mails über Planänderungen
- Protokollieren Sie Abrechnungsänderungen zu Prüfungszwecken
Testen und Überwachen
- Testen Sie alle Proratisierungsmodi mit verschiedenen Szenarien
- Überprüfen Sie, ob die Verarbeitung von Webhooks korrekt funktioniert
- Überwachen Sie die Erfolgsquoten von Planänderungen
- Richten Sie Alarme für fehlgeschlagene Planänderungen ein
Vorschau von Planänderungen
Bevor Sie sich zu einer Planänderung verpflichten, verwenden Sie die Vorschau-API, um den Kunden genau zu zeigen, was ihnen berechnet wird:- Node.js SDK
- Python SDK
Change Plan API
Verwenden Sie die Change Plan API, um Produkt, Menge und Proratisierungsverhalten für ein aktives Abonnement zu ändern.Schnellstartbeispiele
- Node.js SDK
- Python SDK
- Go SDK
- HTTP
invoice_id und payment_id werden nur zurückgegeben, wenn eine sofortige Gebühr und/oder Rechnung während der Planänderung erstellt wird. Verlassen Sie sich immer auf Webhook-Ereignisse (z. B. payment.succeeded, subscription.plan_changed), um Ergebnisse zu bestätigen.Verwaltung von Addons
Bei Änderungen an Abonnementplänen können Sie auch Addons ändern:Proratisierungsmodi
Wählen Sie, wie Sie den Kunden bei Planänderungen abrechnen:prorated_immediately
- Berechnet die teilweise Differenz im aktuellen Zyklus
- Wenn im Testzeitraum, wird sofort abgerechnet und jetzt auf den neuen Plan gewechselt
- Downgrade: kann eine proratisierte Gutschrift für zukünftige Erneuerungen erzeugen
full_immediately
- Berechnet den vollen Betrag des neuen Plans sofort
- Ignoriert die verbleibende Zeit des alten Plans
difference_immediately erstellt werden, sind abonnementspezifisch und unterscheiden sich von Kundenkrediten. Sie gelten automatisch für zukünftige Erneuerungen des gleichen Abonnements und sind nicht übertragbar zwischen Abonnements.difference_immediately
- Upgrade: sofortige Berechnung der Preisunterschiede zwischen alten und neuen Plänen
- Downgrade: verbleibenden Wert als interne Gutschrift zum Abonnement hinzufügen und automatisch bei Erneuerungen anwenden
Beispielszenarien
Upgrade: Basic ($30) → Pro ($80) mit difference_immediately
Upgrade: Basic ($30) → Pro ($80) mit difference_immediately
Downgrade: Plus ($50) → Starter ($20) mit difference_immediately
Downgrade: Plus ($50) → Starter ($20) mit difference_immediately
Upgrade mitten im Zyklus mit prorated_immediately
Upgrade mitten im Zyklus mit prorated_immediately
Abrechnung zurücksetzen mit full_immediately
Abrechnung zurücksetzen mit full_immediately
Verarbeitung von Webhooks
Verfolgen Sie den Abonnementstatus über Webhooks, um Planänderungen und Zahlungen zu bestätigen.Zu verarbeitende Ereignistypen
subscription.active: Abonnement aktiviertsubscription.plan_changed: Abonnementplan geändert (Upgrade/Downgrade/Add-on-Änderungen)subscription.on_hold: Gebühr fehlgeschlagen, Abonnement pausiertsubscription.renewed: Erneuerung erfolgreichpayment.succeeded: Zahlung für Planänderung oder Erneuerung erfolgreichpayment.failed: Zahlung fehlgeschlagen
Überprüfen Sie Signaturen und verarbeiten Sie Absichten
- Next.js Route Handler
- Express.js
Best Practices
Befolgen Sie diese Empfehlungen für zuverlässige Änderungen an Abonnementplänen:Strategie zur Planänderung
- Gründlich testen: Testen Sie Planänderungen immer im Testmodus, bevor Sie in die Produktion gehen
- Proratisierung sorgfältig wählen: Wählen Sie den Proratisierungsmodus, der zu Ihrem Geschäftsmodell passt
- Fehler elegant behandeln: Implementieren Sie eine ordnungsgemäße Fehlerbehandlung und Wiederholungslogik
- Erfolgsquoten überwachen: Verfolgen Sie die Erfolgs-/Fehlerquoten von Planänderungen und untersuchen Sie Probleme
Webhook-Implementierung
- Signaturen überprüfen: Überprüfen Sie immer die Webhook-Signaturen, um die Authentizität sicherzustellen
- Idempotenz implementieren: Behandeln Sie doppelte Webhook-Ereignisse elegant
- Asynchron verarbeiten: Blockieren Sie Webhook-Antworten nicht mit schweren Operationen
- Alles protokollieren: Führen Sie detaillierte Protokolle für Debugging- und Prüfungszwecke
Benutzererfahrung
- Klar kommunizieren: Informieren Sie die Kunden über Änderungen bei der Abrechnung und deren Zeitpunkt
- Bestätigungen bereitstellen: Senden Sie E-Mail-Bestätigungen für erfolgreiche Planänderungen
- Randfälle behandeln: Berücksichtigen Sie Testzeiträume, Proratisierungen und fehlgeschlagene Zahlungen
- UI sofort aktualisieren: Spiegeln Sie Planänderungen in Ihrer Anwendungsoberfläche wider
Häufige Probleme und Lösungen
Lösen Sie typische Probleme, die bei Änderungen an Abonnementplänen auftreten:Gebühr erstellt, aber Abonnement nicht aktualisiert
Gebühr erstellt, aber Abonnement nicht aktualisiert
- Verarbeitung von Webhooks fehlgeschlagen oder verzögert
- Anwendungsstatus nicht aktualisiert nach Erhalt von Webhooks
- Datenbanktransaktionsprobleme während der Statusaktualisierung
- Implementieren Sie eine robuste Verarbeitung von Webhooks mit Wiederholungslogik
- Verwenden Sie idempotente Operationen für Statusaktualisierungen
- Fügen Sie Überwachungen hinzu, um verpasste Webhook-Ereignisse zu erkennen und zu alarmieren
- Überprüfen Sie, ob der Webhook-Endpunkt zugänglich und korrekt antwortet
Gutschriften werden nach Downgrade nicht angewendet
Gutschriften werden nach Downgrade nicht angewendet
- Erwartungen an den Proratisierungsmodus: Downgrades gutschreiben die volle Preisunterschied des Plans mit
difference_immediately, währendprorated_immediatelyeine proratisierte Gutschrift basierend auf der verbleibenden Zeit im Zyklus erzeugt - Gutschriften sind abonnementspezifisch und werden nicht zwischen Abonnements übertragen
- Gutschriftensaldo nicht im Kundendashboard sichtbar
- Verwenden Sie
difference_immediatelyfür Downgrades, wenn Sie automatische Gutschriften wünschen - Erklären Sie den Kunden, dass Gutschriften für zukünftige Erneuerungen des gleichen Abonnements gelten
- Implementieren Sie ein Kundenportal, um Gutschriftensalden anzuzeigen
- Überprüfen Sie die Vorschau der nächsten Rechnung, um angewendete Gutschriften zu sehen
Webhook-Signaturüberprüfung schlägt fehl
Webhook-Signaturüberprüfung schlägt fehl
- Falscher Webhook-Geheimschlüssel
- Rohkörper der Anfrage wurde vor der Signaturüberprüfung geändert
- Falsches Signaturüberprüfungsalgorithmus
- Überprüfen Sie, ob Sie den richtigen
DODO_WEBHOOK_SECRETaus dem Dashboard verwenden - Lesen Sie den Rohkörper der Anfrage vor allen JSON-Parsing-Middleware
- Verwenden Sie die Standardbibliothek zur Überprüfung von Webhooks für Ihre Plattform
- Testen Sie die Überprüfung der Webhook-Signatur in der Entwicklungsumgebung
Planänderung schlägt mit 422-Fehler fehl
Planänderung schlägt mit 422-Fehler fehl
- Ungültige Abonnement-ID oder Produkt-ID
- Abonnement nicht im aktiven Zustand
- Fehlende erforderliche Parameter
- Produkt nicht für Planänderungen verfügbar
- Überprüfen Sie, ob das Abonnement existiert und aktiv ist
- Überprüfen Sie, ob die Produkt-ID gültig und verfügbar ist
- Stellen Sie sicher, dass alle erforderlichen Parameter bereitgestellt werden
- Überprüfen Sie die API-Dokumentation für Parameteranforderungen
Sofortige Gebühr schlägt während der Planänderung fehl
Sofortige Gebühr schlägt während der Planänderung fehl
- Unzureichende Mittel auf der Zahlungsmethode des Kunden
- Zahlungsmethode abgelaufen oder ungültig
- Bank hat die Transaktion abgelehnt
- Betrugsüberprüfung hat die Gebühr blockiert
- Behandeln Sie
payment.failedWebhook-Ereignisse angemessen - Benachrichtigen Sie den Kunden, um die Zahlungsmethode zu aktualisieren
- Implementieren Sie eine Wiederholungslogik für vorübergehende Fehler
- Erwägen Sie, Planänderungen mit fehlgeschlagenen sofortigen Gebühren zuzulassen
Abonnement pausiert nach Planänderung
Abonnement pausiert nach Planänderung
on_holdWas passiert:
Wenn eine Planänderungsgebühr fehlschlägt, wird das Abonnement automatisch in den Status on_hold versetzt. Das Abonnement wird nicht automatisch erneuert, bis die Zahlungsmethode aktualisiert wird.Lösung: Aktualisieren Sie die Zahlungsmethode, um das Abonnement wieder zu aktivierenUm ein Abonnement aus dem Status on_hold nach einer fehlgeschlagenen Planänderung wieder zu aktivieren:- Aktualisieren Sie die Zahlungsmethode mit der Update Payment Method API
- Automatische Gebührenerstellung: Die API erstellt automatisch eine Gebühr für ausstehende Beträge
- Rechnungserstellung: Eine Rechnung wird für die Gebühr erstellt
- Zahlungsabwicklung: Die Zahlung wird mit der neuen Zahlungsmethode verarbeitet
- Reaktivierung: Nach erfolgreicher Zahlung wird das Abonnement in den Status
activereaktiviert
subscription.on_hold: Abonnement wurde pausiert (erhalten, wenn die Planänderungsgebühr fehlschlägt)payment.succeeded: Zahlung für ausstehende Beträge erfolgreich (nach Aktualisierung der Zahlungsmethode)subscription.active: Abonnement nach erfolgreicher Zahlung reaktiviert
- Benachrichtigen Sie die Kunden sofort, wenn eine Planänderungsgebühr fehlschlägt
- Geben Sie klare Anweisungen zur Aktualisierung ihrer Zahlungsmethode
- Überwachen Sie Webhook-Ereignisse, um den Reaktivierungsstatus zu verfolgen
- Erwägen Sie, eine automatische Wiederholungslogik für vorübergehende Zahlungsfehler zu implementieren
API-Referenz zur Aktualisierung der Zahlungsmethode
Testen Ihrer Implementierung
Befolgen Sie diese Schritte, um Ihre Implementierung zur Änderung des Abonnementplans gründlich zu testen:Testumgebung einrichten
- Verwenden Sie Test-API-Schlüssel und Testprodukte
- Erstellen Sie Testabonnements mit verschiedenen Plantypen
- Konfigurieren Sie den Test-Webhooks-Endpunkt
- Richten Sie Überwachung und Protokollierung ein
Testen Sie verschiedene Proratisierungsmodi
- Testen Sie
prorated_immediatelymit verschiedenen Positionen im Abrechnungszyklus - Testen Sie
difference_immediatelyfür Upgrades und Downgrades - Testen Sie
full_immediately, um Abrechnungszyklen zurückzusetzen - Überprüfen Sie, ob die Gutschriftberechnungen korrekt sind
Webhook-Verarbeitung testen
- Überprüfen Sie, ob alle relevanten Webhook-Ereignisse empfangen werden
- Testen Sie die Überprüfung der Webhook-Signatur
- Behandeln Sie doppelte Webhook-Ereignisse elegant
- Testen Sie Szenarien für das Fehlschlagen der Webhook-Verarbeitung
Fehler-Szenarien testen
- Testen Sie mit ungültigen Abonnement-IDs
- Testen Sie mit abgelaufenen Zahlungsmethoden
- Testen Sie Netzwerkfehler und Zeitüberschreitungen
- Testen Sie mit unzureichenden Mitteln
Überwachung in der Produktion
- Richten Sie Alarme für fehlgeschlagene Planänderungen ein
- Überwachen Sie die Verarbeitungszeiten von Webhooks
- Verfolgen Sie die Erfolgsquoten von Planänderungen
- Überprüfen Sie Kundenanfragen zu Problemen mit Planänderungen
Fehlerbehandlung
Behandeln Sie häufige API-Fehler elegant in Ihrer Implementierung:HTTP-Statuscodes
200 OK
200 OK
400 Bad Request
400 Bad Request
401 Unauthorized
401 Unauthorized
404 Not Found
404 Not Found
422 Unprocessable Entity
422 Unprocessable Entity
500 Internal Server Error
500 Internal Server Error
Fehlerantwortformat
Nächste Schritte
- Überprüfen Sie die Change Plan API
- Erkunden Sie Kundenkredite
- Implementieren Sie Alarme für
subscription.on_hold - Sehen Sie sich unseren Leitfaden zur Webhook-Integration an