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 SDKMobile Integration Guide
Mejores prácticas para flujos de checkout móvil
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 El valor debe coincidir con el esquema de
${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
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.- Launcher (Recommended)
- Suspend Function
Registra el contrato con
registerForActivityResult y, después, ejecútalo:Qué significa el resultado
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
CheckoutResult.status.
Personalización de la apariencia
Personaliza la barra de herramientas, los botones y la combinación de colores de Custom Tab mediantecustomization 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.Color de la barra de navegación.
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.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 decheckout.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 unreturnUrlcuyo esquema no coincide con tu marcador de posicióndodoCallbackScheme.
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