मुख्य सामग्री पर जाएं
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 कुंजी को सुरक्षित रूप से पर्यावरण चर का उपयोग करके संग्रहीत करें। कभी भी उन्हें संस्करण नियंत्रण में न डालें या क्लाइंट-साइड कोड में उजागर न करें।

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

TypeScript पहले

सभी API अंत बिंदुओं के लिए व्यापक प्रकार की परिभाषाओं के साथ पूर्ण TypeScript समर्थन

स्वचालित-पृष्ठन

सूची प्रतिक्रियाओं के लिए स्वचालित पृष्ठन बड़े डेटा सेट के साथ काम करना आसान बनाता है

त्रुटि प्रबंधन

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

स्मार्ट पुनः प्रयास

अस्थायी त्रुटियों के लिए गुणनात्मक बैकऑफ के साथ कॉन्फ़िगर करने योग्य स्वचालित पुनः प्रयास

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

पर्यावरण चर

सुरक्षित कॉन्फ़िगरेशन के लिए पर्यावरण चर सेट करें:
.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 प्रतिक्रियाएँ) के कारण विफल अनुरोधों को गुणनात्मक बैकऑफ के साथ पुनः प्रयास करता है।

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

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

भुगतान जानकारी एकत्र करने के लिए एक चेकआउट सत्र उत्पन्न करें:
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({
  customer_id: 'cus_123',
  product_id: 'prod_456',
  price_id: 'price_789'
});

// Retrieve subscription usage history
const usageHistory = await client.subscriptions.retrieveUsageHistory('sub_123', {
  start_date: '2024-01-01T00:00:00Z',
  end_date: '2024-03-31T23:59:59Z'
});

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

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

उपयोग-आधारित बिलिंग के लिए कस्टम घटनाओं को ट्रैक करें:
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'
      }
    }
  ]
});
इवेंट्स को idempotency के लिए अद्वितीय event_id मान होना चाहिए। एक ही अनुरोध में डुप्लिकेट IDs अस्वीकृत कर दी जाती हैं, और मौजूदा IDs के साथ बाद के अनुरोधों को अनदेखा कर दिया जाता है।

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

उपयोग घटनाओं के बारे में विस्तृत जानकारी प्राप्त करें:
// 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,
  },
});

बुन

import DodoPayments from 'dodopayments';

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

डेनो

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 बेहतर प्रकार की सुरक्षा और सुविधाएँ प्रदान करता है:

माइग्रेशन गाइड देखें

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
  • Jest 28 या उससे अधिक के साथ "node" वातावरण
  • Nitro v2.6 या उससे अधिक
TypeScript >= 4.9 का समर्थन किया जाता है।

संसाधन

समर्थन

TypeScript SDK के साथ मदद चाहिए?

योगदान

हम योगदान का स्वागत करते हैं! शुरू करने के लिए योगदान दिशानिर्देश की जांच करें.