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 dinpom.xml:
pom.xml
Gradle
Lägg till beroendet i dinbuild.gradle.kts:
build.gradle.kts
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.
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
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: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änderclient 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.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.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 ärJsonValue-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 avDodoPaymentsServiceException, som innehåller statusCode(), headers() och body(). Fånga de specifika klasser du vill hantera före basklassen:
UnexpectedStatusCodeException. Nätverksfel kastar DodoPaymentsIoException, och svar som SDK inte kan tolka kastar DodoPaymentsInvalidDataException. Alla dessa ärver från DodoPaymentsException.
Asynkrona åtgärder
Anropaasync() på klienten för att hämta en asynkron klient. Dess metoder returnerar en CompletableFuture:
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:- Discord: Gå med i community-servern för hjälp i realtid.
- E-post: Kontakta support@dodopayments.com.
- GitHub: Skapa ett ärende i arkivet.