Skip to main content
Go SDK, Go applications को Dodo Payments REST API का typed access देता है। हर method एक context.Context लेता है, request parameters एक Field wrapper का उपयोग करते हैं, जो zero values को omitted fields से अलग करता है, और आप हर request में middleware जोड़ सकते हैं।

स्थापना

अपने project में module जोड़ें:
किसी specific version को pin करने के लिए:
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 में काम करती है।
API keys को environment variables या secrets manager में रखें। उन्हें अपने source code में कभी hardcode न करें।

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 करें:
प्रत्येक checkout URL एक बार काम करता है और 24 घंटे बाद expire हो जाता है। प्रत्येक session option के लिए Checkout Sessions देखें।

Manage Customers

एक email address और name के साथ customer बनाएँ, फिर उसे ID से retrieve करें। Metadata values shared package के union types का उपयोग करती हैं:

Handle Subscriptions

एक subscription बनाएँ, on-demand subscription को charge करें और subscription का usage history पढ़ें।
POST /subscriptions (SDK का Subscriptions.New method) deprecated है। यह मौजूदा integrations के लिए अभी भी काम करता है, लेकिन नए integrations को Checkout Session के माध्यम से subscriptions बनानी चाहिए।
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 करें:
अन्य errors unwrapped लौटाई जाती हैं। उदाहरण के लिए, यदि HTTP transport fail हो जाता है, तो आपको एक *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 के लिए सहायता प्राप्त करने हेतु:

Contributing

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