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
- iOS
- Android
Adicione um tipo de URL para seu esquema em Em seguida, encaminhe as URLs recebidas (por exemplo, usando
ios/Runner/Info.plist:ios/Runner/Info.plist
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
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.result.status.
Erros
start lança CheckoutException 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ãocheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL): não é uma URL absoluta válida.alreadyInProgress(ALREADY_IN_PROGRESS): já existe um checkout 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
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 Flutter separado desenvolvido pela comunidade.