Sequence, और asynchronous calls के लिए suspend functions।
स्थापना
ग्रेडल (Kotlin DSL)
अपनेbuild.gradle.kts में निर्भरता जोड़ें:
build.gradle.kts
मेवेन
अपनेpom.xml में निर्भरता जोड़ें:
pom.xml
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 में काम करती है।
मुख्य सुविधाएँ
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 को प्राथमिकता मिलती है:
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 तक पहुँच गई है, तो API422 लौटाती है और SDK UnprocessableEntityException throw करता है। Inactive key 403 (PermissionDeniedException) लौटाती है, और unknown key 404 (NotFoundException) लौटाती है:
Subscriptions Handle करें
Subscription बनाएँ, फिर यदि वह on-demand subscription है तो उसे charge करें।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 करें:
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:
DodoPaymentsIoException throw करती हैं, और जिन responses को SDK interpret नहीं कर सकता, वे DodoPaymentsInvalidDataException throw करती हैं। सभी SDK exceptions, DodoPaymentsException को extend करती हैं।
Functional Error Handling
Functional error handling के लिएResult का उपयोग करें:
Android Integration
Kotlin SDK एक server SDK है। यह आपकी secret API key से authenticate करता है, और जिसके पास भी आपका APK है, वह उसमें compile की गई key निकाल सकता है, इसलिए इसे Android app के अंदर कभी उपयोग न करें। Android app में payments लेने के लिए:- अपने server पर, इस SDK के साथ checkout session बनाएं (Ktor Integration देखें) और उसका
checkout_urlलौटाएं। - 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 खोलें।