Skip to main content

Checkout Sessions

Erstelle einen sicheren, gehosteten Checkout für einmalige Zahlungen und Abonnements.

Payment Links

Teile eine URL, um Zahlungen ohne Code zu erfassen.

Webhooks

Empfange Zahlungsereignisse und erfülle Bestellungen.

API Reference

Vollständige Endpoint-Dokumentation und Live-Tests.

Voraussetzungen

Bevor du beginnst, benötigst du:
  • Ein Dodo Payments-Konto.
  • Mindestens ein Produkt. Erstelle es unter Products im Dashboard. Ein Abonnementprodukt mit einem Preis ungleich null muss mit mindestens $1 oder dem entsprechenden Betrag in seiner Währung bepreist sein. Ein $0-Abonnement wird ebenfalls unterstützt.
  • Einen API-Schlüssel. Erstelle ihn unter Developer → API Keys und speichere ihn in der Umgebungsvariable DODO_PAYMENTS_API_KEY. Erstelle den Schlüssel während der Entwicklung im Testmodus: Die Beispiele auf dieser Seite verwenden den Testmodus, und ein Testmodus-Schlüssel funktioniert nur im Testmodus. Siehe Authentication.

Integrationspfad auswählen

Overlay- und Inline-Checkout funktionieren nur auf einer Webseite. Erstelle in einer nativen mobilen App die Checkout-Sitzung auf deinem Server und öffne deren checkout_url mit einem Mobile-Checkout-SDK. Damit ein Coding-Agent diese Integration für dich erstellt, installiere das Agent Plugin.

Checkout-Sitzungen

Erstelle ein sicheres, gehostetes Checkout-Erlebnis. Du erstellst eine Sitzung auf deinem Server und leitest den Kunden anschließend zur zurückgegebenen checkout_url weiter.
Jede checkout_url funktioniert einmal und läuft nach 24 Stunden ab oder nach 15 Minuten, wenn du confirm: true übergibst. Mit confirm: true musst du außerdem jedes erforderliche Feld angeben. Erstelle für jeden Kunden und jeden Zahlungsversuch eine neue Sitzung.

Checkout-Sitzung erstellen

Zum Checkout weiterleiten

Leite den Kunden nach dem Erstellen einer Sitzung zur checkout_url weiter:
Weitere Informationen zur erweiterten Anpassung findest du im vollständigen Leitfaden zu Checkout Sessions und in der API Reference.
Ein Payment Link ist eine URL, die den Checkout für ein Produkt öffnet, sodass du Zahlungen ohne Code erfassen kannst. Query-Parameter füllen Kundendaten vorab aus und steuern das Checkout-Formular. Wenn ein Kunde den Link öffnet, speichert der Checkout die Parameter in einer Sitzung und verkürzt die URL zu einem session-Parameter, sodass sie bei einer Seitenaktualisierung erhalten bleiben. Ein statischer Payment Link ist eine URL, die du einmal erstellst und mehrfach teilst. Die Basis-URL lautet:
Füge Query-Parameter hinzu, um den Checkout anzupassen:
integer
Standard:"1"
Anzahl der zu kaufenden Artikel.
string
erforderlich
Payment Links verwenden redirect_url. Die Checkout Sessions API verwendet für denselben Zweck return_url.URL, zu der nach der Zahlung weitergeleitet wird. Dodo Payments fügt die Zahlungsdetails als Query-Parameter hinzu, zum Beispiel https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded&email=customer%40example.com. Wenn das Produkt Lizenzschlüssel ausstellt, wird zusätzlich ein license_key-Parameter mit mehreren durch Kommas getrennten Schlüsseln angehängt.
string
Gibt die Zahlungswährung an. Standardmäßig wird die Währung des Rechnungslandes verwendet.
boolean
Standard:"true"
Währungsselector ein- oder ausblenden.
boolean
Standard:"true"
Rabattbereich ein- oder ausblenden. Auf false setzen, damit Kunden keine Gutscheincodes eingeben können.
number
Legt den berechneten Betrag in den Haupteinheiten der Währung fest, zum Beispiel 12.5 für $12.50. Funktioniert nur mit Pay-What-You-Want-Produkten und wird ignoriert, wenn der Wert unter dem Mindestpreis des Produkts liegt.
paymentAmount verwendet Haupteinheiten der Währung (12.5 entspricht $12.50). Das Feld product_cart[].amount der Checkout Sessions API verwendet die kleinste Währungseinheit (1250 entspricht $12.50). Siehe Dynamic Pricing.
string
Benutzerdefinierte Metadatenfelder, zum Beispiel metadata_orderId=123.

Kundeninformationen vorab ausfüllen

Füge Kundenfelder als Query-Parameter hinzu, um den Checkout zu vereinfachen:
string
Vollständiger Name des Kunden (wird ignoriert, wenn firstName oder lastName angegeben ist).
string
Vorname des Kunden.
string
Nachname des Kunden.
string
E-Mail-Adresse des Kunden.
string
Land des Kunden (ISO-3166-1-Alpha-2-Code).
string
Straßenadresse.
string
Stadt.
string
Bundesland oder Provinz.
string
Postleitzahl oder ZIP-Code.

Formularfelder deaktivieren

Um zu verhindern, dass Kunden vorausgefüllte Informationen ändern, deaktiviere ein Feld, indem du seinen Wert übergibst und das entsprechende disable...-Flag auf true setzt:
Das Deaktivieren von Feldern verhindert versehentliche Änderungen und gewährleistet die Datenkonsistenz.
Die Endpoints POST /payments und POST /subscriptions sind veraltet. Verwende stattdessen für neue Integrationen Checkout Sessions.
Bei bestehenden Integrationen, die dynamische Payment Links verwenden, übergib payment_link: true an Create One-Time Payment oder Create Subscription, um einen Link zu erstellen. Die folgenden Beispiele erstellen einen Link für eine einmalige Zahlung. Informationen zu Abonnements findest du im Subscription Integration Guide.

Webhooks

Webhooks informieren deinen Server, wenn eine Zahlung erfolgreich ist oder fehlschlägt, damit du die Bestellung erfüllen kannst.

Webhook-Endpoint erstellen

Gehe im Dashboard zu Developer → Webhooks und füge deine Endpoint-URL hinzu. Kopiere das Signaturgeheimnis des Endpoints in die Umgebungsvariable DODO_PAYMENTS_WEBHOOK_KEY. Hier ist ein Beispiel mit Next.js:
app/api/webhooks/dodo/route.ts
Unsere Webhook-Implementierung folgt der Spezifikation von Standard Webhooks.

Abzuhörende Ereignisse

Höre in einem Zahlungsablauf für eine einmalige Zahlung mindestens diese Ereignisse ab:
Erfülle die Bestellung immer bei payment.succeeded aus dem Webhook, nicht aufgrund der Browser-Weiterleitung. Die Weiterleitung kann verpasst werden, wenn der Kunde den Tab schließt, während der Webhook bis zur Bestätigung erneut gesendet wird.
Wenn du Produkte mit Lizenzschlüsseln verkaufst, verarbeite auch license_key.created. Die vollständige Liste der Ereignisse, einschließlich Abonnement-, Berechtigungs-, Guthaben-, Wiederherstellungs- und Mahnungsereignissen, findest du im Webhook Event Guide. Ein vollständiges Beispiel mit Next.js und TypeScript findest du im Demo-Repository und in dessen Live-Bereitstellung.

Währung und Rechnungsadresse

Um in einer bestimmten Währung abzurechnen, übergib billing_currency und billing_address.country, wenn du die Checkout-Sitzung erstellst. Wenn du sie weglässt, wählt Adaptive Currency Währung und Land anhand der IP-Adresse des Kunden aus, was möglicherweise nicht der Währung entspricht, in der du abrechnen möchtest. Beträge für Pay What You Want werden in der Basiswährung des Produkts angegeben, die USD, GBP oder EUR sein muss. Um einen festen Betrag in einer anderen Währung zu erfassen, verwende Adaptive Currency, das deinen Basispreis zu aktuellen Wechselkursen umrechnet, oder Localized Pricing, das einen festen Preis pro Währung festlegt. Localized Pricing funktioniert nicht mit Pay What You Want.

Wiederholter Kauf mit einem Klick

Um einem wiederkehrenden Kunden mit einer gespeicherten Zahlungsmethode eine Zahlung zu berechnen, übergib deren payment_method_id zusammen mit confirm: true. payment_method_id wird nur akzeptiert, wenn confirm true ist. Außerdem musst du customer_id des bestehenden Kunden übergeben. Da confirm true ist, musst du außerdem ein vollständiges billing_address übergeben. Die Sitzung belastet die gespeicherte Zahlungsmethode direkt und gibt daher keine checkout_url zurück. Verwende Webhooks, um zu erfahren, ob die Zahlung erfolgreich war.

Verwandte Seiten

Checkout Sessions

Vollständiger Leitfaden mit erweiterten Anpassungsoptionen.

Overlay Checkout

Checkout als modales Overlay auf deiner Seite einbetten.

Inline Checkout

Checkout direkt in das Layout deiner Seite einbetten.

Subscription Integration

Wiederkehrende Abrechnung einrichten.

Webhook Event Guide

Vollständige Liste aller Webhook-Ereignisse.

API Reference

Dokumentation zur Checkout Sessions API.
Zuletzt geändert am 26. September 2026