context.Context लेता है, request parameters एक Field wrapper का उपयोग करते हैं, जो zero values को omitted fields से अलग करता है, और आप हर request में middleware जोड़ सकते हैं।
स्थापना
अपने project में module जोड़ें:SDK के लिए Go 1.22 या बाद का version आवश्यक है।
त्वरित प्रारंभ
एक client बनाएँ, फिर एक checkout session बनाएँ:option.WithBearerToken को छोड़ देते हैं, तो NewClient, DODO_PAYMENTS_API_KEY environment variable को पढ़ता है। यदि आप option.WithEnvironmentTestMode() को छोड़ देते हैं, तो client live mode से connect होता है। Test mode API key केवल test mode में काम करती है।
Core Features
Context Support
हर method cancellation और timeouts के लिए एक
context.Context लेता है।Strong Typing
Compile-time checks के लिए typed request parameters और response structs।
Middleware
Logging, metrics और custom logic के लिए
option.WithMiddleware के साथ middleware जोड़ें।Goroutine Safe
Goroutines के बीच एक client share करें।
Configuration
NewClient environment से DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (आपका webhook signing secret) और DODO_PAYMENTS_BASE_URL पढ़ता है। आपके द्वारा pass किए गए options, जैसे option.WithBearerToken, option.WithWebhookKey और option.WithBaseURL, इन values को override करते हैं।
Webhook को verify करने के लिए raw request body और headers को client.Webhooks.Unwrap(rawBody, r.Header) में pass करें। यह आपके webhook key के साथ signature को check करता है और parsed event लौटाता है। client.Webhooks.UnsafeUnwrap(rawBody) body को verify किए बिना parse करता है, इसलिए इसका उपयोग केवल testing के लिए करें। Webhooks देखें।
इस page के examples client का उपयोग करते हैं, जो Quick Start से है।
Context और Timeouts
Requests का default रूप से timeout नहीं होता। Context deadline retries सहित पूरे call को limit करती है। प्रत्येक attempt को limit करने के लिएoption.WithRequestTimeout() जोड़ें:
Retry Configuration
SDK connection errors और 408, 409, 429 या 500 और उससे अधिक status वाले responses को retry करता है। यह default रूप से exponential backoff के साथ दो बार retry करता है। Client या किसी single request परoption.WithMaxRetries set करें:
Common Operations
इस section के examples भी एक context का उपयोग करते हैं, जैसेctx := context.Background()।
Create a Checkout Session
एक checkout session बनाएँ, फिर customer को लौटाए गएCheckoutURL पर redirect करें:
Manage Customers
एक email address और name के साथ customer बनाएँ, फिर उसे ID से retrieve करें। Metadata valuesshared package के union types का उपयोग करती हैं:
Handle Subscriptions
एक subscription बनाएँ, on-demand subscription को charge करें और subscription का usage history पढ़ें।Billing के लिए केवल Country आवश्यक है, जो two-letter ISO country code है। Customer एक CustomerRequestUnionParam है: मौजूदा customer के लिए AttachExistingCustomerParam{CustomerID: ...} या नया customer बनाने के लिए NewCustomerParam{Email: ..., Name: ...} pass करें। Charge on-demand subscriptions के लिए है, और ProductPrice सबसे छोटी currency unit में है। GetUsageHistory results का एक page लौटाता है; GetUsageHistoryAutoPaging हर page पर iterate करता है।Usage-Based Billing
Ingest Usage Events
किसी customer के लिए usage events भेजें:EventID idempotency key है, इसलिए प्रत्येक event को unique value दें। यदि एक ही request में समान EventID दो बार दिखाई देता है, तो पूरी request reject कर दी जाती है। यदि कोई EventID पहले ही ingest किया जा चुका है, तो नया event ignore कर दिया जाता है। एक request में अधिकतम 1,000 events स्वीकार किए जाते हैं। Timestamp default रूप से current time पर set होता है और यदि यह 1 घंटे से अधिक past या 5 मिनट से अधिक future में हो, तो reject कर दिया जाता है।List Usage Events
Customer और event name से filtered events की list बनाएँ:List एक page लौटाता है। हर page पर iterate करने के लिए client.UsageEvents.ListAutoPaging(ctx, params) call करें और iter.Next(), iter.Current() और iter.Err() के साथ loop चलाएँ। अन्य list methods में भी यही AutoPaging variant होता है, और प्रत्येक page में एक GetNextPage() method होता है।
Error Handling
जब API non-success status code लौटाता है, तो SDK*dodopayments.Error type की error लौटाता है। इसमें StatusCode, *http.Request और *http.Response, तथा error body का JSON होता है। इसका निरीक्षण करने के लिए errors.As का उपयोग करें और specific cases handle करने के लिए StatusCode पर branch करें:
*url.Error मिल सकता है जो एक *net.OpError को wrap करता है। apiErr.DumpRequest(true) serialized request लौटाता है।
Middleware
option.WithMiddleware के साथ middleware जोड़ें। Middleware प्रत्येक request और एक next function प्राप्त करता है जो उसे भेजता है:
option.WithMiddleware call में कई middleware बाएँ से दाएँ run होते हैं। NewClient को pass किए गए middleware, single request को pass किए गए middleware से पहले run होते हैं।
Concurrency
Client concurrent use के लिए safe है, इसलिए आप एक client को कई goroutines के बीच share कर सकते हैं:Resources
GitHub Repository
Source code, releases और पूरी method list।
API Reference
प्रत्येक endpoint, parameter और response।
Discord Community
प्रश्न पूछें और अन्य developers के साथ बातचीत करें।
Report Issues
Bugs report करें या features का अनुरोध करें।
Support
Go SDK के लिए सहायता प्राप्त करने हेतु:- Discord: Real-time सहायता के लिए community server से जुड़ें।
- Email: support@dodopayments.com पर संपर्क करें।
- GitHub: repository पर issue खोलें।