Este é o SDK oficial de checkout do Dodo Payments para iOS em Swift. Ele abre o checkout hospedado do Dodo em uma visualização de navegador nativa e retorna um resultado tipado.
Checkout Sessions API
Crie o checkout_url que este SDK abre a partir do seu backend.
Mobile Integration Guide
Veja como isso se encaixa no fluxo completo de pagamentos móveis.
SFSafariViewController, não armazena nenhuma API key e nunca chama a API do Dodo diretamente. Toda a lógica do checkout é executada no navegador; o SDK simplesmente gerencia o ciclo de vida da visualização e captura a URL de retorno.
Requer iOS 16 ou posterior e Swift 6.
Instalação
1
Add the Package
No Xcode, acesse File → Add Package Dependencies e insira:Selecione a versão 1.0.0 ou posterior.Como alternativa, adicione ao seu
Package.swift:Package.swift
2
Register a Callback URL Scheme
Seu app deve registrar um esquema de URL para receber a URL de retorno do checkout. Adicione isto ao seu Você também pode adicionar isso pela interface Info → URL Types do Xcode.
Info.plist:Info.plist
Uso
Encaminhando a URL de retorno
SFSafariViewController não tem uma forma em processo de capturar sua própria URL de retorno. Seu app deve encaminhar as URLs recebidas para o SDK.
- SwiftUI
- SceneDelegate
É seguro encaminhar todas as URLs aqui.
handleOpenURL só atua em URLs que correspondem ao seu returnUrl registrado e retorna false para qualquer outra URL.O que o resultado significa
CheckoutStatus
obrigatório
Um dos seguintes:
succeeded, failed, cancelled, pending, expired.String?
Definido quando a URL de retorno incluiu um. Exiba-o na interface; não o use para conceder acesso. Consulte Verificar o pagamento abaixo.
String?
Definido para checkouts de assinatura.
[String]?
Definido quando o checkout inclui produtos com chaves de licença.
String?
Definido quando o checkout captura um e-mail.
[String: String]
Todos os parâmetros de consulta da URL de retorno, literalmente.
Verificar o pagamento
Webhooks
O Dodo Payments chama seu backend quando um pagamento é concluído com sucesso ou uma assinatura é ativada.
Get Payment Detail
Consulte
paymentId com sua secret key para verificar o status diretamente.result.status.
Erros
start gera CheckoutError somente em caso de uso incorreto ou falha da plataforma. Um pagamento cancelado ou recusado sempre é um resultado, nunca uma exceção.
invalidCheckoutUrl(INVALID_CHECKOUT_URL): não é uma URL de sessãocheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL): não é uma URL absoluta válida.alreadyInProgress(ALREADY_IN_PROGRESS): já há um checkout em execução.platformError(PLATFORM_ERROR): falha inesperada da plataforma.
Sessões abandonadas
Se o app for encerrado durante o checkout, recupere a sessão na próxima inicialização e reconcilie-a com seu backend.
Relacionado
Mobile Integration Guide
O mesmo contrato para Android, React Native e Flutter.
React Native SDK
Encapsula este mesmo núcleo em Swift no iOS.