Skip to main content
Il s’agit du SDK officiel de checkout Android (com.dodopayments.api:checkout-android), pour ouvrir le checkout hébergé de Dodo. Il est distinct du SDK Kotlin backend, qui appelle l’API Dodo Payments depuis votre serveur.

Checkout Sessions API

Créez le checkout_url que ce SDK ouvre

Mobile Integration Guide

Bonnes pratiques pour les parcours de checkout mobile
Le SDK Android ouvre le checkout hébergé de Dodo dans un Chrome Custom Tab à l’aide de androidx.browser.customtabs. Il ne contient aucun code réseau et ne stocke aucune clé API. Vous transmettez un checkoutUrl provenant de la session de checkout de votre backend, et le SDK renvoie un CheckoutResult typé lorsque l’utilisateur termine ou abandonne le parcours. Prérequis : minSdk 23, Kotlin, Java 17.

Installation

1

Add the Dependency

build.gradle.kts
2

Register a Callback URL Scheme

Définissez votre schéma de callback comme placeholder de manifeste Gradle. Le manifeste propre à la bibliothèque déclare déjà le filtre d’intention de l’activité de redirection à l’aide du token ${dodoCallbackScheme}. Cette propriété constitue donc toute la configuration nécessaire : vous n’ajoutez aucun fichier XML au manifeste :
build.gradle.kts
La valeur doit correspondre au schéma dans CheckoutParams.returnUrl (par exemple myapp://checkout/return).
Si vous omettez complètement le placeholder, le build échoue immédiatement avec une erreur de placeholder non résolu, au lieu d’échouer silencieusement au moment du checkout. Si vous le définissez, mais qu’il ne correspond pas au schéma de returnUrl, DodoCheckout.start lève PLATFORM_ERROR avant d’afficher quoi que ce soit.

Utilisation

Le SDK prend en charge deux styles d’appel.

Signification du résultat

Le champ status est un indice pour l’interface utilisateur, et non une preuve de paiement. Vérifiez toujours le paiement sur votre backend à l’aide de webhooks ou du endpoint Get Payment Detail avant d’accorder l’accès.
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 utilisateur, 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 des clés de licence.
String?
Défini lorsque le checkout recueille 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

Écoutez les événements de paiement en temps réel

Get Payment Detail

Interrogez le statut du paiement à la demande
N’accordez l’accès à l’utilisateur qu’après confirmation du paiement par l’un de ces mécanismes. Ne vous fiez pas uniquement à CheckoutResult.status.

Personnalisation de l’apparence

Personnalisez la barre d’outils, les boutons et le schéma de couleurs de l’onglet Custom via customization sur CheckoutParams. Tous les champs sont facultatifs ; si vous omettez customization, l’apparence par défaut de l’onglet Custom d’Android est utilisée.
Int?
Couleur d’arrière-plan de la barre d’outils, sous forme d’entier ARGB Color.
Int?
Couleur de la barre de navigation.
Int?
Couleur du séparateur au-dessus de la barre de navigation.
CloseButtonStyle
DEFAULT 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 : START ou END.
Boolean
Affiche l’icône de partage de la barre d’outils.
Boolean
Affiche le titre de la page sous l’URL dans la barre d’outils.
Boolean
Permet à la barre d’outils de se masquer automatiquement lors du défilement de la page.
Boolean
Affiche « Ajouter cette page aux favoris » dans le menu de débordement.
Boolean
Affiche « Télécharger la page » dans le menu de débordement.
ColorScheme
Force l’apparence claire ou sombre, indépendamment du réglage système de l’appareil : SYSTEM, LIGHT ou DARK.

Erreurs

DodoCheckout.start lève CheckoutError uniquement en cas de mauvaise utilisation ou d’échec de la plateforme. Lisez le code depuis CheckoutError.code :
  • INVALID_CHECKOUT_URL : il ne s’agit pas d’une URL de session checkout.dodopayments.com.
  • INVALID_RETURN_URL : il ne s’agit pas d’une URL absolue valide.
  • ALREADY_IN_PROGRESS : un checkout est déjà en cours.
  • PLATFORM_ERROR : échec inattendu de la plateforme, notamment un returnUrl dont le schéma ne correspond pas à votre espace réservé dodoCallbackScheme.
L’annulation par l’utilisateur ou le refus d’un paiement renvoie toujours un résultat (CANCELLED ou FAILED), et ne lève jamais d’erreur. Avec le style launcher, les erreurs de validation sont propagées en dehors de launcher.launch(...).

Sessions abandonnées

Si l’application est arrêtée ou si l’utilisateur l’arrête de force pendant le checkout, le SDK stocke la session localement. Au prochain lancement de l’application, vérifiez l’existence d’une session abandonnée et réconciliez-la avec votre backend :
abandoned.createdAt est un timestamp epoch exprimé en millisecondes.

Articles associés

Mobile Integration Guide

Bonnes pratiques pour les parcours de checkout mobiles

Kotlin SDK

SDK backend pour les opérations côté serveur
Dernière modification le 17 août 2026