Skip to main content
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

Ajoutez un type d’URL pour votre schéma dans ios/Runner/Info.plist :
ios/Runner/Info.plist
Transmettez ensuite les URL entrantes (par exemple via 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

result.status est un indice d’interface, pas une preuve de paiement. Confirmez chaque paiement depuis votre backend, via le webhook payment.succeeded / subscription.active.
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.
Accordez l’accès après confirmation du paiement par l’un de ces moyens, jamais à partir de result.status seul.

Personnalisation de l’apparence

Personnalisez la barre d’outils, les boutons et la palette de couleurs du navigateur de checkout via customization 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.
Color?
Couleur d’arrière-plan de la barre d’outils.
Color?
Couleur de la barre de navigation.
Color?
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.
bool
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.
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 fullScreenpageSheet 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 une checkout.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.
Dernière modification le 17 août 2026