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.

Personalización de la apariencia

Personaliza la barra de herramientas, los botones y la combinación de colores de Custom Tab mediante customization en CheckoutParams. Todos los campos son opcionales; omitir customization utiliza la apariencia predeterminada de Custom Tab de Android.
Int?
Color de fondo de la barra de herramientas, como un entero ARGB de Color.
Int?
Color de la barra de navegación.
Int?
Color del separador sobre la barra de navegación.
CloseButtonStyle
DEFAULT muestra el icono de sistema «X»; BACK dibuja una flecha de retroceso en su lugar.
CloseButtonPosition
En qué lado de la barra de herramientas aparece el botón de cierre: START o END.
Boolean
Muestra el icono de compartir de la barra de herramientas.
Boolean
Muestra el título de la página debajo de la URL en la barra de herramientas.
Boolean
Permite que la barra de herramientas se oculte automáticamente al desplazarse por la página.
Boolean
Muestra «Añadir esta página a marcadores» en el menú adicional.
Boolean
Muestra «Descargar página» en el menú adicional.
ColorScheme
Fuerza la apariencia clara u oscura independientemente de la configuración del sistema del dispositivo: SYSTEM, LIGHT o DARK.

Errores

DodoCheckout.start lanza CheckoutError solo 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 de 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 marcador de posición dodoCallbackScheme.
La cancelación por parte del usuario o un pago rechazado siempre son 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 aplicación se cierra o el usuario la detiene por la fuerza durante el checkout, el SDK almacena la sesión localmente. En el siguiente inicio de la aplicación, comprueba si hay una sesión abandonada y concíliala con tu backend:
abandoned.createdAt es una marca de tiempo de época en milisegundos.

Relacionado

Mobile Integration Guide

Prácticas recomendadas para flujos de checkout móviles

Kotlin SDK

SDK de backend para operaciones del lado del servidor
Última modificación el 17 de agosto de 2026