Sequence para iterar pelos resultados e funções suspend para chamadas assíncronas.
Instalação
Gradle (Kotlin DSL)
Adicione a dependência ao seubuild.gradle.kts:
build.gradle.kts
Maven
Adicione a dependência ao seupom.xml:
pom.xml
O SDK requer Java 8 ou posterior. Ele é executado na JVM e no Android e inclui regras keep do ProGuard e do R8.
Início Rápido
Crie um cliente e, em seguida, uma sessão de checkout:fromEnv() se conecta ao modo live, a menos que DODO_PAYMENTS_BASE_URL ou dodopayments.baseUrl indique o contrário. Para usar o modo de teste, consulte Modo de teste. Uma chave de API do modo de teste funciona apenas no modo de teste.
Recursos principais
Coroutines
Os métodos do cliente assíncrono são funções
suspend que você chama a partir de uma corrotina.Null Safety
Campos que podem estar ausentes são tipos anuláveis, não
Optional.Sequences
No cliente síncrono,
autoPager() retorna um Sequence que busca mais páginas conforme você itera. No cliente assíncrono, ele retorna um Flow.Immutable Models
As classes de modelo são imutáveis, e
toBuilder() retorna um builder para uma cópia modificada.Configuração
A partir de variáveis de ambiente
fromEnv() lê suas configurações a partir de variáveis de ambiente ou propriedades do sistema. As propriedades do sistema têm precedência:
DODO_PAYMENTS_API_KEY ou dodopayments.apiKey. O secret de assinatura do webhook vem de DODO_PAYMENTS_WEBHOOK_KEY ou dodopayments.webhookKey, e a URL base vem de DODO_PAYMENTS_BASE_URL ou dodopayments.baseUrl. Crie um único cliente e reutilize-o, pois cada cliente tem seu próprio pool de conexões e pools de threads.
Para verificar um webhook, passe o corpo bruto da solicitação e os headers para client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), em que headers é um com.dodopayments.api.core.http.Headers. Ele verifica a assinatura usando sua chave de webhook e retorna o evento analisado ou lança DodoPaymentsWebhookException. Sem headers, unwrap não verifica a assinatura. client.webhooks().unsafeUnwrap(rawBody) analisa o corpo sem verificá-lo; portanto, use-o apenas para testes. Consulte Webhooks.
Configuração manual
Defina cada opção no builder:Modo de teste
Para usar o modo de teste (https://test.dodopayments.com), chame testMode() no builder:
Timeouts e novas tentativas
Por padrão, o cliente tenta novamente duas vezes e atinge o timeout após 1 minuto. Ele tenta novamente em caso de erros de conexão e respostas com status 408, 409, 429 ou 500 e superiores, usando backoff exponencial. Defina os valores padrão no cliente ou passeRequestOptions para uma única chamada:
Operações comuns
Os exemplos desta seção usam oclient do Início rápido.
Criar uma sessão de checkout
Crie uma sessão de checkout e redirecione o cliente para a URL de checkout retornada:checkoutUrl() retorna um String? anulável. Cada URL de checkout funciona uma vez e expira após 24 horas. Para ver todas as opções de sessão, consulte Sessões de checkout.
Criar um produto
Crie um produto de assinatura mensal com preço de $29.99:price está na menor unidade da moeda. discountBps define o desconto em pontos-base e substitui o campo discount, que foi descontinuado.
Ativar uma chave de licença
Ative uma chave de licença para um dispositivo ou instalação. Se a chave tiver atingido o limite de ativações, a API retornará422 e o SDK lançará UnprocessableEntityException. Uma chave inativa retorna 403 (PermissionDeniedException), e uma chave desconhecida retorna 404 (NotFoundException):
Gerenciar assinaturas
Crie uma assinatura e, em seguida, faça a cobrança se ela for uma assinatura sob demanda.billing requer apenas country, um código de país ISO de duas letras. Use AttachExistingCustomer para associar um cliente existente ou NewCustomer para criar um. charge é usado para assinaturas sob demanda, e productPrice está na menor unidade da moeda.Faturamento baseado em uso
Registrar eventos de uso
Envie um evento de uso para um cliente. Os medidores que monitoram oeventName do evento o agregam:
eventId é a chave de idempotência; portanto, atribua um valor exclusivo a cada evento. Uma solicitação aceita até 1.000 eventos.
Operações assíncronas
Cliente assíncrono
O cliente assíncrono tem os mesmos métodos que o cliente síncrono, mas a maioria deles são funçõessuspend. Chame-as a partir de uma corrotina:
client.async() em um cliente síncrono para obter sua versão assíncrona.
Tratamento de erros
Para um status de erro, o SDK lança uma subclasse deDodoPaymentsServiceException, que contém statusCode(), headers() e body(). As subclasses são BadRequestException (400), UnauthorizedException (401), PermissionDeniedException (403), NotFoundException (404), UnprocessableEntityException (422), RateLimitException (429), InternalServerException (5xx) e UnexpectedStatusCodeException para outros status, como 409:
DodoPaymentsIoException, e respostas que o SDK não consegue interpretar lançam DodoPaymentsInvalidDataException. Todas as exceções do SDK estendem DodoPaymentsException.
Tratamento funcional de erros
UseResult para o tratamento funcional de erros:
Integração com Android
O Kotlin SDK é um SDK de servidor. Ele se autentica com sua chave de API secreta, e qualquer pessoa que tenha seu APK pode extrair uma chave compilada nele; portanto, nunca o use dentro de um app Android. Para receber pagamentos em um app Android:- No seu servidor, crie a sessão de checkout com este SDK (consulte Integração com Ktor) e retorne seu
checkout_url. - No app, busque esse
checkout_urldo seu servidor e abra-o com o Android SDK, que não contém nenhuma chave de API.
Validação da resposta
Por padrão, o SDK lançaDodoPaymentsInvalidDataException somente quando você lê uma propriedade com um tipo inesperado. Para verificar toda a resposta antecipadamente, ative a validação para uma solicitação ou chame validate() em uma resposta:
Recursos avançados
Configuração de proxy
Para enviar solicitações por meio de um proxy, passe umjava.net.Proxy ao builder:
Configuração temporária
withOptions retorna um cliente com configurações modificadas que compartilha as conexões e os pools de threads do cliente original. O cliente original não é alterado:
Integração com Ktor
Crie o cliente uma vez e chame-o a partir de uma rota:Recursos
GitHub Repository
Código-fonte, versões e a lista completa de métodos.
API Reference
Cada endpoint, parâmetro e resposta.
Discord Community
Faça perguntas e converse com outros desenvolvedores.
Report Issues
Relate bugs ou solicite recursos.
Suporte
Para obter ajuda com o Kotlin SDK:- Discord: entre no servidor da comunidade para obter ajuda em tempo real.
- Email: entre em contato pelo endereço support@dodopayments.com.
- GitHub: abra uma issue no repositório.