Skip to main content
Este es el SDK oficial de checkout para Android (com.dodopayments.api:checkout-android), para abrir el checkout alojado de Dodo. Es distinto del SDK de Kotlin para backend, que llama a la API de Dodo Payments desde tu servidor.

Checkout Sessions API

Crea el checkout_url que abre este SDK

Mobile Integration Guide

Mejores prácticas para flujos de checkout móvil
El SDK de Android abre el checkout alojado de Dodo en una Chrome Custom Tab mediante androidx.browser.customtabs. No contiene código de red ni almacena ninguna API key. Pasas un checkoutUrl de la sesión de checkout de tu backend, y el SDK devuelve un CheckoutResult con tipos cuando el usuario completa o abandona el flujo. Requisitos: minSdk 23, Kotlin, Java 17.

Instalación

1

Add the Dependency

build.gradle.kts
2

Register a Callback URL Scheme

Configura tu esquema de callback como un placeholder del manifiesto de Gradle. El manifiesto propio de la biblioteca ya declara el intent filter de la actividad de redirección mediante el token ${dodoCallbackScheme}, por lo que esta propiedad es todo lo necesario para la configuración: no tienes que añadir XML de manifiesto:
build.gradle.kts
El valor debe coincidir con el esquema de CheckoutParams.returnUrl (por ejemplo, myapp://checkout/return).
Si omites por completo el placeholder, la compilación falla inmediatamente con un error de placeholder no resuelto, en lugar de fallar silenciosamente durante el checkout. Si lo configuras, pero no coincide con el esquema de returnUrl, DodoCheckout.start lanza PLATFORM_ERROR antes de mostrar nada.

Uso

El SDK admite dos estilos de invocación.

Qué significa el resultado

El campo status es una indicación para la UI, no una prueba del pago. Verifica siempre el pago en tu backend mediante webhooks o el endpoint Get Payment Detail antes de conceder acceso.
CheckoutStatus
requerido
Uno de SUCCEEDED, FAILED, CANCELLED, PENDING, EXPIRED.
String?
Se establece cuando la URL de retorno incluía uno. Muéstralo en la UI; no lo uses para conceder acceso. Consulta Verificar el pago a continuación.
String?
Se establece para los checkouts de suscripción.
List<String>?
Se establece cuando el checkout incluye productos con claves de licencia.
String?
Se establece cuando el checkout captura un email.
Map<String, String>
Cada parámetro de consulta de la URL de retorno, literalmente.

Verificar el pago

Webhooks

Escucha eventos de pago en tiempo real

Get Payment Detail

Consulta el estado del pago cuando lo necesites
Concede acceso al usuario solo después de que una de estas opciones confirme el pago. No dependas únicamente de CheckoutResult.status.

Errores

DodoCheckout.start lanza CheckoutError únicamente por un uso incorrecto o un fallo de la plataforma. Lee el código de CheckoutError.code:
  • INVALID_CHECKOUT_URL: no es una URL de sesión checkout.dodopayments.com.
  • INVALID_RETURN_URL: no es una URL absoluta válida.
  • ALREADY_IN_PROGRESS: ya hay un checkout en ejecución.
  • PLATFORM_ERROR: fallo inesperado de la plataforma, incluido un returnUrl cuyo esquema no coincide con tu placeholder dodoCallbackScheme.
La cancelación por parte del usuario o un pago rechazado siempre producen un resultado (CANCELLED o FAILED), nunca un error lanzado. Con el estilo launcher, los errores de validación se lanzan fuera de launcher.launch(...).

Sesiones abandonadas

Si la app se cierra o el usuario la detiene forzosamente durante el checkout, el SDK almacena la sesión localmente. En el siguiente lanzamiento de la app, busca una sesión abandonada y concíliala con tu backend:
El abandoned.createdAt es una marca de tiempo epoch en milisegundos.

Relacionado

Mobile Integration Guide

Mejores prácticas para flujos de checkout móvil

Kotlin SDK

SDK de backend para operaciones del lado del servidor
Última modificación el 31 de julio de 2026