Este es el paquete oficial de Dodo Payments para Flutter (
dodopayments_checkout
en pub.dev). También existe un paquete independiente desarrollado por la comunidad; consulta
Proyectos de la comunidad.Checkout Sessions API
Crea el checkout_url que este SDK abre desde tu backend.
Mobile Integration Guide
Consulta cómo encaja esto en el flujo de pago móvil completo.
dodopayments_checkout abre el checkout alojado de Dodo en
SFSafariViewController en iOS y en una pestaña personalizada de Chrome en Android: los mismos
núcleos nativos que utilizan los SDK independientes de iOS y
Android. Toda la lógica del checkout reside en
esos núcleos nativos; la capa de Dart pasa la llamada a través de un canal
Pigeon tipado. No contiene ninguna API key ni
realiza llamadas a la API de Dodo Payments.
Requiere Flutter 3.44+ / Dart 3.12+, iOS 16+ y Android minSdk 23.
Instalación
1
Add the Dependency
pubspec.yaml
2
Register a Callback URL Scheme
- iOS
- Android
Añade un tipo URL para tu esquema en Después, reenvía las URL entrantes (por ejemplo, mediante
ios/Runner/Info.plist:ios/Runner/Info.plist
app_links) al SDK, porque
SFSafariViewController no puede detectar su propia URL de retorno:Es seguro reenviar aquí todas las URL.
handleOpenURL solo actúa sobre las URL
que coinciden con tu returnUrl registrado y resuelve false para cualquier
otra URL.Uso
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 interfaz; no lo uses
para conceder acceso. Consulta Verificar el pago más abajo.
String?
Se establece para los checkouts de suscripciones.
List<String>?
Se establece cuando el checkout incluye productos con claves de licencia.
String?
Se establece cuando el checkout captura un correo electrónico.
Map<String, String>
Cada parámetro de consulta de la URL de retorno, literalmente.
Verificar el pago
Webhooks
Dodo Payments llama a tu backend cuando un pago se realiza correctamente o se activa una suscripción.
Get Payment Detail
Consulta
paymentId con tu secret key para comprobar su estado directamente.result.status.
Errores
start lanza CheckoutException únicamente por un uso incorrecto o un fallo de la plataforma.
Un pago cancelado o rechazado siempre es un resultado, nunca una excepción.
invalidCheckoutUrl(INVALID_CHECKOUT_URL): no es una URL de sesióncheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL): no es una URL absoluta válida.alreadyInProgress(ALREADY_IN_PROGRESS): ya hay un checkout en curso.platformError(PLATFORM_ERROR): fallo inesperado de la plataforma.
Sesiones abandonadas
Si la aplicación se cierra durante el checkout, recupera la sesión en el siguiente inicio y
reconcíliala con tu backend.
Relacionado
Mobile Integration Guide
El mismo contrato para Android, iOS y React Native.
Community Projects
También existe un paquete de Flutter independiente desarrollado por la comunidad.