Skip to main content
Kotlin SDK, Kotlin applications को Dodo Payments REST API तक typed access देता है। इसमें हर जगह Kotlin types का उपयोग किया गया है: उन fields के लिए nullable values जो अनुपस्थित हो सकती हैं, परिणामों पर iteration के लिए Sequence, और asynchronous calls के लिए suspend functions।

स्थापना

ग्रेडल (Kotlin DSL)

अपने build.gradle.kts में निर्भरता जोड़ें:
build.gradle.kts

मेवेन

अपने pom.xml में निर्भरता जोड़ें:
pom.xml
SDK releases, API में होने वाले बदलावों के लिए support जोड़ते हैं। सबसे हालिया version खोजने के लिए Maven Central देखें।
SDK के लिए Java 8 या उसके बाद का version आवश्यक है। यह JVM और Android पर चलता है तथा ProGuard और R8 keep rules के साथ आता है।

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

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

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

Coroutines

Async client के methods suspend functions हैं, जिन्हें आप coroutine से call करते हैं।

Null Safety

जो fields अनुपस्थित हो सकती हैं, वे Optional नहीं बल्कि nullable types होती हैं।

Sequences

Synchronous client पर, autoPager() एक Sequence लौटाता है, जो आपके iterate करने पर अतिरिक्त pages fetch करता है। Async client पर यह एक Flow लौटाता है।

Immutable Models

Model classes immutable होती हैं, और toBuilder() modified copy के लिए builder लौटाता है।

Configuration

Environment Variables से

fromEnv() आपकी settings को environment variables या system properties से पढ़ता है। System properties को प्राथमिकता मिलती है:
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 बनाएँ और उसका पुनः उपयोग करें, क्योंकि हर client का अपना connection pool और thread pools होता है। Webhook को verify करने के लिए raw request body और headers को client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()) में पास करें, जहाँ headers एक com.dodopayments.api.core.http.Headers है। यह आपके webhook key से signature की जाँच करता है और parsed event लौटाता है, या DodoPaymentsWebhookException throw करता है। Headers के बिना, unwrap signature verify नहीं करता। client.webhooks().unsafeUnwrap(rawBody) body को verify किए बिना parse करता है, इसलिए इसका उपयोग केवल testing के लिए करें। Webhooks देखें।

Manual Configuration

Builder पर हर option set करें:

Test Mode

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

Timeouts और Retries

Default रूप से, client दो बार retry करता है और 1 minute के बाद timeout हो जाता है। यह connection errors और 408, 409, 429 या 500 और उससे अधिक status वाली responses को exponential backoff के साथ retry करता है। Defaults को client पर set करें या किसी एक call में RequestOptions पास करें:

सामान्य Operations

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

Checkout Session बनाएँ

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

Product बनाएँ

$29.99 की कीमत वाला monthly subscription product बनाएँ:
price smallest currency unit में होता है। discountBps discount को basis points में set करता है और deprecated discount field को replace करता है।

License Key Activate करें

किसी device या installation के लिए license key activate करें। यदि key अपनी activation limit तक पहुँच गई है, तो API 422 लौटाती है और SDK UnprocessableEntityException throw करता है। Inactive key 403 (PermissionDeniedException) लौटाती है, और unknown key 404 (NotFoundException) लौटाती है:

Subscriptions Handle करें

Subscription बनाएँ, फिर यदि वह on-demand subscription है तो उसे charge करें।
POST /subscriptions (SDK का subscriptions().create() method) deprecated है। यह मौजूदा integrations के लिए अभी भी काम करता है, लेकिन नए integrations को Checkout Session के माध्यम से subscriptions बनानी चाहिए।
billing के लिए केवल country आवश्यक है, जो two-letter ISO country code है। किसी existing customer को attach करने के लिए AttachExistingCustomer का, या नया customer बनाने के लिए NewCustomer का उपयोग करें। charge on-demand subscriptions के लिए है, और productPrice smallest currency unit में होता है।

Usage-Based Billing

Usage Events Record करें

किसी customer के लिए usage event भेजें। वे meters जो event के eventName को track करते हैं, उसे aggregate करते हैं:
eventId idempotency key है, इसलिए हर event को unique value दें। एक request में अधिकतम 1,000 events स्वीकार किए जाते हैं।

Async Operations

Async Client

Async client में synchronous client जैसे ही methods होते हैं, लेकिन उनमें से अधिकांश suspend functions होते हैं। उन्हें coroutine से call करें:
आप synchronous client पर client.async() call करके उसका async version भी प्राप्त कर सकते हैं।

Error Handling

किसी error status के लिए SDK, DodoPaymentsServiceException की subclass throw करता है, जिसमें statusCode(), headers() और body() होते हैं। Subclasses हैं: BadRequestException (400), UnauthorizedException (401), PermissionDeniedException (403), NotFoundException (404), UnprocessableEntityException (422), RateLimitException (429), InternalServerException (5xx), और अन्य statuses, जैसे 409, के लिए UnexpectedStatusCodeException:
Network failures DodoPaymentsIoException throw करती हैं, और जिन responses को SDK interpret नहीं कर सकता, वे DodoPaymentsInvalidDataException throw करती हैं। सभी SDK exceptions, DodoPaymentsException को extend करती हैं।

Functional Error Handling

Functional error handling के लिए Result का उपयोग करें:
runCatching SDK exceptions सहित हर exception को catch करता है और उन्हें failed Result के रूप में लौटाता है।

Android Integration

Kotlin SDK एक server SDK है। यह आपकी secret API key से authenticate करता है, और जिसके पास भी आपका APK है, वह उसमें compile की गई key निकाल सकता है, इसलिए इसे Android app के अंदर कभी उपयोग न करें। Android app में payments लेने के लिए:
  1. अपने server पर, इस SDK के साथ checkout session बनाएं (Ktor Integration देखें) और उसका checkout_url लौटाएं।
  2. App में, अपने server से वह checkout_url प्राप्त करें और उसे Android SDK के साथ खोलें, जिसमें कोई API key नहीं होती।

Response Validation

डिफ़ॉल्ट रूप से, SDK केवल तब DodoPaymentsInvalidDataException throw करता है जब आप किसी unexpected type वाली property को पढ़ते हैं। पूरी response को पहले से जांचने के लिए, किसी request के लिए validation enable करें या response पर validate() call करें:

Advanced Features

Proxy Configuration

Requests को proxy के माध्यम से भेजने के लिए, builder को एक java.net.Proxy दें:

Temporary Configuration

withOptions modified settings वाला client लौटाता है, जो original client के connection और thread pools को share करता है। Original client में कोई बदलाव नहीं होता:

Ktor Integration

Client को एक बार बनाएं और उसे किसी route से call करें:

Resources

GitHub Repository

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

API Reference

हर endpoint, parameter और response।

Discord Community

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

Report Issues

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

Support

Kotlin SDK में सहायता के लिए:
  • Discord: वास्तविक समय में सहायता के लिए community server से जुड़ें।
  • Email: support@dodopayments.com पर संपर्क करें।
  • GitHub: repository पर issue खोलें।

Contributing

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