Quick Start
Get your mobile payment integration running in 4 simple steps
Platform Examples
Ejemplos de código completos para Android, iOS, React Native y Flutter
Dodo Payments ofrece un SDK oficial de checkout para Android, iOS, React Native,
y Flutter. Cada uno encapsula el patrón documentado a continuación (abrir la URL
de checkout, capturar el retorno, analizar el resultado) detrás de una única llamada
tipada
start(...), con recuperación de sesiones abandonadas integrada. Utiliza un WebView manual solo
si ninguno se adapta a tu stack.Requisitos previos
Antes de integrar Dodo Payments en tu aplicación móvil, asegúrate de tener:- Cuenta de Dodo Payments: Cuenta de merchant activa con acceso a la API
- Credenciales de API: Clave de API y clave secreta de webhook de tu dashboard
- Proyecto de aplicación móvil: Aplicación para Android, iOS, React Native o Flutter
- Servidor backend: Para gestionar de forma segura la creación de sesiones de checkout
Flujo de integración
La integración móvil sigue un proceso seguro de 4 pasos en el que tu backend gestiona las llamadas a la API y tu aplicación móvil gestiona la experiencia del usuario.1
Backend: Create Checkout Session
Checkout Session API Docs
Aprende a crear una sesión de checkout en tu backend usando Node.js, Python y más. Consulta ejemplos completos y referencias de parámetros en la documentación específica de Checkout Sessions API.
Seguridad: Las sesiones de checkout deben crearse en tu servidor backend, nunca en la aplicación móvil. Esto protege tus claves de API y garantiza una validación adecuada.
2
Mobile: Get Checkout URL
Tu aplicación móvil llama a tu backend para obtener la URL de checkout. Autentica
esta solicitud con el token de sesión propio del usuario que ha iniciado sesión.
- iOS (Swift)
- Android (Kotlin)
- React Native (JavaScript)
- Flutter (Dart)
Seguridad: Las aplicaciones móviles solo se comunican con tu backend, nunca directamente con Dodo Payments API.
3
Mobile: Open Checkout in Browser
Abre la URL de checkout en un navegador seguro integrado en la aplicación para procesar el pago.
También puedes omitir por completo la configuración manual con el SDK oficial de checkout para tu
plataforma.
Pick your mobile SDK
Pasos de instalación e instrucciones de configuración para Android, iOS, React Native y Flutter.
4
Backend: Handle Payment Completion
Procesa la finalización del pago mediante webhooks y URL de redirección para confirmar el estado del pago.
Elige tu SDK
Todos los SDK móviles exponen el mismo contrato: una llamadastart(...) abre el
checkout alojado de Dodo en la superficie de navegador nativa de la plataforma y devuelve un
CheckoutResult tipado cuyo status es succeeded, failed, cancelled,
pending o expired. Ninguno almacena una clave de API ni llama a Dodo
Payments API, y los cuatro admiten la recuperación de sesiones abandonadas.
Android
com.dodopayments.api:checkout-android abre una pestaña personalizada de Chrome. Requiere minSdk 23.iOS
dodopayments-mobile-sdk-ios abre SFSafariViewController. Requiere iOS 16 o posterior.React Native
@dodopayments/react-native-checkout, un Turbo Module sobre ambos núcleos nativos. Requiere React Native 0.76 o posterior.Flutter
dodopayments_checkout, un canal Pigeon sobre ambos núcleos nativos. Requiere Flutter 3.44 o posterior.Registrar un esquema de URL de callback
Los cuatro SDK devuelven el control a tu aplicación mediante un esquema de URL personalizado que eliges, por ejemplomyapp://checkout/return. Regístralo una vez por
plataforma:
- Android
- iOS
- Expo
android/app/build.gradle
¿Prefieres crearlo tú mismo? Abre
checkout_url en un WebView e intercepta
la navegación hacia tu return_url; después, lee los parámetros de consulta
status y payment_id. Los SDK anteriores hacen esto por ti en la superficie de
navegador real de la plataforma, por eso Apple Pay y Google Pay siguen funcionando.Prácticas recomendadas
- Seguridad: Nunca incluyas una clave de API en tu aplicación. Crea sesiones de checkout en tu backend y pasa únicamente el
checkout_urlresultante al cliente. - Autoridad: Trata
CheckoutResult.statuscomo una indicación de la interfaz. Concede acceso solo después de que tu backend confirme el pago. - Experiencia del usuario: Muestra un estado de carga mientras tu backend crea la sesión y gestiona
cancelledcomo un resultado normal, no como un error. - Pruebas: Utiliza el modo de prueba y tarjetas de prueba, y verifica el recorrido de ida y vuelta de la URL de retorno en un dispositivo real y también en un simulador.
Solución de problemas
Problemas comunes
- El callback nunca llega: El esquema de
returnUrldebe coincidir con el que registraste. En Android es el marcador de posición del manifestdodoCallbackScheme; en iOS y React Native es el tipo de URLInfo.plist. - El checkout vuelve al navegador en lugar de a tu aplicación (iOS): No has reenviado la URL entrante. Llama a
DodoCheckout.handleOpenURL(url)desde.onOpenURL,scene(_:openURLContexts:)o un listener de React NativeLinking. PLATFORM_ERRORen Android: Lo más habitual es que haya una discrepancia en el esquema. También puede aparecer si tuMainActivityestableceandroid:taskAffinity=""(el valor predeterminado estándar deflutter create), lo que puede hacer que algunos builds de OEM pierdan el checkout en curso.ALREADY_IN_PROGRESS: Hay un checkout todavía abierto. Espera a que finalice o descarta el anterior antes de iniciar otro.- El build falla con un marcador de posición sin resolver: Añadiste el SDK de Android, pero nunca estableciste
manifestPlaceholders["dodoCallbackScheme"]. - El pago se realizó correctamente, pero no se concedió acceso: Es lo esperado si utilizas el resultado móvil como fuente de verdad. Concede acceso desde el webhook
payment.succeeded/subscription.active.
Recursos adicionales
- Guía de integración de pagos
- Documentación de webhooks
- Proceso de pruebas
- Preguntas frecuentes técnicas
Para preguntas o asistencia, contacta con support@dodopayments.com.