Skip to main content
Java SDK, Java applications को Dodo Payments REST API का typed access देता है। इसमें हर जगह Java types का उपयोग होता है: Optional उन fields के लिए जो अनुपस्थित हो सकते हैं, Stream results को iterate करने के लिए, और CompletableFuture asynchronous calls के लिए।

स्थापना

मावेन

अपने pom.xml में निर्भरता जोड़ें:
pom.xml

ग्रेडल

अपने build.gradle.kts में dependency जोड़ें:
build.gradle.kts
SDK releases API changes के लिए support जोड़ते हैं। सबसे recent version खोजने के लिए Maven Central देखें।
SDK के लिए Java 8 या उसके बाद का version आवश्यक है, इसलिए यह Java 11, 17 और 21 पर भी चलता है।

त्वरित प्रारंभ

एक client बनाएं, फिर checkout session बनाएं:
fromEnv(), live mode से connect करता है, जब तक DODO_PAYMENTS_BASE_URL या dodopayments.baseUrl कुछ और न कहे। test mode का उपयोग करने के लिए Test Mode देखें। test mode API key केवल test mode में काम करती है।
API keys को environment variables, system properties या secrets manager में रखें। उन्हें अपने source code में कभी hardcode न करें।

मुख्य सुविधाएं

Type Safety

compile-time checks के लिए typed request और response classes।

Shared Client

एक client बनाएं और उसे सभी requests में reuse करें: इसमें connection और thread pools होते हैं। Request और response objects immutable होते हैं।

Builder Pattern

हर request class में एक builder होता है, और toBuilder() एक modified copy बनाता है।

Async Support

client.async() ऐसा client लौटाता है जिसकी methods CompletableFuture लौटाती हैं।

Configuration

Environment Variables

fromEnv() इन environment variables या matching system properties को पढ़ता है। System properties को प्राथमिकता मिलती है:
.env
API key DODO_PAYMENTS_API_KEY या dodopayments.apiKey से आती है। Webhook signing secret DODO_PAYMENTS_WEBHOOK_KEY या dodopayments.webhookKey से, और base URL DODO_PAYMENTS_BASE_URL या dodopayments.baseUrl से आता है। एक client बनाएं और उसे reuse करें, क्योंकि हर client का अपना connection pool और thread pools होता है। Webhook verify करने के लिए raw request body और headers को client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()) में pass करें, जहां headers एक com.dodopayments.api.core.http.Headers है। यह आपके webhook key से signature check करता है और parsed event लौटाता है, या DodoPaymentsWebhookException throw करता है। Headers के बिना, unwrap signature verify नहीं करता। client.webhooks().unsafeUnwrap(rawBody) body को verify किए बिना parse करता है, इसलिए इसका उपयोग केवल testing के लिए करें। Webhooks देखें।

Manual Configuration

Builder पर हर option set करें:
By default, client दो बार retry करता है और 1 minute के बाद timeout हो जाता है। यह connection errors और 408, 409, 429 या 500 और उससे ऊपर के status वाली responses को retry करता है। किसी एक call के लिए timeout override करने हेतु, method के दूसरे argument के रूप में RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() pass करें। responseValidation(true) पहले से check करता है कि पूरी response expected types से match करती है। इसके बिना, SDK DodoPaymentsInvalidDataException केवल तब throw करता है जब आप unexpected type वाली property पढ़ते हैं।

Test Mode

test mode (https://test.dodopayments.com) का उपयोग करने के लिए builder पर testMode() call करें:

सामान्य Operations

इस section के examples Quick Start से client का उपयोग करते हैं।

Checkout Session बनाएं

एक checkout session बनाएं, फिर customer को लौटाए गए checkout URL पर redirect करें:
checkoutUrl() एक Optional<String> लौटाता है। हर checkout URL केवल एक बार काम करता है और 24 hours के बाद expire हो जाता है। हर session option के लिए Checkout Sessions देखें।

Customers manage करें

email address, name और metadata के साथ customer बनाएं, फिर उसे ID से retrieve करें:

Subscriptions handle करें

payment link के साथ subscription बनाएं, फिर यदि यह on-demand subscription है तो उसे charge करें।
POST /subscriptions (SDK का subscriptions().create() method) deprecated है। यह existing integrations के लिए अभी भी काम करता है, लेकिन नई integrations को subscriptions बनाने के लिए Checkout Session का उपयोग करना चाहिए।
productPrice सबसे छोटी currency unit में होता है, जैसे USD के लिए cents या INR के लिए paise। $25.00 charge करने के लिए 2500 pass करें।
subscriptions().charge(...) on-demand subscriptions के लिए है। Dodo Payments अन्य subscriptions को product के billing schedule के अनुसार automatically bill करता है।

Usage-Based Billing

Meters configure करें

एक meter बनाएं जो events को count करे, फिर अपने meters की list बनाएं। autoPager() हर meter पर iterate करता है और आवश्यकता के अनुसार अधिक pages fetch करता है:

Usage Events ingest करें

किसी customer के लिए usage event भेजें। Event metadata values JsonValue objects होते हैं:
eventId idempotency key है, इसलिए हर event को unique value दें। 1 hour से अधिक पुराना या 5 minutes से अधिक future का timestamp reject कर दिया जाता है।

Events को batch में ingest करें

एक request में अधिकतम 1,000 events भेजें। यह example पिछले example के imports का उपयोग करता है:

Error Handling

SDK unchecked exceptions throw करता है। Error status के लिए यह DodoPaymentsServiceException की subclass throw करता है, जिसमें statusCode(), headers() और body() होते हैं। Base class से पहले उन specific classes को catch करें जिन्हें आप handle करना चाहते हैं:
जिन statuses की अपनी class नहीं होती, जैसे 409, वे UnexpectedStatusCodeException throw करते हैं। Network failures DodoPaymentsIoException throw करते हैं, और जिन responses को SDK interpret नहीं कर पाता वे DodoPaymentsInvalidDataException throw करती हैं। ये सभी DodoPaymentsException को extend करते हैं।
SDK connection errors और 408, 409, 429 या 500 और उससे ऊपर के status वाली responses को default रूप से दो बार exponential backoff के साथ retry करता है।

Async Operations

Asynchronous client प्राप्त करने के लिए client पर async() call करें। इसकी methods CompletableFuture लौटाती हैं:
शुरुआत से asynchronous client बनाने के लिए DodoPaymentsOkHttpClientAsync.fromEnv() का उपयोग करें।

Spring Boot Integration

Configuration Class

एक client को bean के रूप में register करें और property से environment चुनें:

Service Layer

Client को service में inject करें:

Resources

GitHub Repository

Source code, releases और पूरी method list।

API Reference

हर endpoint, parameter और response।

Discord Community

Questions पूछें और अन्य developers के साथ बातचीत करें।

Report Issues

Bugs report करें या features का अनुरोध करें।

Support

Java SDK के लिए सहायता प्राप्त करने हेतु:

Contributing

योगदान देने के लिए contributing guidelines पढ़ें।
अंतिम संशोधन 26 सितंबर 2026