Skip to main content
Rust SDK, async Rust applications को Dodo Payments REST API तक typed access देता है। यह Tokio और reqwest पर बना है, typed request और response structs का उपयोग करता है, paginated results को stream करता है और विफल requests को retry करता है।

इंस्टालेशन

Cargo के साथ अपने प्रोजेक्ट में SDK जोड़ें:
या इसे अपने Cargo.toml में मैन्युअल रूप से जोड़ें:
SDK के लिए Rust 1.75 या उसके बाद का संस्करण आवश्यक है।

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

Client::from_env(), DODO_PAYMENTS_API_KEY environment variable से आपकी API key पढ़ता है। एक client बनाएँ, फिर checkout session बनाएँ:
यदि DODO_PAYMENTS_API_KEY सेट नहीं है, तो Client::from_env() एक Error::Config लौटाता है। जब तक आप Environments में दिखाए गए अनुसार कोई दूसरा environment नहीं चुनते, client live mode से connect होता है। Test mode API key केवल test mode में काम करती है।
API keys को environment variables या secrets manager में रखें। उन्हें अपने source code में कभी hardcode न करें।

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

Async First

Tokio और reqwest पर बना है, जिसमें हर request के लिए async/await है।

Strong Typing

Compile-time checks के लिए typed request और response structs।

Auto-Pagination

सभी pages में मौजूद हर item को stream करें या एक बार में एक page आगे बढ़ें।

Configurable

प्रत्येक client के लिए environment, base URL, timeout और retry count सेट करें।

Configuration

Environment Variables

Client::from_env(), DODO_PAYMENTS_API_KEY से आपकी API key पढ़ता है। जब तक आप DODO_PAYMENTS_BASE_URL सेट नहीं करते, यह live mode URL का उपयोग करता है:
Rust SDK, DODO_PAYMENTS_WEBHOOK_KEY को नहीं पढ़ता और इसमें webhook signatures को verify करने की कोई method नहीं है। उन्हें verify करने के लिए Webhooks का पालन करें। आप client को explicit रूप से भी configure कर सकते हैं। Client::new एक Result लौटाता है, इसलिए इसे ? से उस function के अंदर unwrap करें जो dodopayments::Result लौटाता हो:

Environments

SDK में दो environments हैं: Default base URL https://live.dodopayments.com है। कोई दूसरा environment चुनने के लिए hard-coded URL के बजाय Environment enum का उपयोग करें:
from_env() के साथ DODO_PAYMENTS_API_KEY से API key पढ़ना जारी रखते हुए किसी दूसरे environment को target करने के लिए config में environment को override करें:

Timeouts

Default request timeout 30 seconds है। किसी client के लिए इसे with_timeout से override करें:
Client connection errors और 408, 409, 429 या 500 और उससे ऊपर के status वाली responses को retry करता है। यह default रूप से exponential backoff के साथ दो बार retry करता है और API द्वारा भेजे जाने पर Retry-After header का इंतज़ार करता है। Retry count बदलने के लिए ClientConfig पर with_max_retries call करें; उदाहरण के लिए, retries बंद करने के लिए .with_max_retries(0)।

सामान्य Operations

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

Checkout Session बनाएँ

Return URL के साथ checkout session बनाएँ:
Customer को session.checkout_url पर redirect करें। प्रत्येक checkout URL एक बार काम करता है और 24 hours के बाद expire हो जाता है। हर session option के लिए Checkout Sessions देखें।

Customers Manage करें

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

Subscriptions Handle करें

किसी existing customer के लिए subscription बनाएँ।
POST /subscriptions (SDK की subscriptions().create() method) deprecated है। यह existing integrations के लिए अब भी काम करता है, लेकिन नई integrations को Checkout Session के माध्यम से subscriptions बनानी चाहिए।
billing के लिए केवल country आवश्यक है, जो CountryCode enum variant जैसे CountryCode::Us हो सकता है। customer एक CustomerRequest enum है: existing customer के लिए AttachExistingCustomer पास करें या customer बनाने के लिए NewCustomer पास करें। किसी on-demand subscription को charge करने के लिए client.subscriptions().charge().subscription_id(...) को SubscriptionsChargeParams body के साथ call करें। product_price जैसे amount fields currency की सबसे छोटी unit में होते हैं (उदाहरण के लिए, 2500 $25.00 है)।

Usage-Based Billing

Usage Events Ingest करें

किसी customer के लिए usage events भेजें:
event_id idempotency key है, इसलिए प्रत्येक event को एक unique value दें। यदि timestamp, None है, तो event current time का उपयोग करता है।

Usage Events List करें

Customer और event name से filtered events list करें। Filters JSON query object में रखें:

Pagination

List endpoints एक typed page लौटाते हैं, जिसका items field current page के results रखता है। सभी pages में मौजूद हर item को stream करने के लिए into_stream call करें:
एक बार में एक page आगे बढ़ने के लिए get_next_page call करें। Last page के बाद यह None लौटाता है:

Error Handling

हर method एक dodopayments::Result<T> लौटाती है। Failures, dodopayments::Error enum के variants होते हैं: API से मिले error status के लिए Api, transport errors के लिए Http, serialization errors के लिए Json, configuration errors के लिए Config और incomplete requests के लिए MissingPathParam या MissingBody। API errors को transport errors से अलग handle करने के लिए इस पर match करें:

Undocumented Endpoints

ऐसे endpoint को call करने के लिए जिसका कोई typed method नहीं है, low-level request builder का उपयोग करें। यह authentication और base URL लागू करता है। reqwest::Method को नाम देने के लिए अपनी dependencies में reqwest 0.12 जोड़ें:

Resources

GitHub Repository

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

Crates.io

Published crate और उसके versions।

API Reference

हर endpoint, parameter और response।

Discord Community

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

Support

Rust SDK के लिए सहायता पाने हेतु:

Contributing

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