Optional für Felder, die fehlen können, Stream zum Durchlaufen von Ergebnissen und CompletableFuture für asynchrone Aufrufe.
Installation
Maven
Fügen Sie die Abhängigkeit zu Ihrerpom.xml hinzu:
pom.xml
Gradle
Fügen Sie die Abhängigkeit zu Ihrembuild.gradle.kts hinzu:
build.gradle.kts
Das SDK erfordert Java 8 oder höher und läuft daher auch unter Java 11, 17 und 21.
Schnellstart
Erstellen Sie einen Client und anschließend eine Checkout-Sitzung:fromEnv() stellt die Verbindung standardmäßig mit dem Live-Modus her, sofern DODO_PAYMENTS_BASE_URL oder dodopayments.baseUrl nichts anderes festlegt. Informationen zur Verwendung des Testmodus finden Sie unter Testmodus. Ein API-Schlüssel für den Testmodus funktioniert nur im Testmodus.
Kernfunktionen
Type Safety
Typisierte Request- und Response-Klassen für Prüfungen zur Compile-Zeit.
Shared Client
Erstellen Sie einen Client und verwenden Sie ihn für mehrere Requests wieder: Er verwaltet die Verbindung sowie die Thread-Pools. Request- und Response-Objekte sind unveränderlich.
Builder Pattern
Jede Request-Klasse verfügt über einen Builder, und
toBuilder() erstellt eine modifizierte Kopie.Async Support
client.async() gibt einen Client zurück, dessen Methoden CompletableFuture zurückgeben.Konfiguration
Umgebungsvariablen
fromEnv() liest diese Umgebungsvariablen oder die entsprechenden Systemeigenschaften. Systemeigenschaften haben Vorrang:
.env
DODO_PAYMENTS_API_KEY oder dodopayments.apiKey. Das Webhook-Signaturgeheimnis stammt aus DODO_PAYMENTS_WEBHOOK_KEY oder dodopayments.webhookKey und die Basis-URL aus DODO_PAYMENTS_BASE_URL oder dodopayments.baseUrl. Erstellen Sie einen Client und verwenden Sie ihn wieder, da jeder Client über einen eigenen Verbindungs- und Thread-Pool verfügt.
Um einen Webhook zu verifizieren, übergeben Sie den unveränderten Request-Body und die Header an client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), wobei headers ein com.dodopayments.api.core.http.Headers ist. Die Methode prüft die Signatur mit Ihrem Webhook-Schlüssel und gibt das geparste Event zurück oder löst DodoPaymentsWebhookException aus. Ohne Header verifiziert unwrap die Signatur nicht. client.webhooks().unsafeUnwrap(rawBody) parst den Body, ohne ihn zu verifizieren; verwenden Sie die Methode daher nur zum Testen. Siehe Webhooks.
Manuelle Konfiguration
Legen Sie jede Option im Builder fest:RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() als zweites Argument der Methode. responseValidation(true) prüft vorab, ob die gesamte Response den erwarteten Typen entspricht. Ohne diese Option löst das SDK DodoPaymentsInvalidDataException erst aus, wenn Sie eine Eigenschaft mit einem unerwarteten Typ lesen.
Testmodus
Um den Testmodus (https://test.dodopayments.com) zu verwenden, rufen Sie testMode() im Builder auf:
Häufige Vorgänge
Die Beispiele in diesem Abschnitt verwenden denclient aus dem Schnellstart.
Checkout-Sitzung erstellen
Erstellen Sie eine Checkout-Sitzung und leiten Sie den Kunden anschließend an die zurückgegebene Checkout-URL weiter:checkoutUrl() gibt ein Optional<String> zurück. Jede Checkout-URL kann einmal verwendet werden und läuft nach 24 Stunden ab. Eine Übersicht über alle Sitzungsoptionen finden Sie unter Checkout-Sitzungen.
Kunden verwalten
Erstellen Sie einen Kunden mit E-Mail-Adresse, Namen und Metadaten und rufen Sie ihn anschließend über seine ID ab:Abonnements verwalten
Erstellen Sie ein Abonnement mit einem Zahlungslink und belasten Sie es anschließend, wenn es sich um ein On-Demand-Abonnement handelt.productPrice wird in der kleinsten Währungseinheit angegeben, etwa Cent für USD oder Paise für INR. Um 25,00 $ zu berechnen, übergeben Sie 2500.Nutzungsbasierte Abrechnung
Meters konfigurieren
Erstellen Sie einen Meter, der Events zählt, und listen Sie anschließend Ihre Meters auf.autoPager() durchläuft jeden Meter und ruft bei Bedarf weitere Seiten ab:
Nutzungsereignisse aufnehmen
Senden Sie ein Nutzungsereignis für einen Kunden. Die Werte der Event-Metadaten sindJsonValue-Objekte:
eventId ist der Idempotency-Key. Verwenden Sie daher für jedes Event einen eindeutigen Wert. Ein timestamp, das mehr als 1 Stunde in der Vergangenheit oder mehr als 5 Minuten in der Zukunft liegt, wird abgelehnt.
Events stapelweise aufnehmen
Senden Sie bis zu 1.000 Events in einem Request. Dieses Beispiel verwendet die Imports aus dem vorherigen Beispiel:Fehlerbehandlung
Das SDK löst ungeprüfte Exceptions aus. Bei einem Fehlerstatus löst es eine Unterklasse vonDodoPaymentsServiceException aus, die über statusCode(), headers() und body() verfügt. Fangen Sie die spezifischen Klassen, die Sie behandeln möchten, vor der Basisklasse ab:
UnexpectedStatusCodeException aus. Netzwerkfehler lösen DodoPaymentsIoException aus, und Responses, die das SDK nicht interpretieren kann, lösen DodoPaymentsInvalidDataException aus. Alle diese Klassen erweitern DodoPaymentsException.
Asynchrone Vorgänge
Rufen Sieasync() auf dem Client auf, um einen asynchronen Client abzurufen. Seine Methoden geben ein CompletableFuture zurück:
DodoPaymentsOkHttpClientAsync.fromEnv().
Spring-Boot-Integration
Konfigurationsklasse
Registrieren Sie einen Client als Bean und wählen Sie die Umgebung über eine Property aus:Service-Schicht
Injizieren Sie den Client in einen Service:Ressourcen
GitHub Repository
Quellcode, Releases und die vollständige Methodenliste.
API Reference
Jeder Endpoint, Parameter und jede Response.
Discord Community
Stellen Sie Fragen und tauschen Sie sich mit anderen Entwicklern aus.
Report Issues
Melden Sie Fehler oder schlagen Sie Funktionen vor.
Support
Hilfe zum Java SDK:- Discord: Treten Sie dem Community-Server bei, um Hilfe in Echtzeit zu erhalten.
- E-Mail: Kontaktieren Sie support@dodopayments.com.
- GitHub: Erstellen Sie ein Issue im Repository.