Esta página aborda o SDK de checkout para Android,
com.dodopayments.api:checkout-android, que abre o checkout hospedado do Dodo Payments dentro do seu app. Para chamar a API do Dodo Payments a partir do seu servidor, use o SDK Kotlin de backend.Checkout Sessions API
Crie o
checkout_url que este SDK abre.Mobile Integration Guide
Práticas recomendadas para fluxos de checkout mobile.
androidx.browser.customtabs) e retorna um CheckoutResult tipado quando o cliente conclui ou sai do checkout. Seu backend cria a sessão de checkout e envia seu checkout_url para o app. O SDK não contém código de rede nem armazena uma chave de API, portanto nunca chama a API do Dodo Payments.
Requisitos: minSdk 23, Kotlin e Java 17. O SDK depende apenas de androidx.activity, androidx.browser e kotlinx-coroutines-android.
Instalação
1
Add the Dependency
Adicione o SDK do Maven Central ao A personalização da aparência requer a versão 1.1.0 ou posterior.
build.gradle.kts do módulo do seu app:build.gradle.kts
2
Register a Callback URL Scheme
Defina o esquema de callback como um placeholder de manifesto do Gradle. O próprio manifesto do SDK declara o filtro de intenção da atividade de redirecionamento com o placeholder Use o mesmo esquema em
${dodoCallbackScheme}, portanto esta propriedade é a única etapa de configuração. Você não precisa adicionar nenhum XML de manifesto:build.gradle.kts
CheckoutParams.returnUrl, por exemplo myapp://checkout/return, e defina a mesma URL como return_url da sessão de checkout quando o backend criar a sessão. O SDK compara a URL de retorno pelo esquema, host e caminho, e ignora a query string. A URL não precisa carregar uma página real.Se você omitir o placeholder, o build falhará com um erro de placeholder não resolvido. Se o placeholder não corresponder ao esquema de
returnUrl, o SDK lançará PLATFORM_ERROR antes de abrir o checkout.Uso
O SDK oferece duas formas de iniciar o checkout: um activity result launcher e uma função suspend. Ambos retornam o mesmoCheckoutResult.
- Launcher (Recommended)
- Suspend Function
Registre o contrato com
registerForActivityResult e inicie-o:O que o resultado significa
O SDK criaCheckoutResult a partir dos parâmetros de query na URL de retorno.
CheckoutStatus
obrigatório
Um dos cinco valores:
SUCCEEDED: a URL de retorno contémstatus=succeeded(pagamento único) oustatus=active(assinatura).FAILED: o pagamento foi recusado (status=failed).CANCELLED: o cliente fechou a Custom Tab antes de a URL de retorno chegar. O SDK não conhece o resultado, e o pagamento pode ter sido concluído; portanto, não exiba uma tela de falha. Em vez disso, faça a reconciliação da sessão abandonada.PENDING: o pagamento é liquidado posteriormente (status=processingou qualquer valor depayment_status), ou o parâmetrostatusestava ausente ou não era reconhecido. Faça a reconciliação como emCANCELLED.EXPIRED: a sessão de checkout expirou (status=expired).
String?
O parâmetro de query
payment_id, quando a URL de retorno inclui um. Exiba-o na UI, mas não o use para conceder acesso. Consulte Verificar o pagamento.String?
O parâmetro de query
subscription_id. Definido para checkouts de assinatura.List<String>?
O parâmetro de query
license_key. Definido quando o checkout inclui produtos com license key.String?
O parâmetro de query
email. Definido quando o checkout captura um endereço de e-mail.Map<String, String>
Cada parâmetro de query da URL de retorno, literalmente.
Verificar o pagamento
Webhooks
Monitore eventos de pagamento em tempo real.
Get Payment Detail
Consulte o status do pagamento sob demanda.
payment.succeeded ou subscription.active. Não dependa apenas de CheckoutResult.status.
Personalização da aparência
Para alterar a barra de ferramentas, os botões e o esquema de cores da Custom Tab, passe umBrowserCustomization como customization em CheckoutParams. Todos os campos são opcionais e têm como padrão null. Para um campo null, o SDK não define essa opção, então o navegador que hospeda a Custom Tab aplica seu próprio padrão.
Int?
Cor de fundo da barra de ferramentas, como um inteiro ARGB
Color.Cor da barra de navegação, como um inteiro ARGB
Color.Cor do divisor acima da barra de navegação, como um inteiro ARGB
Color.CloseButtonStyle?
DEFAULT exibe o ícone de sistema “X”. BACK exibe uma seta de voltar desenhada pelo SDK.CloseButtonPosition?
O lado da barra de ferramentas onde o botão de fechar aparece:
START ou END.Exibe o ícone de compartilhamento da barra de ferramentas.
false o oculta.Boolean?
Exibe o título da página abaixo da URL na barra de ferramentas.
Boolean?
Oculta automaticamente a barra de ferramentas 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.
ColorScheme?
LIGHT ou DARK força essa aparência independentemente da configuração do sistema do dispositivo. SYSTEM segue a configuração do sistema.checkoutLauncher de Uso:
Erros
DodoCheckout.start lança CheckoutError somente em caso de uso incorreto ou falha da plataforma. Leia o motivo em CheckoutError.code:
INVALID_CHECKOUT_URL:checkoutUrlnão é uma URL de sessão de checkouthttps(caminho iniciado por/session/) emcheckout.dodopayments.comoutest.checkout.dodopayments.com.INVALID_RETURN_URL:returnUrlnão é uma URL absoluta com esquema e host.ALREADY_IN_PROGRESS: outro checkout está em execução. Somente um checkout pode ser executado por vez.PLATFORM_ERROR: uma falha inesperada da plataforma, incluindo um esquemareturnUrlque não corresponde ao seu placeholderdodoCallbackScheme.
CANCELLED ou FAILED), nunca um erro lançado. Com o launcher, os erros de validação são lançados por launcher.launch(...). Uma falha da plataforma após o lançamento não pode ser lançada pelo callback de resultado da activity, portanto o launcher retorna CANCELLED com o código de erro em raw["error"].
Sessões abandonadas
O SDK registra a sessão de checkout quando o checkout começa e limpa o registro somente quando o checkout termina comSUCCEEDED, FAILED ou EXPIRED. O registro permanece quando o app é encerrado durante o checkout e depois de um resultado CANCELLED ou PENDING, pois, nesses casos, o SDK não conhece o resultado. Verifique-o na próxima inicialização do app e depois de cada resultado CANCELLED ou PENDING:
abandoned.sessionId é o ID da sessão de checkout, que começa com cks_. abandoned.createdAt é o horário em que o checkout começou, como um timestamp epoch em milissegundos. Seu backend pode consultar a sessão com Get Checkout Session, que retorna payment_id e payment_status. Até que o pagamento alcance um status final, trate-o como pendente, não como falha.
Relacionado
Mobile Integration Guide
Práticas recomendadas para fluxos de checkout mobile.
Kotlin SDK
SDK de backend para operações no servidor.