Skip to main content
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

Añade un tipo URL para tu esquema en ios/Runner/Info.plist:
ios/Runner/Info.plist
Después, reenvía las URL entrantes (por ejemplo, mediante 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

result.status es una indicación de la interfaz, no una prueba de pago. Confirma cada pago desde tu backend mediante el webhook payment.succeeded / subscription.active.
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.
Concede acceso después de que uno de estos confirme el pago; nunca lo hagas basándote únicamente en 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ón checkout.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.
Última modificación el 31 de julio de 2026