Optional para campos que podem estar ausentes, Stream para iterar sobre resultados e CompletableFuture para chamadas assíncronas.
Instalação
Maven
Adicione a dependência ao seupom.xml:
pom.xml
Gradle
Adicione a dependência ao seubuild.gradle.kts:
build.gradle.kts
O SDK requer Java 8 ou posterior, portanto também funciona no Java 11, 17 e 21.
Início Rápido
Crie um cliente e, em seguida, crie 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 somente no modo de teste.
Recursos principais
Type Safety
Classes tipadas de solicitação e resposta para verificações em tempo de compilação.
Shared Client
Crie um cliente e reutilize-o entre as solicitações: ele mantém a conexão e os pools de threads. Os objetos de solicitação e resposta são imutáveis.
Builder Pattern
Toda classe de solicitação tem um builder, e
toBuilder() cria uma cópia modificada.Async Support
client.async() retorna um cliente cujos métodos retornam CompletableFuture.Configuração
Variáveis de ambiente
fromEnv() lê estas variáveis de ambiente ou as propriedades do sistema correspondentes. As propriedades do sistema têm precedência:
.env
DODO_PAYMENTS_API_KEY ou dodopayments.apiKey. O segredo 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 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 cabeçalhos para client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), onde headers é um com.dodopayments.api.core.http.Headers. Ele verifica a assinatura com sua chave de webhook e retorna o evento analisado ou lança DodoPaymentsWebhookException. Sem cabeçalhos, unwrap não verifica a assinatura. client.webhooks().unsafeUnwrap(rawBody) analisa o corpo sem verificá-lo; portanto, use-o somente para testes. Consulte Webhooks.
Configuração manual
Defina cada opção no builder:RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() como o segundo argumento do método. responseValidation(true) verifica antecipadamente se toda a resposta corresponde aos tipos esperados. Sem essa opção, o SDK lança DodoPaymentsInvalidDataException somente quando você lê uma propriedade com um tipo inesperado.
Modo de teste
Para usar o modo de teste (https://test.dodopayments.com), chame testMode() no builder:
Operações comuns
Os exemplos nesta 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 Optional<String>. 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.
Gerenciar clientes
Crie um cliente com endereço de e-mail, nome e metadados e, em seguida, recupere-o pelo ID:Gerenciar assinaturas
Crie uma assinatura com um link de pagamento e, em seguida, faça a cobrança se for uma assinatura sob demanda.productPrice está na menor unidade monetária, como centavos para USD ou paise para INR. Para cobrar $25.00, passe 2500.Cobrança baseada em uso
Configurar medidores
Crie um medidor que conte eventos e, em seguida, liste seus medidores.autoPager() itera sobre todos os medidores e busca mais páginas conforme necessário:
Ingerir eventos de uso
Envie um evento de uso para um cliente. Os valores dos metadados do evento são objetosJsonValue:
eventId é a chave de idempotência; portanto, atribua um valor exclusivo a cada evento. Um timestamp com mais de 1 hora no passado ou mais de 5 minutos no futuro é rejeitado.
Ingerir eventos em lote
Envie até 1.000 eventos em uma única solicitação. Este exemplo usa as importações do exemplo anterior:Tratamento de erros
O SDK lança exceções não verificadas. Para um status de erro, ele lança uma subclasse deDodoPaymentsServiceException, que contém statusCode(), headers() e body(). Capture as classes específicas que deseja tratar antes da classe base:
UnexpectedStatusCodeException. Falhas de rede lançam DodoPaymentsIoException, e respostas que o SDK não consegue interpretar lançam DodoPaymentsInvalidDataException. Todas essas classes estendem DodoPaymentsException.
Operações assíncronas
Chameasync() no cliente para obter um cliente assíncrono. Seus métodos retornam um CompletableFuture:
DodoPaymentsOkHttpClientAsync.fromEnv().
Integração com Spring Boot
Classe de configuração
Registre um cliente como um bean e escolha o ambiente a partir de uma propriedade:Camada de serviço
Injete o cliente em um serviço:Recursos
GitHub Repository
Código-fonte, versões e a lista completa de métodos.
API Reference
Todos os endpoints, parâmetros e respostas.
Discord Community
Faça perguntas e converse com outros desenvolvedores.
Report Issues
Relate bugs ou solicite recursos.
Suporte
Para obter ajuda com o Java SDK:- Discord: participe do servidor da comunidade para obter ajuda em tempo real.
- E-mail: entre em contato pelo endereço support@dodopayments.com.
- GitHub: abra uma issue no repositório.