इंस्टालेशन
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 में काम करती है।
मुख्य सुविधाएँ
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 का उपयोग करता है:
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 करें:
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 बनाएँ: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 बनाएँ।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 करें:
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-levelrequest 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 के लिए सहायता पाने हेतु:- Discord: Real-time सहायता के लिए community server join करें।
- Email: support@dodopayments.com पर संपर्क करें।
- GitHub: repository पर issue खोलें।