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.
Errores
start lanza CheckoutError ú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 decheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL): no es una URL absoluta válida.alreadyInProgress(ALREADY_IN_PROGRESS): ya hay un checkout en ejecución.platformError(PLATFORM_ERROR): fallo inesperado de la plataforma.
Sesiones abandonadas
Si la app se cierra durante el checkout, recupera la sesión en el siguiente inicio y reconciliala 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.