Skip to main content
El SDK de Java proporciona a las aplicaciones Java acceso tipado a la API REST de Dodo Payments. Usa tipos de Java en todo momento: Optional para campos que pueden faltar, Stream para iterar sobre resultados y CompletableFuture para llamadas asíncronas.

Instalación

Maven

Agrega la dependencia a tu pom.xml:
pom.xml

Gradle

Añade la dependencia a tu build.gradle.kts:
build.gradle.kts
Las versiones del SDK añaden compatibilidad con cambios en la API. Para encontrar la versión más reciente, consulta Maven Central.
El SDK requiere Java 8 o una versión posterior, por lo que también funciona con Java 11, 17 y 21.

Inicio Rápido

Crea un cliente y, a continuación, crea una sesión de checkout:
fromEnv() se conecta al modo live, a menos que DODO_PAYMENTS_BASE_URL o dodopayments.baseUrl indiquen lo contrario. Para usar el modo de prueba, consulta Modo de prueba. Una API key del modo de prueba solo funciona en el modo de prueba.
Guarda las API keys en variables de entorno, propiedades del sistema o un gestor de secretos. Nunca las escribas directamente en el código fuente.

Funciones principales

Type Safety

Clases de solicitudes y respuestas tipadas para realizar comprobaciones en tiempo de compilación.

Shared Client

Crea un solo cliente y reutilízalo en todas las solicitudes: mantiene la conexión y los grupos de hilos. Los objetos de solicitudes y respuestas son inmutables.

Builder Pattern

Cada clase de solicitud tiene un builder, y toBuilder() crea una copia modificada.

Async Support

client.async() devuelve un cliente cuyos métodos retornan CompletableFuture.

Configuración

Variables de entorno

fromEnv() lee estas variables de entorno o las propiedades del sistema correspondientes. Las propiedades del sistema tienen prioridad:
.env
La API key se obtiene de DODO_PAYMENTS_API_KEY o dodopayments.apiKey. El secreto de firma del webhook se obtiene de DODO_PAYMENTS_WEBHOOK_KEY o dodopayments.webhookKey, y la URL base de DODO_PAYMENTS_BASE_URL o dodopayments.baseUrl. Crea un solo cliente y reutilízalo, porque cada cliente tiene su propio grupo de conexiones y sus propios grupos de hilos. Para verificar un webhook, pasa el cuerpo sin procesar de la solicitud y los encabezados a client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), donde headers es un com.dodopayments.api.core.http.Headers. Comprueba la firma con tu clave de webhook y devuelve el evento analizado, o lanza DodoPaymentsWebhookException. Sin encabezados, unwrap no verifica la firma. client.webhooks().unsafeUnwrap(rawBody) analiza el cuerpo sin verificarlo, así que úsalo únicamente para pruebas. Consulta Webhooks.

Configuración manual

Define cada opción en el builder:
De forma predeterminada, el cliente reintenta dos veces y agota el tiempo de espera después de 1 minuto. Reintenta los errores de conexión y las respuestas con estado 408, 409, 429 o 500 y superiores. Para cambiar el tiempo de espera de una llamada, pasa RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() como segundo argumento del método. responseValidation(true) comprueba de antemano que toda la respuesta coincida con los tipos esperados. Sin esta opción, el SDK lanza DodoPaymentsInvalidDataException únicamente cuando lees una propiedad con un tipo inesperado.

Modo de prueba

Para usar el modo de prueba (https://test.dodopayments.com), llama a testMode() en el builder:

Operaciones comunes

Los ejemplos de esta sección usan el client de Inicio rápido.

Crear una sesión de checkout

Crea una sesión de checkout y, a continuación, redirige al cliente a la URL de checkout devuelta:
checkoutUrl() devuelve un Optional<String>. Cada URL de checkout funciona una sola vez y caduca después de 24 horas. Consulta Sesiones de checkout para ver todas las opciones de sesión.

Gestionar clientes

Crea un cliente con una dirección de correo electrónico, un nombre y metadatos; después, recupéralo por su ID:

Gestionar suscripciones

Crea una suscripción con un enlace de pago y, a continuación, realiza un cargo si es una suscripción bajo demanda.
POST /subscriptions (el método subscriptions().create() del SDK) está obsoleto. Sigue funcionando para integraciones existentes, pero las integraciones nuevas deben crear suscripciones mediante una sesión de checkout.
productPrice se expresa en la unidad monetaria más pequeña, como centavos para USD o paise para INR. Para realizar un cargo de $25.00, pasa 2500.
subscriptions().charge(...) se utiliza para suscripciones bajo demanda. Dodo Payments factura automáticamente las demás suscripciones según el calendario de facturación del producto.

Facturación basada en el uso

Configurar medidores

Crea un medidor que cuente eventos y, después, muestra tus medidores. autoPager() itera sobre cada medidor y obtiene más páginas según sea necesario:

Ingerir eventos de uso

Envía un evento de uso para un cliente. Los valores de metadatos del evento son objetos JsonValue:
eventId es la clave de idempotencia, así que asigna un valor único a cada evento. Se rechaza un timestamp de más de 1 hora de antigüedad o de más de 5 minutos en el futuro.

Ingerir eventos por lotes

Envía hasta 1.000 eventos en una sola solicitud. Este ejemplo usa las importaciones del ejemplo anterior:

Gestión de errores

El SDK lanza excepciones no comprobadas. Para un estado de error, lanza una subclase de DodoPaymentsServiceException, que contiene statusCode(), headers() y body(). Captura las clases específicas que quieras gestionar antes de la clase base:
Los estados que no tienen su propia clase, como 409, lanzan UnexpectedStatusCodeException. Los fallos de red lanzan DodoPaymentsIoException, y las respuestas que el SDK no puede interpretar lanzan DodoPaymentsInvalidDataException. Todas estas clases extienden DodoPaymentsException.
El SDK reintenta los errores de conexión y las respuestas con estado 408, 409, 429 o 500 y superiores, dos veces de forma predeterminada, con retroceso exponencial.

Operaciones asíncronas

Llama a async() en el cliente para obtener un cliente asíncrono. Sus métodos devuelven un CompletableFuture:
Para crear un cliente asíncrono desde el principio, usa DodoPaymentsOkHttpClientAsync.fromEnv().

Integración con Spring Boot

Clase de configuración

Registra un cliente como bean y elige el entorno desde una propiedad:

Capa de servicio

Inyecta el cliente en un servicio:

Recursos

GitHub Repository

Código fuente, versiones y la lista completa de métodos.

API Reference

Cada endpoint, parámetro y respuesta.

Discord Community

Haz preguntas y conversa con otros desarrolladores.

Report Issues

Informa de errores o solicita funciones.

Soporte

Para obtener ayuda con el SDK de Java:

Contribuir

Para contribuir, lee las directrices de contribución.
Última modificación el 26 de septiembre de 2026