Optional pour les champs qui peuvent être absents, Stream pour parcourir les résultats et CompletableFuture pour les appels asynchrones.
Installation
Maven
Ajoutez la dépendance dans votrepom.xml :
pom.xml
Gradle
Ajoutez la dépendance à votrebuild.gradle.kts :
build.gradle.kts
Le SDK nécessite Java 8 ou une version ultérieure ; il fonctionne donc également avec Java 11, 17 et 21.
Démarrage rapide
Créez un client, puis créez une session de checkout :fromEnv() se connecte au mode live, sauf si DODO_PAYMENTS_BASE_URL ou dodopayments.baseUrl indique le contraire. Pour utiliser le mode test, consultez Mode test. Une clé API du mode test fonctionne uniquement dans le mode test.
Fonctionnalités principales
Type Safety
Classes de requête et de réponse typées pour effectuer des vérifications à la compilation.
Shared Client
Créez un client et réutilisez-le pour toutes les requêtes : il conserve les pools de connexions et de threads. Les objets de requête et de réponse sont immuables.
Builder Pattern
Chaque classe de requête possède un builder, et
toBuilder() crée une copie modifiée.Async Support
client.async() renvoie un client dont les méthodes renvoient CompletableFuture.Configuration
Variables d’environnement
fromEnv() lit ces variables d’environnement ou les propriétés système correspondantes. Les propriétés système sont prioritaires :
.env
DODO_PAYMENTS_API_KEY ou dodopayments.apiKey. Le secret de signature du webhook provient de DODO_PAYMENTS_WEBHOOK_KEY ou dodopayments.webhookKey, et l’URL de base de DODO_PAYMENTS_BASE_URL ou dodopayments.baseUrl. Créez un client et réutilisez-le, car chaque client possède son propre pool de connexions et ses propres pools de threads.
Pour vérifier un webhook, transmettez le corps brut de la requête et les en-têtes à client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), où headers est un com.dodopayments.api.core.http.Headers. Cette méthode vérifie la signature avec votre clé de webhook et renvoie l’événement analysé, ou lève DodoPaymentsWebhookException. Sans en-têtes, unwrap ne vérifie pas la signature. client.webhooks().unsafeUnwrap(rawBody) analyse le corps sans le vérifier ; utilisez-le donc uniquement pour les tests. Consultez Webhooks.
Configuration manuelle
Définissez chaque option sur le builder :RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() comme deuxième argument de la méthode. responseValidation(true) vérifie dès le départ que l’intégralité de la réponse correspond aux types attendus. Sans cette option, le SDK lève DodoPaymentsInvalidDataException uniquement lorsque vous lisez une propriété dont le type est inattendu.
Mode test
Pour utiliser le mode test (https://test.dodopayments.com), appelez testMode() sur le builder :
Opérations courantes
Les exemples de cette section utilisent leclient de la section Démarrage rapide.
Créer une session de checkout
Créez une session de checkout, puis redirigez le client vers l’URL de checkout renvoyée :checkoutUrl() renvoie un Optional<String>. Chaque URL de checkout fonctionne une seule fois et expire après 24 heures. Pour connaître toutes les options de session, consultez Sessions de checkout.
Gérer les clients
Créez un client avec une adresse e-mail, un nom et des métadonnées, puis récupérez-le par son ID :Gérer les abonnements
Créez un abonnement avec un lien de paiement, puis facturez-le s’il s’agit d’un abonnement à la demande.productPrice est exprimé dans la plus petite unité monétaire, comme les centimes pour l’USD ou les paise pour l’INR. Pour facturer $25.00, transmettez 2500.Facturation basée sur l’utilisation
Configurer les compteurs
Créez un compteur qui dénombre les événements, puis répertoriez vos compteurs.autoPager() parcourt chaque compteur et récupère d’autres pages si nécessaire :
Ingérer des événements d’utilisation
Envoyez un événement d’utilisation pour un client. Les valeurs des métadonnées d’événement sont des objetsJsonValue :
eventId est la clé d’idempotence ; attribuez donc une valeur unique à chaque événement. Un timestamp datant de plus d’une heure ou situé à plus de 5 minutes dans le futur est rejeté.
Ingérer des événements par lots
Envoyez jusqu’à 1 000 événements dans une seule requête. Cet exemple utilise les imports de l’exemple précédent :Gestion des erreurs
Le SDK lève des exceptions non vérifiées. En cas de statut d’erreur, il lève une sous-classe deDodoPaymentsServiceException, qui possède statusCode(), headers() et body(). Interceptez les classes spécifiques que vous souhaitez gérer avant la classe de base :
UnexpectedStatusCodeException. Les défaillances réseau lèvent DodoPaymentsIoException, et les réponses que le SDK ne peut pas interpréter lèvent DodoPaymentsInvalidDataException. Toutes ces exceptions étendent DodoPaymentsException.
Opérations asynchrones
Appelezasync() sur le client pour obtenir un client asynchrone. Ses méthodes renvoient un CompletableFuture :
DodoPaymentsOkHttpClientAsync.fromEnv().
Intégration Spring Boot
Classe de configuration
Enregistrez un client comme bean et choisissez l’environnement à partir d’une propriété :Couche de service
Injectez le client dans un service :Ressources
GitHub Repository
Code source, versions et liste complète des méthodes.
API Reference
Chaque endpoint, paramètre et réponse.
Discord Community
Posez vos questions et échangez avec d’autres développeurs.
Report Issues
Signalez des bugs ou demandez des fonctionnalités.
Assistance
Pour obtenir de l’aide concernant le SDK Java :- Discord : Rejoignez le serveur communautaire pour obtenir de l’aide en temps réel.
- E-mail : Contactez support@dodopayments.com.
- GitHub : Ouvrez une issue sur le dépôt.