Skip to main content
TypeScript SDK server-side TypeScript और JavaScript code को Dodo Payments REST API तक typed access देता है। इसमें हर request और response के लिए type definitions, typed errors, automatic retries, timeouts और auto-pagination शामिल हैं।

स्थापना

अपने package manager से dodopayments package install करें:

त्वरित शुरुआत

एक client बनाएं, फिर checkout session बनाएं:
यदि आप bearerToken छोड़ देते हैं, तो client DODO_PAYMENTS_API_KEY environment variable पढ़ता है। यदि आप environment छोड़ देते हैं, तो client live mode से connect करता है। Test mode API key केवल environment: 'test_mode' के साथ काम करती है।
API keys को environment variables या secrets manager में रखें। उन्हें version control में कभी commit न करें और client-side code में expose न करें।

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

TypeScript First

हर request parameter और response field के लिए type definitions, जो आपके editor में दिखाई देती हैं।

Auto-Pagination

जब आप for await...of के साथ iterate करते हैं, तो List methods आपके लिए अगला page fetch करती हैं।

Error Handling

प्रत्येक HTTP error status के लिए typed error class, जिसमें status, headers और response body शामिल हैं।

Smart Retries

connection errors और retryable status codes के लिए default रूप से exponential backoff के साथ दो retries।

Configuration

Environment Variables

अपनी API key को environment variable में store करें:
.env
जब आप matching option pass नहीं करते, तो client इन variables को पढ़ता है: यदि base URL set है और आप environment भी pass करते हैं, तो constructor “Ambiguous URL” error throw करता है। उस स्थिति में environment का उपयोग करने के लिए baseURL: null pass करें। Webhook verify करने के लिए raw request body और headers को client.webhooks.unwrap(rawBody, { headers }) में pass करें। यह आपके webhook key से signature check करता है और parsed event return करता है। client.webhooks.unsafeUnwrap(rawBody) body को verify किए बिना parse करता है, इसलिए इसका उपयोग केवल testing के लिए करें। Webhooks देखें।

Timeout Configuration

Requests का default timeout 1 minute है। Client या किसी single request पर milliseconds में timeout set करें:
जब किसी request का timeout हो जाता है, तो SDK APIConnectionTimeoutError throw करता है। Timed-out requests को retry किया जाता है, इसलिए call fail होने से पहले timeout से अधिक समय ले सकती है।

Retry Configuration

Client या किसी single request पर maxRetries set करें:
SDK connection errors और status 408, 409, 429 या 500 और उससे ऊपर वाले responses को retry करता है। यह default रूप से exponential backoff के साथ दो बार retry करता है।
जब कोई request फिर भी fail हो जाती है, तो SDK DodoPayments.APIError की subclass throw करता है। प्रत्येक error में status, headers और error (response body) properties होती हैं। instanceof से किसी specific class की जांच करें, जैसे err instanceof DodoPayments.RateLimitError:

सामान्य Operations

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

Checkout Session बनाएं

एक checkout session बनाएं, फिर customer को लौटाए गए checkout_url पर redirect करें:
प्रत्येक checkout_url एक बार काम करता है और 24 घंटे बाद expire हो जाता है। प्रत्येक session option के लिए Checkout Sessions देखें।

Customers Manage करें

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

Subscriptions Handle करें

एक subscription बनाएं, on-demand subscription charge करें और subscription का usage history पढ़ें।
POST /subscriptions (SDK का subscriptions.create method) deprecated है। यह मौजूदा integrations के लिए अभी भी काम करता है, लेकिन नए integrations को Checkout Session के माध्यम से subscriptions बनानी चाहिए।
billing के लिए केवल country, यानी two-letter ISO country code, आवश्यक है। customer मौजूदा customer attach करने के लिए { customer_id } या नया customer बनाने के लिए { email, name? } लेता है। charge on-demand subscriptions के लिए है और product_price सबसे छोटी currency unit में होता है। retrieveUsageHistory paginated list return करता है, जिसे आप Auto-Pagination में बताए अनुसार iterate कर सकते हैं।

Usage-Based Billing

Usage Events Ingest करें

किसी customer के लिए usage events भेजें:
event_id idempotency key है, इसलिए प्रत्येक event को unique value दें। यदि एक ही request में वही event_id दो बार दिखाई देता है, तो पूरी request reject कर दी जाती है। यदि कोई event_id पहले ही ingest किया जा चुका है, तो नया event ignore कर दिया जाता है। एक request में अधिकतम 1,000 events स्वीकार किए जाते हैं। timestamp default रूप से current time पर set होता है और यदि यह 1 घंटे से अधिक अतीत में या 5 मिनट से अधिक भविष्य में हो, तो reject कर दिया जाता है।

Usage Events Retrieve करें

किसी single event को उसके event_id से retrieve करें, या customer, event name और time range से filter किए गए events की list बनाएं:
usageEvents.list, meter_id भी स्वीकार करता है और paginated list return करता है।

Proxy Configuration

Requests को proxy के माध्यम से भेजने के लिए अपने runtime की proxy settings fetchOptions में pass करें।

Node.js (Using Undici)

एक undici ProxyAgent को dispatcher के रूप में pass करें:

Bun

proxy option set करें:

Deno

Deno.createHttpClient के साथ HTTP client बनाएं और उसे client के रूप में pass करें:

Logging

logLevel client option या DODO_PAYMENTS_LOG environment variable से log level set करें। Client option, environment variable को override करता है।
debug level पर SDK हर HTTP request और response को headers और bodies सहित log करता है। कुछ authentication headers redact किए जाते हैं, लेकिन bodies में मौजूद sensitive data अभी भी दिखाई दे सकता है।
सबसे अधिक से सबसे कम verbose तक log levels हैं:
  • 'debug': Debug messages, info, warnings और errors।
  • 'info': Info messages, warnings और errors।
  • 'warn': Warnings और errors। यह default है।
  • 'error': केवल errors।
  • 'off': कोई logging नहीं।
SDK default रूप से console पर log करता है। pino, winston या किसी अन्य logging library का उपयोग करने के लिए अपने logger को logger option के रूप में pass करें; logLevel अभी भी नियंत्रित करता है कि कौन से messages उस तक पहुंचें। Log messages केवल debugging के लिए हैं और उनका format releases के बीच बदल सकता है।

Node.js SDK से Migration

यदि आप legacy Node.js SDK का उपयोग करते हैं, तो upgrade करने के लिए migration guide follow करें। वर्तमान SDK fetch API का उपयोग करता है, node-fetch का नहीं; इसके लिए Node.js 20, TypeScript 4.9 और Jest 28 या बाद का version आवश्यक है और इसमें एक migration tool शामिल है, जो आपके अधिकांश code को update करता है।

View Migration Guide

Node.js SDK से TypeScript SDK पर migrate करना सीखें

Auto-Pagination

List methods paginated results return करती हैं। हर page से items प्राप्त करने के लिए for await...of के साथ iterate करें। SDK आवश्यकता होने पर अगला page request करता है:
एक समय में एक page के साथ काम करने के लिए page.items पढ़ें और hasNextPage() तथा getNextPage() call करें:
Page size set करने के लिए list method में page_size pass करें, जैसे client.payments.list({ page_size: 50 })।

आवश्यकताएं

SDK TypeScript 4.9 या बाद के version और इन runtimes को support करता है:
  • Web browsers (up-to-date Chrome, Firefox, Safari, Edge और अन्य)
  • Node.js 20 LTS या बाद के (non-EOL) versions
  • Deno 1.28.0 या बाद का
  • Bun 1.0 या बाद का
  • Cloudflare Workers
  • Vercel Edge Runtime
  • Jest 28 या बाद का, "node" environment के साथ ("jsdom" environment supported नहीं है)
  • Nitro 2.6 या बाद का
React Native supported नहीं है।

Resources

GitHub Repository

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

API Reference

हर endpoint, parameter और response।

Discord Community

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

Report Issues

Bugs report करें या features request करें।

Support

TypeScript SDK के लिए सहायता प्राप्त करने हेतु:

Contributing

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