Quick Start
Platform Examples
Checkout Customization
Mobile Recipes
start(...)-Aufruf und bietet eine integrierte Wiederherstellung abgebrochener Sitzungen. Verwenden Sie nur dann eine manuelle WebView, wenn keines der SDKs zu Ihrem Stack passt.Voraussetzungen
Bevor Sie Dodo Payments in Ihre mobile App integrieren, stellen Sie sicher, dass Sie über Folgendes verfügen:- Dodo Payments-Konto: Aktives Händlerkonto mit API-Zugriff
- API-Zugangsdaten: API-Schlüssel und Webhook-Secret-Key aus Ihrem Dashboard
- Mobiles App-Projekt: Android-, iOS-, React-Native- oder Flutter-Anwendung
- Backend-Server: Zur sicheren Erstellung von Checkout-Sitzungen
Integrationsablauf
Die mobile Integration folgt einem sicheren Prozess in 4 Schritten, bei dem Ihr Backend die API-Aufrufe verarbeitet und Ihre mobile App die Benutzererfahrung steuert.status ist lediglich ein UI-Hinweis darauf, was dem Benutzer angezeigt werden soll. Gewähren Sie Zugriff immer über den payment.succeeded / subscription.active Webhook in Ihrem Backend – niemals allein auf Grundlage des mobilen Ergebnisses.Backend: Create Checkout Session
Checkout Session API Docs
Mobile: Get Checkout URL
- iOS (Swift)
- Android (Kotlin)
- React Native (JavaScript)
- Flutter (Dart)
Mobile: Open Checkout in Browser
Pick your mobile SDK
Backend: Handle Payment Completion
SDK auswählen
Jedes mobile SDK stellt denselben Vertrag bereit: Einstart(...)-Aufruf öffnet den gehosteten Checkout von Dodo im nativen Browser der Plattform und gibt ein typisiertes CheckoutResult zurück, dessen status succeeded, failed, cancelled, pending oder expired ist. Keines davon enthält einen API-Schlüssel oder ruft die Dodo Payments API auf; alle vier unterstützen die Wiederherstellung abgebrochener Sitzungen.
Android
com.dodopayments.api:checkout-android öffnet einen Chrome Custom Tab. Erfordert minSdk 23.iOS
dodopayments-mobile-sdk-ios öffnet SFSafariViewController. Erfordert iOS 16+.React Native
@dodopayments/react-native-checkout, ein Turbo Module über beide nativen Kerne. Erfordert React Native 0.76+.Flutter
dodopayments_checkout, ein Pigeon-Kanal über beide nativen Kerne. Erfordert Flutter 3.44+.Callback-URL-Schema registrieren
Alle vier SDKs übergeben die Kontrolle über ein benutzerdefiniertes URL-Schema an Ihre App, das Sie selbst auswählen, zum Beispielmyapp://checkout/return. Registrieren Sie es einmal pro Plattform:
- Android
- iOS
- Expo
checkout_url im Systembrowser der Plattform (Android Custom Tabs / iOS SFSafariViewController), fangen Sie die Navigation zu return_url ab und lesen Sie anschließend die Query-Parameter status und payment_id aus. Die oben genannten SDKs erledigen dies für Sie.Darstellung anpassen
Jedes SDK akzeptiert einen optionalencustomization-Parameter für start(...) / CheckoutParams, der Darstellung und Verhalten der nativen Browseroberfläche steuert – Symbolleiste, Schaltflächen und Präsentation. Dies ist vom eigenen Theme der Checkout-Seite getrennt, das Sie serverseitig über customization.theme_config in der Checkout-Sitzung konfigurieren.
Die Optionen sind nach Plattform gruppiert, da Android Custom Tab und iOS SFSafariViewController unterschiedliche native Steuerelemente bereitstellen. Alle Felder sind optional; wenn customization vollständig weggelassen wird, verwendet jede Plattform ihre Standarddarstellung.
Android - Custom Tab
Android - Custom Tab
default zeigt das systemeigene „X“-Symbol an; back zeichnet stattdessen einen Zurück-Pfeil.iOS - SFSafariViewController
iOS - SFSafariViewController
pageSheet wird als Karte mit „Zum Schließen wischen“ angezeigt; fullScreen nimmt den gesamten Bildschirm ein.presentationStyle fullScreen ist – pageSheet hält die Leisten unabhängig von dieser Einstellung fixiert.- React Native
- Flutter
- Android (Kotlin)
- iOS (Swift)
Checkout-Seite anpassen
Der Abschnitt Darstellung anpassen oben steuert die native Browseroberfläche – Symbolleiste, Schaltflächen und Farbschema. Die Checkout-Seite selbst – die angezeigten Felder, das Theme und die verfügbaren Zahlungsmethoden – wird serverseitig bei der Erstellung der Checkout-Sitzung konfiguriert. Diese Parameter haben den größten Einfluss auf die mobile Conversion. Die folgenden Parameter befinden sich an drei verschiedenen Stellen der Checkout-Sitzungsanfrage – in der Spalte Ziel sehen Sie, zu welchem Objekt der jeweilige Parameter gehört. Dies falsch zu konfigurieren ist der häufigste Fehler: Ein Parameter im falschen Objekt wird stillschweigend ignoriert.
show_order_details: false moves the contact and payment fields above the fold, instead of behind the order summary.
minimal_address: true, um nur eine Postleitzahl statt der vollständigen Felder für Straße, Stadt und Bundesland zu erfassen:

minimal_address: true reduces the billing address to a single postcode field.
theme: "system", damit der Checkout die helle oder dunkle Darstellung des Geräts übernimmt:

With theme: system, the checkout follows the device's light or dark appearance automatically.
Full checkout session parameter reference
Für Mobilgeräte optimierte Rezepte
Jedes der folgenden Rezepte ist ein vollständiger Request-Body für eine Checkout-Sitzung. Kopieren Sie das passende Rezept, ersetzen Sie die Produkt-ID und übergeben Sie es an den Endpoint Ihres Backends zur Sitzungserstellung.Minimal Mobile Checkout - fastest path to payment
Minimal Mobile Checkout - fastest path to payment
- Node.js SDK
- Python SDK
One-Click Returning Customer - saved card, instant confirmation
One-Click Returning Customer - saved card, instant confirmation
confirm: true, um das Checkout-Formular vollständig zu überspringen.- Node.js SDK
- Python SDK
status in der Deep-Link-Rückgabe ist lediglich ein UI-Hinweis. Bestätigen Sie den Zugriff, indem Sie den payment.succeeded-Webhook in Ihrem Backend empfangen.Subscription with Free Trial - trial before first charge
Subscription with Free Trial - trial before first charge
- Node.js SDK
- Python SDK
subscription.active-Webhook empfängt – nicht wenn das mobile SDK zurückkehrt. Den vollständigen Webhook-Ablauf finden Sie im Leitfaden zur Abonnementintegration.On-Demand Mandate - save a card for future variable charges
On-Demand Mandate - save a card for future variable charges
- Node.js SDK
- Python SDK
Abonnementabläufe auf Mobilgeräten
Abonnements werden über denselben Checkout-Sitzungsablauf wie einmalige Zahlungen erstellt – das mobile SDK öffnet den gehosteten Checkout, der Kunde schließt das Abonnement ab und Ihre App verarbeitet die Deep-Link-Rückgabe. Der Lebenszyklus des Abonnements wird anschließend vollständig im Backend verwaltet.Reguläre wiederkehrende Abonnements
Für Abrechnungen in festen Intervallen (monatlich, jährlich) erstellen Sie eine Checkout-Sitzung mit einem Abonnementprodukt und einem Deep-Linkreturn_url. Ihr Backend empfängt subscription.active, sobald das Abonnement bestätigt wurde.
On-Demand-Abonnements
Mit On-Demand-Abonnements autorisieren Sie die Zahlungsmethode eines Kunden einmal und belasten später variable Beträge – ideal für Wallet-Aufladungen, Pay-as-you-go und alle Szenarien, in denen der Zahlungsbetrag im Voraus nicht bekannt ist. Den vollständigen Request-Body finden Sie im oben genannten Rezept On-Demand-Mandat. Wichtige mobile Aspekte:- Setzen Sie
show_on_demand_tag: false, damit die Checkout-Seite keine Begriffe wie „subscription“ oder „on-demand“ anzeigt. Bei Anwendungsfällen zur Kartentokenisierung erwarten Kunden keine Abonnementterminologie. - Nachdem das Mandat autorisiert wurde, empfängt Ihr Backend
subscription.active. Speichern Siesubscription_id– Sie verwenden es für alle zukünftigen Abbuchungen.
Abonnement mit kostenloser Testphase
Übergeben Siesubscription_data.trial_period_days in der Checkout-Sitzung, um vor dem ersten Abrechnungszyklus eine Testphase anzubieten. Der Kunde autorisiert seine Zahlungsmethode bei der Anmeldung zur Testphase; die erste Abbuchung erfolgt automatisch nach deren Ende. Den vollständigen Request-Body finden Sie im oben genannten Rezept Abonnement mit kostenloser Testphase.
Upgrades und Downgrades
Planänderungen werden über die API in Ihrem Backend vorgenommen, nicht über eine neue Checkout-Sitzung. Dodo Payments berechnet die anteilige Abrechnung automatisch. Um Kunden eine Self-Service-Option zu bieten, betten Sie das Customer Portal ein oder verlinken Sie darauf.Subscription Integration Guide
On-Demand Subscriptions
Upgrade / Downgrade
Customer Portal
Checkout-Abbrüche reduzieren
Bei mobilen Checkouts kommt es häufiger zu Abbrüchen als im Web – kleinere Bildschirme, mehr Ablenkungen und längere Formulare tragen dazu bei. Die schnellsten Verbesserungen erzielen Sie direkt über die Konfiguration der Checkout-Sitzung.Formular optimieren
Kundendaten vorausfüllen
Jedes Feld, das der Kunde nicht selbst eingeben muss, verringert die Wahrscheinlichkeit eines Abbruchs:- Neue Kunden –
customer.emailundcustomer.nameaus Ihrer Authentifizierungssitzung setzen. - Wiederkehrende Kunden –
customer.customer_idsetzen, um alle gespeicherten Daten automatisch vorauszufüllen. - Währung –
billing_currencyundbilling_address.countryimmer gemeinsam übergeben.
Tools zur Wiederherstellung
Abandoned Cart Recovery
Payment Retries
Subscription Dunning
Recovery Overview
Best Practices
- Sicherheit: Liefern Sie niemals einen API-Schlüssel in Ihrer App aus. Erstellen Sie Checkout-Sitzungen in Ihrem Backend und übergeben Sie dem Client nur das resultierende
checkout_url. - Berechtigung: Behandeln Sie
CheckoutResult.statusals UI-Hinweis. Gewähren Sie Zugriff erst, nachdem Ihr Backend die Zahlung bestätigt hat. - Benutzererfahrung: Zeigen Sie einen Ladestatus an, während Ihr Backend die Sitzung erstellt, und behandeln Sie
cancelledals normales Ergebnis, nicht als Fehler. - Tests: Verwenden Sie den Testmodus und Testkarten und überprüfen Sie den Roundtrip der Rückgabe-URL sowohl auf einem echten Gerät als auch in einem Simulator.
- Conversion: Setzen Sie
show_order_details: falseundminimal_address: true, um die besten Abschlussraten beim mobilen Checkout zu erzielen. Zahlungsmethoden oberhalb des sichtbaren Bereichs zu platzieren und Formularfelder zu reduzieren, sind die wirkungsvollsten Änderungen. - Währung: Übergeben Sie
billing_currencyundbilling_address.countryimmer explizit – fehlt einer der beiden, kann Adaptive Currency die Abrechnungswährung anhand der IP-Adresse des Kunden ändern. - On-Demand-Abrechnung: Setzen Sie
show_on_demand_tag: false, wenn Sie On-Demand-Abonnements zur Kartentokenisierung verwenden. Kunden in einem Wallet-Aufladungsablauf erwarten keine Begriffe wie „subscription“. - Wiederherstellung: Aktivieren Sie die Wiederherstellung abgebrochener Warenkörbe in Ihrem Dodo Payments-Dashboard, um Kunden, die den Checkout nicht abschließen, automatisch erneut anzusprechen.
Fehlerbehebung
Häufige Probleme
- Callback trifft nie ein: Das Schema in
returnUrlmuss mit dem registrierten Schema übereinstimmen. Unter Android ist dies derdodoCallbackScheme-Manifest-Platzhalter, unter iOS und React Native derInfo.plist-URL-Typ. - Checkout kehrt unter iOS zum Browser statt zur App zurück: Sie haben die eingehende URL nicht weitergeleitet. Rufen Sie
DodoCheckout.handleOpenURL(url)aus.onOpenURL,scene(_:openURLContexts:)oder einem React-Native-ListenerLinkingauf. PLATFORM_ERRORunter Android: Meist liegt ein nicht übereinstimmendes Schema vor. Der Fehler kann auch auftreten, wennMainActivityandroid:taskAffinity=""setzt (den standardmäßigenflutter create), wodurch einige OEM-Builds den laufenden Checkout verlieren können.ALREADY_IN_PROGRESS: Ein Checkout ist noch geöffnet. Warten Sie den vorherigen Checkout ab oder schließen Sie ihn, bevor Sie einen neuen starten.- Build schlägt mit einem nicht aufgelösten Platzhalter fehl: Sie haben das Android SDK hinzugefügt, aber
manifestPlaceholders["dodoCallbackScheme"]nicht gesetzt. - Zahlung erfolgreich, aber kein Zugriff gewährt: Das ist zu erwarten, wenn Sie sich auf das mobile Ergebnis stützen. Gewähren Sie Zugriff stattdessen über den
payment.succeeded/subscription.activeWebhook. - Apple Pay / Google Pay werden mobil nicht angezeigt: Der Checkout wird in einer eingebetteten WebView (
WKWebView/ AndroidWebView) geladen, die Wallets unterdrückt und 3-D Secure beeinträchtigen kann. Öffnen Sie ihn stattdessen mit dem SDK oder im Systembrowser (Custom Tabs /SFSafariViewController).
Zusätzliche Ressourcen
- Leitfaden zur Zahlungsintegration
- Webhook-Dokumentation
- Testprozess
- Technische FAQs
- Anpassung von Checkout-Sitzungen
- On-Demand-Abonnements
- Upgrade/Downgrade von Abonnements
- Wiederherstellung abgebrochener Warenkörbe
- Customer Portal
