Skip to main content
Este é o pacote oficial do Dodo Payments para Flutter (dodopayments_checkout no pub.dev). Também existe um pacote separado desenvolvido pela comunidade; consulte Projetos da comunidade.

Checkout Sessions API

Crie o checkout_url que este SDK abrirá a partir do seu backend.

Mobile Integration Guide

Veja como isso se encaixa no fluxo completo de pagamentos mobile.
dodopayments_checkout abre o checkout hospedado do Dodo em SFSafariViewController no iOS e em uma Chrome Custom Tab no Android — os mesmos núcleos nativos usados pelos SDKs independentes de iOS e Android. Toda a lógica do checkout reside nesses núcleos nativos; a camada Dart encaminha a chamada por meio de um canal Pigeon tipado. Ela não armazena nenhuma chave de API e nunca chama a API do Dodo Payments. Requer Flutter 3.44+ / Dart 3.12+, iOS 16+ e Android minSdk 23.

Instalação

1

Add the Dependency

pubspec.yaml
2

Register a Callback URL Scheme

Adicione um tipo de URL para seu esquema em ios/Runner/Info.plist:
ios/Runner/Info.plist
Em seguida, encaminhe as URLs recebidas (por exemplo, usando app_links) para o SDK, pois SFSafariViewController não consegue capturar sua própria URL de retorno:
É seguro encaminhar todas as URLs aqui. handleOpenURL só atua em URLs que correspondem ao seu returnUrl registrado e resolve false para qualquer outra URL.

Uso

O que o resultado significa

result.status é uma indicação da interface, não uma prova de pagamento. Confirme cada pagamento no seu backend por meio do webhook payment.succeeded / subscription.active.
CheckoutStatus
obrigatório
Um entre 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.
List<String>?
Definido quando o checkout inclui produtos com chaves de licença.
String?
Definido quando o checkout captura um e-mail.
Map<String, String>
Todos os parâmetros de consulta da URL de retorno, sem alterações.

Verificar o pagamento

Webhooks

O Dodo Payments chama seu backend quando um pagamento é bem-sucedido ou uma assinatura é ativada.

Get Payment Detail

Consulte paymentId com sua chave secreta para verificar diretamente o status.
Conceda acesso depois que uma dessas opções confirmar o pagamento, nunca apenas com base em result.status.

Personalização da aparência

Personalize a barra de ferramentas, os botões e o esquema de cores do navegador de checkout por meio de customization em CheckoutParams. As opções são agrupadas por plataforma porque Custom Tab do Android e SFSafariViewController do iOS expõem diferentes controles nativos. Todos os campos são opcionais; omitir customization usa a aparência padrão de cada plataforma.
Color?
Cor de fundo da barra de ferramentas.
Color?
Cor da barra de navegação.
Color?
Cor do divisor acima da barra de navegação.
CloseButtonStyle
standard exibe o ícone de sistema “X”; back desenha uma seta de voltar.
CloseButtonPosition
Em qual lado da barra de ferramentas o botão de fechar aparece.
bool
Exibe o ícone de compartilhamento da barra de ferramentas.
bool
Exibe o título da página abaixo da URL na barra de ferramentas.
bool
Permite que a barra de ferramentas se oculte automaticamente conforme a página é rolada.
bool
Exibe “Adicionar esta página aos favoritos” no menu de opções.
bool
Exibe “Baixar página” no menu de opções.
BrowserColorScheme
Força a aparência clara ou escura, independentemente da configuração do sistema do dispositivo.
DismissButtonStyle
Rótulo ou ícone do botão de dispensar.
PresentationStyle
pageSheet é apresentado como um cartão que pode ser dispensado deslizando; fullScreen cobre a tela inteira.
bool
Permite que a barra de ferramentas seja recolhida durante a rolagem. Visível somente quando presentationStyle é fullScreenpageSheet mantém as barras fixas, independentemente desta configuração.
BrowserColorScheme
Força a aparência clara ou escura, independentemente da configuração do sistema do dispositivo.

Erros

start lança CheckoutException 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ão de checkout.dodopayments.com.
  • invalidReturnUrl (INVALID_RETURN_URL): não é uma URL absoluta válida.
  • alreadyInProgress (ALREADY_IN_PROGRESS): um checkout já está em execução.
  • 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 reconcilie-a com seu backend.

Relacionados

Mobile Integration Guide

O mesmo contrato para Android, iOS e React Native.

Community Projects

Também existe um pacote separado para Flutter, criado pela comunidade.
Última modificação em 17 de agosto de 2026