Il s’agit du package Flutter officiel de Dodo Payments (
dodopayments_checkout
sur pub.dev). Un package distinct développé par la communauté existe également, consultez
Projets communautaires.Checkout Sessions API
Créez la checkout_url que ce SDK ouvre depuis votre backend.
Mobile Integration Guide
Découvrez comment cela s’intègre au flux de paiement mobile complet.
dodopayments_checkout ouvre le checkout hébergé de Dodo dans
SFSafariViewController sur iOS et dans un Chrome Custom Tab sur Android — les mêmes
cœurs natifs que ceux utilisés par les SDK autonomes iOS et
Android. Toute la logique du checkout réside dans
ces cœurs natifs ; la couche Dart transmet l’appel via un canal typé
Pigeon. Elle ne contient aucune clé API et
n’appelle jamais l’API Dodo Payments.
Nécessite Flutter 3.44+ / Dart 3.12+, iOS 16+ et Android minSdk 23.
Installation
1
Add the Dependency
pubspec.yaml
2
Register a Callback URL Scheme
- iOS
- Android
Ajoutez un type d’URL pour votre schéma dans Transmettez ensuite les URL entrantes (par exemple via
ios/Runner/Info.plist :ios/Runner/Info.plist
app_links) au SDK, car
SFSafariViewController ne peut pas intercepter sa propre URL de retour :Vous pouvez transmettre toutes les URL ici sans risque.
handleOpenURL agit uniquement sur les URL
correspondant à votre returnUrl enregistré et résout false pour toute autre URL.Utilisation
Signification du résultat
CheckoutStatus
requis
L’un des éléments suivants :
succeeded, failed, cancelled, pending, expired.String?
Défini lorsque l’URL de retour en contient un. Affichez-le dans l’interface, mais ne l’utilisez pas
pour accorder l’accès. Consultez la section Vérifier le paiement ci-dessous.
String?
Défini pour les checkouts d’abonnement.
List<String>?
Défini lorsque le checkout inclut des produits avec clé de licence.
String?
Défini lorsque le checkout collecte une adresse e-mail.
Map<String, String>
Chaque paramètre de requête de l’URL de retour, mot pour mot.
Vérifier le paiement
Webhooks
Dodo Payments appelle votre backend lorsqu’un paiement est réussi ou qu’un abonnement est activé.
Get Payment Detail
Recherchez
paymentId avec votre clé secrète pour vérifier directement son statut.result.status seul.
Personnalisation de l’apparence
Personnalisez la barre d’outils, les boutons et la palette de couleurs du navigateur de checkout viacustomization sur CheckoutParams. Les options sont regroupées par plateforme, car
Custom Tab d’Android et SFSafariViewController d’iOS exposent des
contrôles natifs différents. Tous les champs sont facultatifs ; si customization est omis, l’apparence par défaut de chaque
plateforme est utilisée.
Android — Custom Tab
Android — Custom Tab
Color?
Couleur d’arrière-plan de la barre d’outils.
Couleur de la barre de navigation.
Couleur du séparateur au-dessus de la barre de navigation.
CloseButtonStyle
standard affiche l’icône système « X » ; back affiche plutôt une flèche de retour.CloseButtonPosition
Côté de la barre d’outils où apparaît le bouton de fermeture.
Affiche l’icône de partage de la barre d’outils.
bool
Affiche le titre de la page sous l’URL dans la barre d’outils.
bool
Permet à la barre d’outils de se masquer automatiquement lors du défilement de la page.
bool
Affiche « Ajouter cette page aux favoris » dans le menu de débordement.
bool
Affiche « Télécharger la page » dans le menu de débordement.
BrowserColorScheme
Force une apparence claire ou sombre, indépendamment du réglage système de l’appareil.
iOS — SFSafariViewController
iOS — SFSafariViewController
DismissButtonStyle
Libellé ou icône du bouton de fermeture.
PresentationStyle
pageSheet se présente sous forme de carte avec un balayage pour fermer ; fullScreen couvre tout l’écran.bool
Permet à la barre d’outils de se réduire lors du défilement. Visible uniquement lorsque
presentationStyle est fullScreen — pageSheet maintient les barres épinglées, quel que soit ce réglage.BrowserColorScheme
Force une apparence claire ou sombre, indépendamment du réglage système de l’appareil.
Erreurs
start lève CheckoutException uniquement en cas de mauvaise utilisation ou de défaillance de la plateforme.
Un paiement annulé ou refusé produit toujours un résultat, jamais une exception.
invalidCheckoutUrl(INVALID_CHECKOUT_URL) : URL de session qui n’est pas unecheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL) : URL absolue non valide.alreadyInProgress(ALREADY_IN_PROGRESS) : un checkout est déjà en cours.platformError(PLATFORM_ERROR) : défaillance inattendue de la plateforme.
Sessions abandonnées
Si l’application est arrêtée en plein checkout, récupérez la session au prochain lancement et
réconciliez-la avec votre backend.
Contenu associé
Mobile Integration Guide
Le même contrat pour Android, iOS et React Native.
Community Projects
Un package Flutter distinct, développé par la communauté, est également disponible.