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.

Erreurs

DodoCheckout.start lève CheckoutError uniquement en cas de mauvaise utilisation ou de défaillance de la plateforme. Lisez le code depuis CheckoutError.code :
  • INVALID_CHECKOUT_URL : session URL qui n’est pas une checkout.dodopayments.com valide.
  • INVALID_RETURN_URL : URL absolue non valide.
  • ALREADY_IN_PROGRESS : un checkout est déjà en cours.
  • PLATFORM_ERROR : défaillance inattendue de la plateforme, notamment lorsque le schéma de returnUrl ne correspond pas à votre placeholder dodoCallbackScheme.
L’annulation par l’utilisateur ou le refus d’un paiement produit 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 depuis 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, recherchez une session abandonnée et réconciliez-la avec votre backend :
Le abandoned.createdAt est un timestamp epoch exprimé en millisecondes.

Voir aussi

Mobile Integration Guide

Bonnes pratiques pour les parcours de checkout mobile

Kotlin SDK

SDK backend pour les opérations côté serveur
Dernière modification le 31 juillet 2026