Skip to main content
Java SDK ger Java-applikationer typad åtkomst till Dodo Payments REST API. Det använder Java-typer genomgående: Optional för fält som kan saknas, Stream för att iterera över resultat och CompletableFuture för asynkrona anrop.

Installation

Maven

Lägg till beroendet i din pom.xml:
pom.xml

Gradle

Lägg till beroendet i din build.gradle.kts:
build.gradle.kts
SDK-versioner lägger till stöd för API-ändringar. Om du vill hitta den senaste versionen kan du kontrollera Maven Central.
SDK kräver Java 8 eller senare och körs därför även på Java 11, 17 och 21.

Snabbstart

Skapa en klient och skapa sedan en checkout-session:
fromEnv() ansluter till live-läge om inte DODO_PAYMENTS_BASE_URL eller dodopayments.baseUrl anger något annat. Information om hur du använder testläge finns i Testläge. En API-nyckel för testläge fungerar endast i testläge.
Förvara API-nycklar i miljövariabler, systemegenskaper eller en secrets manager. Hårdkoda dem aldrig i källkoden.

Kärnfunktioner

Type Safety

Typade request- och response-klasser för kontroller vid kompilering.

Shared Client

Skapa en klient och återanvänd den för flera anrop: den innehåller anslutningen samt trådpoolerna. Request- och response-objekt är oföränderliga.

Builder Pattern

Varje request-klass har en builder, och toBuilder() skapar en modifierad kopia.

Async Support

client.async() returnerar en klient vars metoder returnerar CompletableFuture.

Konfiguration

Miljövariabler

fromEnv() läser dessa miljövariabler eller motsvarande systemegenskaper. Systemegenskaper har företräde:
.env
API-nyckeln hämtas från DODO_PAYMENTS_API_KEY eller dodopayments.apiKey. Webhook-signaturhemligheten hämtas från DODO_PAYMENTS_WEBHOOK_KEY eller dodopayments.webhookKey, och bas-URL:en från DODO_PAYMENTS_BASE_URL eller dodopayments.baseUrl. Skapa en klient och återanvänd den, eftersom varje klient har en egen anslutningspool och egna trådpooler. Om du vill verifiera en webhook skickar du den råa request body:n och headers till client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), där headers är ett com.dodopayments.api.core.http.Headers. Den kontrollerar signaturen med din webhook-nyckel och returnerar den tolkade händelsen eller kastar DodoPaymentsWebhookException. Utan headers verifierar unwrap inte signaturen. client.webhooks().unsafeUnwrap(rawBody) tolkar body:n utan att verifiera den, så använd den endast för testning. Se Webhooks.

Manuell konfiguration

Ange varje alternativ i buildern:
Som standard försöker klienten igen två gånger och avbryter efter 1 minut. Den försöker igen vid anslutningsfel och svar med status 408, 409, 429 eller 500 och högre. Om du vill åsidosätta timeouten för ett anrop skickar du RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() som metodens andra argument. responseValidation(true) kontrollerar i förväg att hela svaret överensstämmer med de förväntade typerna. Utan den kastar SDK DodoPaymentsInvalidDataException först när du läser en egenskap med en oväntad typ.

Testläge

Om du vill använda testläge (https://test.dodopayments.com) anropar du testMode() på buildern:

Vanliga åtgärder

Exemplen i det här avsnittet använder client från Snabbstart.

Skapa en checkout-session

Skapa en checkout-session och omdirigera sedan kunden till den returnerade checkout-URL:en:
checkoutUrl() returnerar en Optional<String>. Varje checkout-URL kan användas en gång och upphör att gälla efter 24 timmar. Information om alla sessionsalternativ finns i Checkout Sessions.

Hantera kunder

Skapa en kund med e-postadress, namn och metadata och hämta den sedan med dess ID:

Hantera prenumerationer

Skapa en prenumeration med en payment link och debitera den sedan om det är en on-demand-prenumeration.
POST /subscriptions (SDK:ts subscriptions().create()-metod) är föråldrad. Den fungerar fortfarande för befintliga integrationer, men nya integrationer bör skapa prenumerationer via en Checkout Session.
productPrice anges i den minsta valutaenheten, till exempel cent för USD eller paise för INR. Om du vill debitera $25.00 skickar du 2500.
subscriptions().charge(...) används för on-demand-prenumerationer. Dodo Payments debiterar andra prenumerationer automatiskt enligt produktens debiteringsschema.

Användningsbaserad debitering

Konfigurera mätare

Skapa en mätare som räknar händelser och lista sedan dina mätare. autoPager() itererar över varje mätare och hämtar fler sidor vid behov:

Importera användningshändelser

Skicka en användningshändelse för en kund. Värdena i händelsens metadata är JsonValue-objekt:
eventId är idempotency key, så ge varje händelse ett unikt värde. En timestamp som ligger mer än 1 timme bakåt i tiden eller mer än 5 minuter framåt i tiden avvisas.

Importera händelser i batch

Skicka upp till 1 000 händelser i en request. Det här exemplet använder importerna från föregående exempel:

Felhantering

SDK kastar okontrollerade undantag. Vid en felstatus kastar den en subklass av DodoPaymentsServiceException, som innehåller statusCode(), headers() och body(). Fånga de specifika klasser du vill hantera före basklassen:
Statusar utan en egen klass, som 409, kastar UnexpectedStatusCodeException. Nätverksfel kastar DodoPaymentsIoException, och svar som SDK inte kan tolka kastar DodoPaymentsInvalidDataException. Alla dessa ärver från DodoPaymentsException.
SDK försöker igen vid anslutningsfel och svar med status 408, 409, 429 eller 500 och högre, som standard två gånger, med exponentiell backoff.

Asynkrona åtgärder

Anropa async() på klienten för att hämta en asynkron klient. Dess metoder returnerar en CompletableFuture:
Om du vill skapa en asynkron klient direkt använder du DodoPaymentsOkHttpClientAsync.fromEnv().

Spring Boot-integration

Konfigurationsklass

Registrera en klient som en bean och välj miljö från en egenskap:

Servicelager

Injicera klienten i en tjänst:

Resurser

GitHub Repository

Källkod, versioner och den fullständiga metodlistan.

API Reference

Alla endpoints, parametrar och svar.

Discord Community

Ställ frågor och prata med andra utvecklare.

Report Issues

Rapportera buggar eller föreslå funktioner.

Support

För hjälp med Java SDK:

Bidra

Om du vill bidra kan du läsa riktlinjerna för bidrag.
Senast ändrad 26 september 2026