Use this file to discover all available pages before exploring further.
TypeScript SDK Dodo Payments REST API के लिए TypeScript और JavaScript अनुप्रयोगों के लिए सुविधाजनक सर्वर-साइड पहुंच प्रदान करता है। इसमें व्यापक प्रकार की परिभाषाएँ, त्रुटि प्रबंधन, पुनः प्रयास, समय सीमा, और निर्बाध भुगतान प्रसंस्करण के लिए स्वचालित-पृष्ठन शामिल हैं।
अपने 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 में उजागर न करें।
// Configure default for all requests (default is 2 retries)const client = new DodoPayments({ maxRetries: 0, // disable retries});// Override per-requestawait client.checkoutSessions.create( { product_cart: [{ product_id: 'product_id', quantity: 1 }] }, { maxRetries: 5 },);
SDK स्वचालित रूप से उन अनुरोधों को पुनः प्रयास करता है जो नेटवर्क त्रुटियों या सर्वर समस्याओं (5xx प्रतिक्रियाएँ) के कारण विफल हो जाते हैं, साथ ही exponential backoff के साथ।
// Create a subscriptionconst 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 को न्यूनतम मुद्रा संप्रदाय में व्यक्त किया जाता है।
इवेंट्स में अद्वितीय event_id मान होना चाहिए ताकि वे आइडेमोटेंसी बनें। उसी अनुरोध में डुप्लिकेट आईडी अस्वीकार कर दिए जाते हैं, और मौजूदा आईडी के साथ बाद के अनुरोधों को नज़रअंदाज़ किया जाता है।
उपयोग घटनाओं के बारे में विस्तृत जानकारी प्राप्त करें:
// Get a specific eventconst event = await client.usageEvents.retrieve('api_call_12345');// List events with filteringconst 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'});
import DodoPayments from 'dodopayments';import * as undici from 'undici';const proxyAgent = new undici.ProxyAgent('http://localhost:8888');const client = new DodoPayments({ fetchOptions: { dispatcher: proxyAgent, },});
पर्यावरण वेरिएबल्स या क्लाइंट विकल्पों का उपयोग करके लॉग का विवरण कन्ट्रोल करें:
// Via client optionconst client = new DodoPayments({ logLevel: 'debug', // Show all log messages});
# Via environment variableexport DODO_PAYMENTS_LOG=debug
उपलब्ध लॉग स्तर:
'debug' - डिबग संदेश, जानकारी, चेतावनी, और त्रुटियाँ दिखाएँ
'info' - जानकारी संदेश, चेतावनी, और त्रुटियाँ दिखाएँ
'warn' - चेतावनी और त्रुटियाँ दिखाएँ (डिफ़ॉल्ट)
'error' - केवल त्रुटियाँ दिखाएँ
'off' - सभी लॉगिंग को निष्क्रिय करें
डिबग स्तर पर, सभी HTTP अनुरोध और उत्तर लॉग की जाती हैं, जिसमें हेडर और बॉडी शामिल हैं। कुछ प्रमाणीकरण हेडर्स को हटा दिया गया है, लेकिन बॉडी में संवेदनशील डेटा अभी भी दिखाई दे सकता है।
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(); // ...}