Skip to main content
Dies ist das offizielle Dodo Payments Flutter-Paket (dodopayments_checkout auf pub.dev). Es gibt außerdem ein separates, von der Community entwickeltes Paket; siehe Community-Projekte.

Checkout Sessions API

Erstelle die checkout_url, die dieses SDK öffnet, in deinem Backend.

Mobile Integration Guide

Erfahre, wie dies in den vollständigen mobilen Zahlungsablauf passt.
dodopayments_checkout öffnet den gehosteten Checkout von Dodo in SFSafariViewController unter iOS und einem Chrome Custom Tab unter Android – dieselben nativen Kernkomponenten, die auch von den eigenständigen iOS- und Android-SDKs verwendet werden. Die gesamte Checkout-Logik befindet sich in diesen nativen Kernkomponenten; die Dart-Schicht leitet den Aufruf über einen typisierten Pigeon-Kanal weiter. Sie enthält keinen API-Schlüssel und ruft niemals die Dodo Payments API auf. Erfordert Flutter 3.44+ / Dart 3.12+, iOS 16+ und Android minSdk 23.

Installation

1

Add the Dependency

pubspec.yaml
2

Register a Callback URL Scheme

Füge in ios/Runner/Info.plist einen URL-Typ für dein Schema hinzu:
ios/Runner/Info.plist
Leite eingehende URLs anschließend (z. B. über app_links) an das SDK weiter, da SFSafariViewController seine eigene Rückgabe-URL nicht abfangen kann:
Es ist sicher, hier jede URL weiterzuleiten. handleOpenURL reagiert nur auf URLs, die zu deinem registrierten returnUrl passen, und löst für alles andere false auf.

Verwendung

Bedeutung des Ergebnisses

result.status ist ein UI-Hinweis und kein Zahlungsnachweis. Bestätige jede Zahlung über dein Backend mithilfe des payment.succeeded-/subscription.active- Webhooks.
CheckoutStatus
erforderlich
Einer aus succeeded, failed, cancelled, pending, expired.
String?
Wird gesetzt, wenn die Rückgabe-URL einen solchen Wert enthielt. Zeige ihn in der UI an, verwende ihn jedoch nicht, um Zugriff zu gewähren. Siehe unten unter „Zahlung überprüfen“.
String?
Wird für Abonnement-Checkouts gesetzt.
List<String>?
Wird gesetzt, wenn der Checkout Produkte mit Lizenzschlüsseln enthält.
String?
Wird gesetzt, wenn der Checkout eine E-Mail-Adresse erfasst.
Map<String, String>
Jeder Query-Parameter aus der Rückgabe-URL, unverändert.

Zahlung überprüfen

Webhooks

Dodo Payments ruft dein Backend auf, wenn eine Zahlung erfolgreich ist oder ein Abonnement aktiviert wird.

Get Payment Detail

Rufe paymentId mit deinem geheimen Schlüssel ab, um den Status direkt zu überprüfen.
Gewähre Zugriff erst, nachdem eine dieser Methoden die Zahlung bestätigt hat, niemals allein aufgrund von result.status.

Anpassung der Darstellung

Passe die Symbolleiste, Schaltflächen und das Farbschema des Checkout-Browsers über customization auf CheckoutParams an. Die Optionen sind nach Plattform gruppiert, da Androids Custom Tab und iOS’ SFSafariViewController unterschiedliche native Steuerelemente bereitstellen. Alle Felder sind optional. Wenn customization nicht angegeben wird, verwendet jede Plattform ihre Standarddarstellung.
Color?
Hintergrundfarbe der Symbolleiste.
Color?
Farbe der Navigationsleiste.
Color?
Farbe der Trennlinie über der Navigationsleiste.
CloseButtonStyle
standard zeigt das Systemsymbol „X“ an; back zeichnet stattdessen einen Zurück-Pfeil.
CloseButtonPosition
Auf welcher Seite der Symbolleiste die Schaltfläche zum Schließen angezeigt wird.
bool
Zeigt das Teilen-Symbol der Symbolleiste an.
bool
Zeigt den Seitentitel unter der URL in der Symbolleiste an.
bool
Ermöglicht das automatische Ausblenden der Symbolleiste beim Scrollen der Seite.
bool
Zeigt „Diese Seite als Lesezeichen speichern“ im Überlaufmenü an.
bool
Zeigt „Seite herunterladen“ im Überlaufmenü an.
BrowserColorScheme
Erzwingt eine helle oder dunkle Darstellung unabhängig von der Systemeinstellung des Geräts.
DismissButtonStyle
Bezeichnung oder Symbol für die Schaltfläche zum Verwerfen.
PresentationStyle
pageSheet wird als Karte mit Wischgeste zum Verwerfen dargestellt; fullScreen nimmt den gesamten Bildschirm ein.
bool
Ermöglicht das Einklappen der Symbolleiste beim Scrollen. Nur sichtbar, wenn presentationStyle auf fullScreen gesetzt ist — pageSheet hält die Leisten unabhängig von dieser Einstellung fixiert.
BrowserColorScheme
Erzwingt eine helle oder dunkle Darstellung unabhängig von der Systemeinstellung des Geräts.

Fehler

start löst CheckoutException nur bei Fehlbedienung oder einem Plattformfehler aus. Eine stornierte oder abgelehnte Zahlung führt immer zu einem Ergebnis, niemals zu einer Exception.
  • invalidCheckoutUrl (INVALID_CHECKOUT_URL): keine gültige checkout.dodopayments.com-Sitzungs-URL.
  • invalidReturnUrl (INVALID_RETURN_URL): keine gültige absolute URL.
  • alreadyInProgress (ALREADY_IN_PROGRESS): Ein Checkout läuft bereits.
  • platformError (PLATFORM_ERROR): unerwarteter Plattformfehler.

Abgebrochene Sitzungen

Wenn die App während des Checkouts beendet wird, stelle die Sitzung beim nächsten Start wieder her und stimme sie mit deinem Backend ab.

Verwandte Inhalte

Mobile Integration Guide

Derselbe Vertrag für Android, iOS und React Native.

Community Projects

Außerdem ist ein separates, von der Community entwickeltes Flutter-Paket verfügbar.
Zuletzt geändert am 17. August 2026