Este é o SDK oficial de checkout do Dodo Payments para React Native,
@dodopayments/react-native-checkout. Ele abre o checkout hospedado do Dodo em uma visualização de navegador nativa e retorna um resultado tipado. Observação: existe um pacote mais antigo e não relacionado chamado dodopayments-react-native-sdk (sem escopo), com uma API completamente diferente. Esta página documenta apenas o pacote oficial com escopo atual.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 pagamento móvel.
SFSafariViewController no iOS e uma Chrome Custom Tab no Android, não armazena nenhuma chave de API 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.
Instalação
1
Install the Package
- Android
- iOS
- Expo
O pacote é vinculado automaticamente e obtém Não é necessária nenhuma configuração adicional; a dependência nativa é resolvida automaticamente.
com.dodopayments.api:checkout-android do Maven.2
Register a Callback URL Scheme
Seu app deve registrar um esquema de URL para receber a URL de retorno do checkout.
- Android (Gradle)
- iOS (Info.plist)
- Expo (both platforms)
Em Substitua
android/app/build.gradle:android/app/build.gradle
"myapp" pelo esquema do seu app.Uso
Encaminhando a URL de retorno
O listenerLinking é necessário para o tratamento da URL de retorno no iOS. No Android, handleOpenURL é um no-op que resolve false, porque o core do Android trata o redirecionamento nativamente. É seguro registrar o listener incondicionalmente em ambas as plataformas.
O que o resultado significa
CheckoutStatus
obrigatório
Um entre
succeeded, failed, cancelled, pending, expired.string
Definido quando a URL de retorno incluía um. Exiba-o na UI; 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.
Record<string, string>
Todos os parâmetros de consulta da URL de retorno, sem alterações.
Verificar o pagamento
Webhooks
Dodo Payments chama seu backend quando um pagamento é bem-sucedido ou uma assinatura é ativada.
Get Payment Detail
Consulte
paymentId com sua secret key para verificar o status diretamente.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 decustomization em start(...). 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.
Android — Custom Tab
Android — Custom Tab
Color
Cor de fundo da barra de ferramentas.
Cor da barra de navegação.
Cor do divisor acima da barra de navegação.
'default' | 'back'
default exibe o ícone de sistema “X”; back desenha uma seta de voltar.'start' | 'end'
Em qual lado da barra de ferramentas o botão de fechar aparece.
Exibe o ícone de compartilhamento da barra de ferramentas.
boolean
Exibe o título da página abaixo da URL na barra de ferramentas.
boolean
Permite que a barra de ferramentas se oculte automaticamente conforme a página é rolada.
boolean
Exibe “Adicionar esta página aos favoritos” no menu de opções.
boolean
Exibe “Baixar página” no menu de opções.
'system' | 'light' | 'dark'
Força a aparência clara ou escura, independentemente da configuração do sistema do dispositivo.
iOS — SFSafariViewController
iOS — SFSafariViewController
'done' | 'close' | 'cancel'
Rótulo ou ícone do botão de dispensar.
'pageSheet' | 'fullScreen'
pageSheet é apresentado como um cartão que pode ser dispensado deslizando; fullScreen cobre a tela inteira.boolean
Permite que a barra de ferramentas seja recolhida durante a rolagem. Visível somente quando
presentationStyle é fullScreen — pageSheet mantém as barras fixas, independentemente desta configuração.'system' | 'light' | 'dark'
Força a aparência clara ou escura, independentemente da configuração do sistema do dispositivo.
Erros
start rejeita com um CheckoutError somente em caso de uso incorreto ou falha da plataforma. Um pagamento cancelado ou recusado é sempre um resultado, nunca uma exceção.
INVALID_CHECKOUT_URL: não é uma URL de sessãocheckout.dodopayments.com.INVALID_RETURN_URL: não é uma URL absoluta válida.ALREADY_IN_PROGRESS: já há um checkout em execução.PLATFORM_ERROR: falha inesperada da plataforma.
Sessões abandonadas
Se o app ou o bundle JS for encerrado durante o checkout, a promise será perdida, mas a camada nativa manterá a sessão. Recupere-a na próxima montagem e reconcilie-a com seu backend.Relacionados
Mobile Integration Guide
O mesmo contrato para Android, iOS e Flutter.
Expo Boilerplate
Um exemplo completo do Expo com integração de checkout.