Optional para campos que pueden faltar, Stream para iterar sobre resultados y CompletableFuture para llamadas asíncronas.
Instalación
Maven
Agrega la dependencia a tupom.xml:
pom.xml
Gradle
Añade la dependencia a tubuild.gradle.kts:
build.gradle.kts
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.
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
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: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 elclient 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.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.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 objetosJsonValue:
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 deDodoPaymentsServiceException, que contiene statusCode(), headers() y body(). Captura las clases específicas que quieras gestionar antes de la clase base:
UnexpectedStatusCodeException. Los fallos de red lanzan DodoPaymentsIoException, y las respuestas que el SDK no puede interpretar lanzan DodoPaymentsInvalidDataException. Todas estas clases extienden DodoPaymentsException.
Operaciones asíncronas
Llama aasync() en el cliente para obtener un cliente asíncrono. Sus métodos devuelven un CompletableFuture:
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:- Discord: Únete al servidor de la comunidad para recibir ayuda en tiempo real.
- Correo electrónico: Contacta con support@dodopayments.com.
- GitHub: Abre un issue en el repositorio.