मुख्य सामग्री पर जाएं
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({
  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 अनुरोध और प्रतिक्रियाएँ, हेडर और बॉडी समेत लॉग की जाती हैं। कुछ प्रमाणीकरण हेडर को redact किया जाता है, लेकिन बॉडी में संवेदनशील डेटा अभी भी दिखाई दे सकता है।

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();
  // ...
}

आवश्यकताएँ

निम्नलिखित रनटाइम समर्थित हैं:
  • वेब ब्राउज़र (Up-to-date 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 के साथ मदद चाहिए?

योगदान

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