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
- iOS
- Android
Füge in Leite eingehende URLs anschließend (z. B. über
ios/Runner/Info.plist einen URL-Typ für dein Schema hinzu:ios/Runner/Info.plist
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
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.result.status.
Anpassung der Darstellung
Passe die Symbolleiste, Schaltflächen und das Farbschema des Checkout-Browsers übercustomization 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.
Android — Custom Tab
Android — Custom Tab
Color?
Hintergrundfarbe der Symbolleiste.
Farbe der Navigationsleiste.
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.
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.
iOS — SFSafariViewController
iOS — SFSafariViewController
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ültigecheckout.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.