Skip to main content
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.
O SDK para iOS abre o checkout hospedado do Dodo em 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 Info.plist:
Info.plist
Você também pode adicionar isso pela interface Info → URL Types do Xcode.

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.
É 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

result.status é uma indicação da interface, não uma prova de pagamento. Confirme todos os pagamentos a partir do seu backend, por meio do webhook payment.succeeded / subscription.active.
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.
Conceda acesso depois que um desses mecanismos confirmar o pagamento, nunca apenas com base em result.status.

Personalização da aparência

Personalize o botão de fechar, o estilo de apresentação e o esquema de cores da tela por meio de customization em start(...). Todos os campos são opcionais; omitir customization usa a aparência padrão do SFSafariViewController no iOS.
DismissButtonStyle
Rótulo ou ícone para o botão de fechar: done, close ou cancel.
PresentationStyle
pageSheet é apresentado como um cartão que pode ser fechado deslizando; fullScreen cobre a tela inteira.
Bool
Permite que a barra de ferramentas seja recolhida durante a rolagem. Só fica visível quando presentationStyle é fullScreenpageSheet mantém as barras fixas independentemente desta configuração.
ColorScheme
Força a aparência clara ou escura, independentemente da configuração do sistema do dispositivo: system, light ou dark.

Erros

start lança CheckoutError apenas 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ão checkout.dodopayments.com.
  • invalidReturnUrl (INVALID_RETURN_URL): não é uma URL absoluta válida.
  • alreadyInProgress (ALREADY_IN_PROGRESS): um checkout já está em andamento.
  • platformError (PLATFORM_ERROR): falha inesperada da plataforma.

Sessões abandonadas

Se o aplicativo for encerrado durante o checkout, recupere a sessão na próxima inicialização e concilie-a com o seu backend.

Relacionado

Mobile Integration Guide

O mesmo contrato para Android, React Native e Flutter.

React Native SDK

Encapsula este mesmo núcleo Swift no iOS.
Última modificação em 17 de agosto de 2026