Este es el SDK oficial de checkout de Dodo Payments para iOS y Swift. Abre el checkout alojado de Dodo en una vista de navegador nativa y devuelve un resultado tipado.
Checkout Sessions API
Crea checkout_url desde tu backend, que este SDK abrirá.
Mobile Integration Guide
Consulta cómo encaja esto en el flujo completo de pagos móviles.
SFSafariViewController, no almacena ninguna API key y nunca llama directamente a la API de Dodo. Toda la lógica del checkout se ejecuta en el navegador; el SDK simplemente gestiona el ciclo de vida de la vista y captura la URL de retorno.
Requiere iOS 16+ y Swift 6.
Instalación
1
Add the Package
En Xcode, ve a File → Add Package Dependencies e introduce:Selecciona la versión 1.0.0 o posterior.Como alternativa, añádelo a tu
Package.swift:Package.swift
2
Register a Callback URL Scheme
Tu app debe registrar un esquema de URL para recibir la URL de retorno del checkout. Añade esto a tu También puedes añadirlo mediante la interfaz Info → URL Types de Xcode.
Info.plist:Info.plist
Uso
Reenvío de la URL de retorno
SFSafariViewController no tiene una forma dentro del proceso de capturar su propia URL de retorno. Tu app debe reenviar las URL entrantes al SDK.
- SwiftUI
- SceneDelegate
Es seguro reenviar aquí todas las URL.
handleOpenURL solo actúa sobre las URL que coinciden con tu returnUrl registrado y devuelve false para cualquier otra.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, pero no lo uses para conceder acceso. Consulta Verificar el pago más adelante.
String?
Se establece para los checkouts de suscripciones.
[String]?
Se establece cuando el checkout incluye productos con license key.
String?
Se establece cuando el checkout captura un correo electrónico.
[String: String]
Todos los parámetros 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 una suscripción se activa.
Get Payment Detail
Consulta
paymentId con tu secret key para comprobar su estado directamente.result.status.
Personalización de la apariencia
Personaliza el botón de cierre de la hoja, el estilo de presentación y la combinación de colores mediantecustomization en start(...). Todos los campos son opcionales; omitir
customization utiliza la apariencia predeterminada de SFSafariViewController en iOS.
DismissButtonStyle
Etiqueta o icono para el botón de cierre:
done, close o cancel.PresentationStyle
pageSheet se muestra como una tarjeta que se puede cerrar deslizando; fullScreen cubre toda la pantalla.Bool
Permite que la barra de herramientas se contraiga al desplazarse. Solo es visible cuando
presentationStyle es fullScreen; pageSheet mantiene las barras fijadas independientemente de esta configuración.ColorScheme
Fuerza la apariencia clara u oscura independientemente de la configuración del sistema del dispositivo:
system, light o dark.Errores
start lanza CheckoutError solo 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 decheckout.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 concíliala con tu backend.
Relacionado
Mobile Integration Guide
El mismo contrato para Android, React Native y Flutter.
React Native SDK
Encapsula este mismo núcleo de Swift en iOS.