मुख्य सामग्री पर जाएं

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

TypeScript SDK Dodo Payments REST API के लिए TypeScript और JavaScript अनुप्रयोगों के लिए सुविधाजनक सर्वर-साइड पहुंच प्रदान करता है। इसमें व्यापक प्रकार की परिभाषाएँ, त्रुटि प्रबंधन, पुनः प्रयास, समय सीमा, और निर्बाध भुगतान प्रसंस्करण के लिए स्वचालित-पृष्ठन शामिल हैं।

स्थापना

अपने पसंदीदा पैकेज प्रबंधक का उपयोग करके SDK इंस्टॉल करें:
npm install dodopayments

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

अपने API कुंजी के साथ क्लाइंट को प्रारंभ करें और भुगतान प्रसंस्करण शुरू करें:
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
  environment: 'test_mode', // defaults to 'live_mode'
});

const checkoutSessionResponse = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'product_id', quantity: 1 }],
});

console.log(checkoutSessionResponse.session_id);
हमेशा अपने API कुंजियाँ environment variables का उपयोग करके सुरक्षित रूप से संग्रहित करें। उन्हें version control में कभी commit न करें या client-side code में उजागर न करें।

मुख्य विशेषताएँ

TypeScript First

सभी API endpoints के लिए व्यापक type definitions के साथ पूर्ण TypeScript समर्थन

Auto-Pagination

बड़ी datasets के साथ काम करना सहज बनाने के लिए सूची प्रतिक्रियाओं के लिए स्वचालित पेजिनेशन

Error Handling

विभिन्न असफलता परिदृश्यों के लिए विस्तृत संदेशों वाले बिल्ट-इन त्रुटि प्रकार

Smart Retries

अस्थायी त्रुटियों के लिए exponential backoff के साथ कॉन्फ़िगर करने योग्य स्वचालित पुन: प्रयास

कॉन्फ़िगरेशन

पर्यावरण चर

सुरक्षित कॉन्फ़िगरेशन के लिए पर्यावरण चर सेट करें:
.env
DODO_PAYMENTS_API_KEY=your_api_key_here

समय सीमा कॉन्फ़िगरेशन

वैश्विक या प्रति-अनुरोध समय सीमा कॉन्फ़िगर करें:
// Configure default timeout for all requests (default is 1 minute)
const client = new DodoPayments({
  timeout: 20 * 1000, // 20 seconds
});

// Override per-request
await client.checkoutSessions.create(
  { product_cart: [{ product_id: 'product_id', quantity: 1 }] },
  { timeout: 5 * 1000 },
);

पुनः प्रयास कॉन्फ़िगरेशन

स्वचालित पुनः प्रयास व्यवहार कॉन्फ़िगर करें:
// Configure default for all requests (default is 2 retries)
const client = new DodoPayments({
  maxRetries: 0, // disable retries
});

// Override per-request
await client.checkoutSessions.create(
  { product_cart: [{ product_id: 'product_id', quantity: 1 }] },
  { maxRetries: 5 },
);
SDK स्वचालित रूप से उन अनुरोधों को पुनः प्रयास करता है जो नेटवर्क त्रुटियों या सर्वर समस्याओं (5xx प्रतिक्रियाएँ) के कारण विफल हो जाते हैं, साथ ही exponential backoff के साथ।

सामान्य संचालन

चेकआउट सत्र बनाएं

भुगतान जानकारी एकत्र करने के लिए एक चेकआउट सत्र उत्पन्न करें:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_123',
      quantity: 1
    }
  ],
  return_url: 'https://yourdomain.com/return'
});

console.log('Redirect to:', session.url);

ग्राहकों का प्रबंधन करें

ग्राहक जानकारी बनाएं और पुनः प्राप्त करें:
// Create a customer
const customer = await client.customers.create({
  email: 'customer@example.com',
  name: 'John Doe',
  metadata: {
    user_id: '12345'
  }
});

// Retrieve customer
const retrieved = await client.customers.retrieve('cus_123');
console.log(`Customer: ${retrieved.name} (${retrieved.email})`);

सदस्यताओं को संभालें

आवर्ती सदस्यताओं का निर्माण और प्रबंधन करें:
// Create a subscription
const subscription = await client.subscriptions.create({
  billing: {
    country: 'US',
    city: 'San Francisco',
    state: 'CA',
    street: '1 Market St',
    zipcode: '94105',
  },
  customer: {
    customer_id: 'cus_123', // or pass { email, name } to create a new customer
  },
  product_id: 'pdt_456',
  quantity: 1,
});

// Charge an on-demand subscription
// product_price is in the lowest currency denomination (e.g., 2500 = $25.00 USD)
const chargeResponse = await client.subscriptions.charge(subscription.subscription_id, {
  product_price: 2500,
});

// Retrieve subscription usage history (for metered subscriptions)
const usageHistory = await client.subscriptions.retrieveUsageHistory(subscription.subscription_id, {
  start_date: '2024-01-01T00:00:00Z',
  end_date: '2024-03-31T23:59:59Z',
});
billing कम से कम दो-अक्षर के ISO देश कोड की आवश्यकता होती है। customer एक संघ है { customer_id } (मौजूदा ग्राहक को जोड़ने के लिए) या { email, name? } (नया बनाने के लिए)। product_price को न्यूनतम मुद्रा संप्रदाय में व्यक्त किया जाता है।

उपयोग-आधारित बिलिंग

उपयोग घटनाओं को इकट्ठा करें

उपयोग-आधारित बिलिंग के लिए कस्टम इवेंट्स को ट्रैक करें:
await client.usageEvents.ingest({
  events: [
    {
      event_id: 'api_call_12345',
      customer_id: 'cus_abc123',
      event_name: 'api_request',
      timestamp: '2024-01-15T10:30:00Z',
      metadata: {
        endpoint: '/api/v1/users',
        method: 'GET',
        tokens_used: '150'
      }
    }
  ]
});
इवेंट्स में अद्वितीय event_id मान होना चाहिए ताकि वे आइडेमोटेंसी बनें। उसी अनुरोध में डुप्लिकेट आईडी अस्वीकार कर दिए जाते हैं, और मौजूदा आईडी के साथ बाद के अनुरोधों को नज़रअंदाज़ किया जाता है।

उपयोग घटनाओं को पुनः प्राप्त करें

उपयोग घटनाओं के बारे में विस्तृत जानकारी प्राप्त करें:
// Get a specific event
const event = await client.usageEvents.retrieve('api_call_12345');

// List events with filtering
const events = await client.usageEvents.list({
  customer_id: 'cus_abc123',
  event_name: 'api_request',
  start: '2024-01-14T10:30:00Z',
  end: '2024-01-15T10:30:00Z'
});

प्रॉक्सी कॉन्फ़िगरेशन

विभिन्न रनटाइम्स के लिए प्रॉक्सी सेटिंग्स कॉन्फ़िगर करें:

Node.js (undici का उपयोग करते हुए)

import DodoPayments from 'dodopayments';
import * as undici from 'undici';

const proxyAgent = new undici.ProxyAgent('http://localhost:8888');
const client = new DodoPayments({
  fetchOptions: {
    dispatcher: proxyAgent,
  },
});

Bun

import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  fetchOptions: {
    proxy: 'http://localhost:8888',
  },
});

Deno

import DodoPayments from 'npm:dodopayments';

const httpClient = Deno.createHttpClient({ proxy: { url: 'http://localhost:8888' } });
const client = new DodoPayments({
  fetchOptions: {
    client: httpClient,
  },
});

लॉगिंग

पर्यावरण वेरिएबल्स या क्लाइंट विकल्पों का उपयोग करके लॉग का विवरण कन्ट्रोल करें:
// Via client option
const client = new DodoPayments({
  logLevel: 'debug', // Show all log messages
});
# Via environment variable
export DODO_PAYMENTS_LOG=debug
उपलब्ध लॉग स्तर:
  • 'debug' - डिबग संदेश, जानकारी, चेतावनी, और त्रुटियाँ दिखाएँ
  • 'info' - जानकारी संदेश, चेतावनी, और त्रुटियाँ दिखाएँ
  • 'warn' - चेतावनी और त्रुटियाँ दिखाएँ (डिफ़ॉल्ट)
  • 'error' - केवल त्रुटियाँ दिखाएँ
  • 'off' - सभी लॉगिंग को निष्क्रिय करें
डिबग स्तर पर, सभी HTTP अनुरोध और उत्तर लॉग की जाती हैं, जिसमें हेडर और बॉडी शामिल हैं। कुछ प्रमाणीकरण हेडर्स को हटा दिया गया है, लेकिन बॉडी में संवेदनशील डेटा अभी भी दिखाई दे सकता है।

Node.js SDK से माइग्रेशन

यदि आप पुराने Node.js SDK से अपग्रेड कर रहे हैं, तो TypeScript SDK में सुधारित टाइप सुरक्षा और विशेषताएँ हैं:

View Migration Guide

जानें कि कैसे Node.js SDK से TypeScript SDK में माइग्रेट किया जाए

ऑटो-पैजिनेशन

DodoPayments API में सूची पद्धतियाँ पेजिनेटेड होती हैं। आप सभी पृष्ठों में आइटम्स को पुनरावृत्त करने के लिए for await … of सिंटैक्स का उपयोग कर सकते हैं:
async function fetchAllPayments() {
  const allPayments = [];
  // Automatically fetches more pages as needed.
  for await (const paymentListResponse of client.payments.list()) {
    allPayments.push(paymentListResponse);
  }
  return allPayments;
}
वैकल्पिक रूप से, आप एक समय में एक पृष्ठ का अनुरोध कर सकते हैं:
let page = await client.payments.list();
for (const paymentListResponse of page.items) {
  console.log(paymentListResponse);
}

// Convenience methods are provided for manually paginating:
while (page.hasNextPage()) {
  page = await page.getNextPage();
  // ...
}

आवश्यकताएँ

निम्नलिखित रनटाइम्स समर्थित हैं:
  • वेब ब्राउज़र्स (अप-टू-डेट Chrome, Firefox, Safari, Edge, और अधिक)
  • Node.js 20 LTS या बाद के (non-EOL) संस्करण
  • Deno v1.28.0 या उच्चतर
  • Bun 1.0 या बाद का
  • Cloudflare Workers
  • Vercel Edge Runtime
  • "node" वातावरण के साथ Jest 28 या अधिक
  • Nitro v2.6 या अधिक
TypeScript >= 4.9 समर्थित है।

संसाधन

GitHub Repository

स्रोत कोड देखें और योगदान करें

API Reference

संपूर्ण API डाक्यूमेंटेशन

Discord Community

सहायता प्राप्त करें और डेवलपर्स से जुड़ें

Report Issues

बग की रिपोर्ट करें या विशेषताओं का अनुरोध करें

समर्थन

TypeScript SDK के साथ मदद की आवश्यकता है?

योगदान

हम योगदान का स्वागत करते हैं! प्रारंभ करने के लिए contributing guidelines देखें।
Last modified on May 14, 2026