मुख्य सामग्री पर जाएं
सत्र वैधता: चेकआउट सत्र डिफ़ॉल्ट रूप से 24 घंटे के लिए मान्य होते हैं। यदि आप अपने अनुरोध में confirm=true पास करते हैं, तो सत्र केवल 15 मिनट के लिए मान्य होगा।

पूर्वापेक्षाएँ

1

डोडो पेमेंट्स खाता

आपको API एक्सेस के साथ एक सक्रिय डोडो पेमेंट्स व्यापारी खाता चाहिए।
2

API क्रेडेंशियल्स

डोडो पेमेंट्स डैशबोर्ड से अपने API क्रेडेंशियल्स उत्पन्न करें:
3

उत्पाद सेटअप

चेकआउट सत्र लागू करने से पहले डोडो पेमेंट्स डैशबोर्ड में अपने उत्पाद बनाएं।

अपना पहला चेकआउट सत्र बनाना

import DodoPayments from 'dodopayments';

// Initialize the Dodo Payments client
const client = new DodoPayments({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  environment: 'test_mode', // defaults to 'live_mode'
});

async function createCheckoutSession() {
  try {
    const session = await client.checkoutSessions.create({
      // Products to sell - use IDs from your Dodo Payments dashboard
      product_cart: [
        {
          product_id: 'prod_123', // Replace with your actual product ID
          quantity: 1
        }
      ],
      
      // Pre-fill customer information to reduce friction
      customer: {
        email: 'customer@example.com',
        name: 'John Doe',
        phone_number: '+1234567890'
      },
      
      // Billing address for tax calculation and compliance
      billing_address: {
        street: '123 Main St',
        city: 'San Francisco',
        state: 'CA',
        country: 'US', // Required: ISO 3166-1 alpha-2 country code
        zipcode: '94102'
      },
      
      // Where to redirect after successful payment
      return_url: 'https://yoursite.com/checkout/success',
      
      // Custom data for your internal tracking
      metadata: {
        order_id: 'order_123',
        source: 'web_app'
      }
    });

    // Redirect your customer to this URL to complete payment
    console.log('Checkout URL:', session.checkout_url);
    console.log('Session ID:', session.session_id);
    
    return session;
    
  } catch (error) {
    console.error('Failed to create checkout session:', error);
    throw error;
  }
}

// Example usage in an Express.js route
app.post('/create-checkout', async (req, res) => {
  try {
    const session = await createCheckoutSession();
    res.json({ checkout_url: session.checkout_url });
  } catch (error) {
    res.status(500).json({ error: 'Failed to create checkout session' });
  }
});

API प्रतिक्रिया

उपरोक्त सभी विधियाँ समान प्रतिक्रिया संरचना लौटाती हैं:
{
  "session_id": "cks_Gi6KGJ2zFJo9rq9Ukifwa",
  "checkout_url": "https://test.checkout.dodopayments.com/session/cks_Gi6KGJ2zFJo9rq9Ukifwa"
}
1

चेकआउट URL प्राप्त करें

API प्रतिक्रिया से checkout_url निकालें।
2

अपने ग्राहक को पुनर्निर्देशित करें

अपने ग्राहक को खरीदारी पूरी करने के लिए चेकआउट URL पर निर्देशित करें।
// Redirect immediately
window.location.href = session.checkout_url;

// Or open in new window
window.open(session.checkout_url, '_blank');
वैकल्पिक एकीकरण विकल्प: पुनर्निर्देशित करने के बजाय, आप ओवरले चेकआउट (मोडल ओवरले) या इनलाइन चेकआउट (पूर्ण रूप से एम्बेडेड) का उपयोग करके सीधे अपनी पृष्ठ में चेकआउट एम्बेड कर सकते हैं। दोनों विकल्प समान चेकआउट सत्र URL का उपयोग करते हैं।
3

वापसी को संभालें

भुगतान के बाद, ग्राहक को आपके return_url पर अतिरिक्त क्वेरी पैरामीटर के साथ पुनर्निर्देशित किया जाता है।

अनुरोध शरीर

आवश्यक फ़ील्ड

प्रत्येक चेकआउट सत्र के लिए आवश्यक फ़ील्ड

वैकल्पिक फ़ील्ड

आपके चेकआउट अनुभव को अनुकूलित करने के लिए अतिरिक्त कॉन्फ़िगरेशन

आवश्यक फ़ील्ड

product_cart
array
आवश्यक
चेकआउट सत्र में शामिल करने के लिए उत्पादों की सूची। प्रत्येक उत्पाद में आपके डोडो पेमेंट्स डैशबोर्ड से एक मान्य product_id होना चाहिए।
मिश्रित चेकआउट: आप एक बार के भुगतान उत्पादों और सदस्यता उत्पादों को एक ही चेकआउट सत्र में मिला सकते हैं। यह सेटअप शुल्क के साथ सदस्यताओं, हार्डवेयर बंडल के साथ SaaS, और अधिक जैसे शक्तिशाली उपयोग के मामलों को सक्षम करता है।
अपने उत्पाद आईडी खोजें: आप अपने डोडो पेमेंट्स डैशबोर्ड में उत्पादों के तहत उत्पाद आईडी देख सकते हैं → विवरण देखें, या उत्पाद सूची API का उपयोग करके।

वैकल्पिक फ़ील्ड

इन फ़ील्ड्स को चेकआउट अनुभव को अनुकूलित करने और आपके भुगतान प्रवाह में व्यावसायिक तर्क जोड़ने के लिए कॉन्फ़िगर करें।
customer
object
ग्राहक जानकारी। आप या तो उनके ID का उपयोग करके एक मौजूदा ग्राहक को संलग्न कर सकते हैं या चेकआउट के दौरान एक नया ग्राहक रिकॉर्ड बना सकते हैं।
उनके ID का उपयोग करके चेकआउट सत्र में मौजूदा ग्राहक को संलग्न करें।
billing_address
object
सटीक कर गणना, धोखाधड़ी की रोकथाम, और नियामक अनुपालन के लिए बिलिंग पते की जानकारी।
जब confirm को true पर सेट किया जाता है, तो सभी बिलिंग पते के फ़ील्ड सफल सत्र निर्माण के लिए आवश्यक हो जाते हैं।
allowed_payment_method_types
array
ग्राहकों के लिए चेकआउट के दौरान उपलब्ध भुगतान विधियों को नियंत्रित करें। यह विशिष्ट बाजारों या व्यावसायिक आवश्यकताओं के लिए अनुकूलित करने में मदद करता है।उपलब्ध विकल्प: credit, debit, upi_collect, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, cashapp, multibanco, bancontact_card, eps, ideal, przelewy24, paypal
महत्वपूर्ण: चेकआउट विफलताओं को रोकने के लिए हमेशा credit और debit को बैकअप विकल्प के रूप में शामिल करें।
उदाहरण:
["apple_pay", "google_pay", "credit", "debit"]
billing_currency
string
डिफ़ॉल्ट मुद्रा चयन को एक निश्चित बिलिंग मुद्रा के साथ ओवरराइड करें। ISO 4217 मुद्रा कोड का उपयोग करता है।समर्थित मुद्राएँ: USD, EUR, GBP, CAD, AUD, INR, और अधिकउदाहरण: "USD" US डॉलर के लिए, "EUR" यूरो के लिए
यह फ़ील्ड केवल तभी प्रभावी है जब अनुकूली मूल्य निर्धारण सक्षम हो। यदि अनुकूली मूल्य निर्धारण अक्षम है, तो उत्पाद की डिफ़ॉल्ट मुद्रा का उपयोग किया जाएगा।
show_saved_payment_methods
boolean
डिफ़ॉल्ट:"false"
पुनः आने वाले ग्राहकों के लिए पहले से सहेजे गए भुगतान विधियों को प्रदर्शित करें, चेकआउट की गति और उपयोगकर्ता अनुभव में सुधार करें।
return_url
string
URL ग्राहकों को सफल भुगतान या रद्दीकरण के बाद पुनर्निर्देशित करने के लिए।
confirm
boolean
डिफ़ॉल्ट:"false"
यदि सत्य है, तो सभी सत्र विवरण तुरंत अंतिम रूप देता है। यदि आवश्यक डेटा गायब है, तो API एक त्रुटि फेंकेगा।
discount_code
string
चेकआउट सत्र पर एक छूट कोड लागू करें।
metadata
object
सत्र के बारे में अतिरिक्त जानकारी संग्रहीत करने के लिए कस्टम कुंजी-मूल्य जोड़े।
force_3ds
boolean
इस सत्र के लिए व्यापारी डिफ़ॉल्ट 3DS व्यवहार को ओवरराइड करें।
minimal_address
boolean
डिफ़ॉल्ट:"false"
न्यूनतम पते संग्रह मोड सक्षम करें। जब सक्षम हो, तो चेकआउट केवल एकत्र करता है:
  • देश: कर निर्धारण के लिए हमेशा आवश्यक
  • ZIP/डाक कोड: केवल उन क्षेत्रों में जहां यह बिक्री कर, VAT, या GST गणना के लिए आवश्यक है।
यह अनावश्यक फ़ॉर्म फ़ील्ड को समाप्त करके चेकआउट घर्षण को काफी कम करता है।
तेज चेकआउट पूर्ण करने के लिए न्यूनतम पते को सक्षम करें। पूर्ण पते संग्रह उन व्यवसायों के लिए उपलब्ध है जिन्हें पूर्ण बिलिंग विवरण की आवश्यकता होती है।
customization
object
चेकआउट इंटरफ़ेस की उपस्थिति और व्यवहार को अनुकूलित करें।
feature_flags
object
चेकआउट सत्र के लिए विशिष्ट सुविधाओं और व्यवहारों को कॉन्फ़िगर करें।
subscription_data
object
सदस्यता उत्पादों वाले चेकआउट सत्रों के लिए अतिरिक्त कॉन्फ़िगरेशन।

उपयोग के उदाहरण

यहाँ विभिन्न व्यावसायिक परिदृश्यों के लिए विभिन्न चेकआउट सत्र कॉन्फ़िगरेशन को प्रदर्शित करने वाले 10 व्यापक उदाहरण हैं:

1. सरल एकल उत्पाद चेकआउट

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_ebook_guide',
      quantity: 1
    }
  ],
  customer: {
    email: 'customer@example.com',
    name: 'John Doe'
  },
  return_url: 'https://yoursite.com/success'
});

2. मल्टी-प्रोडक्ट कार्ट

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_laptop',
      quantity: 1
    },
    {
      product_id: 'prod_mouse',
      quantity: 2
    },
    {
      product_id: 'prod_warranty',
      quantity: 1
    }
  ],
  customer: {
    email: 'customer@example.com',
    name: 'John Doe',
    phone_number: '+1234567890'
  },
  billing_address: {
    street: '123 Tech Street',
    city: 'San Francisco',
    state: 'CA',
    country: 'US',
    zipcode: '94102'
  },
  return_url: 'https://electronics-store.com/order-confirmation'
});

3. परीक्षण अवधि के साथ सदस्यता

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_monthly_plan',
      quantity: 1
    }
  ],
  subscription_data: {
    trial_period_days: 14
  },
  customer: {
    email: 'user@startup.com',
    name: 'Jane Smith'
  },
  return_url: 'https://saas-app.com/onboarding',
  metadata: {
    plan_type: 'professional',
    referral_source: 'google_ads'
  }
});

4. पूर्व-निर्धारित चेकआउट

जब confirm को true पर सेट किया जाता है, तो ग्राहक सीधे चेकआउट पृष्ठ पर ले जाया जाएगा, किसी भी पुष्टि चरण को बायपास करते हुए।
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_premium_course',
      quantity: 1
    }
  ],
  customer: {
    email: 'student@university.edu',
    name: 'Alex Johnson',
    phone_number: '+1555123456'
  },
  billing_address: {
    street: '456 University Ave',
    city: 'Boston',
    state: 'MA',
    country: 'US',
    zipcode: '02134'
  },
  confirm: true,
  return_url: 'https://learning-platform.com/course-access',
  metadata: {
    course_category: 'programming',
    enrollment_date: '2024-01-15'
  }
});

5. मुद्रा ओवरराइड के साथ चेकआउट

billing_currency ओवरराइड केवल तब प्रभावी होता है जब आपके खाता सेटिंग्स में अनुकूली मुद्रा सक्षम हो। यदि अनुकूली मुद्रा अक्षम है, तो यह पैरामीटर कोई प्रभाव नहीं डालेगा।
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_consulting_service',
      quantity: 1
    }
  ],
  customer: {
    email: 'client@company.co.uk',
    name: 'Oliver Williams'
  },
  billing_address: {
    street: '789 Business Park',
    city: 'London',
    state: 'England',
    country: 'GB',
    zipcode: 'SW1A 1AA'
  },
  billing_currency: 'GBP',
  feature_flags: {
    allow_currency_selection: true,
    allow_tax_id: true
  },
  return_url: 'https://consulting-firm.com/service-confirmation'
});

6. पुनः आने वाले ग्राहकों के लिए सहेजे गए भुगतान विधियाँ

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_monthly_subscription',
      quantity: 1
    }
  ],
  customer: {
    email: 'returning.customer@example.com',
    name: 'Robert Johnson',
    phone_number: '+1555987654'
  },
  show_saved_payment_methods: true,
  feature_flags: {
    allow_phone_number_collection: true,
    always_create_new_customer: false
  },
  return_url: 'https://subscription-service.com/welcome-back',
  metadata: {
    customer_tier: 'premium',
    account_age: 'returning'
  }
});

7. कर आईडी संग्रह के साथ B2B चेकआउट

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_enterprise_license',
      quantity: 5
    }
  ],
  customer: {
    email: 'procurement@enterprise.com',
    name: 'Sarah Davis',
    phone_number: '+1800555000'
  },
  billing_address: {
    street: '1000 Corporate Blvd',
    city: 'New York',
    state: 'NY',
    country: 'US',
    zipcode: '10001'
  },
  feature_flags: {
    allow_tax_id: true,
    allow_phone_number_collection: true,
    always_create_new_customer: false
  },
  return_url: 'https://enterprise-software.com/license-delivery',
  metadata: {
    customer_type: 'enterprise',
    contract_id: 'ENT-2024-001',
    sales_rep: 'john.sales@company.com'
  }
});

8. छूट कोड के साथ डार्क थीम चेकआउट

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_gaming_chair',
      quantity: 1
    }
  ],
  discount_code: 'BLACKFRIDAY2024',
  customization: {
    theme: 'dark',
    show_order_details: true,
    show_on_demand_tag: false
  },
  feature_flags: {
    allow_discount_code: true
  },
  customer: {
    email: 'gamer@example.com',
    name: 'Mike Chen'
  },
  return_url: 'https://gaming-store.com/order-complete'
});

9. क्षेत्रीय भुगतान विधियाँ (भारत के लिए UPI)

UPI कॉन्फ़िगरेशन और परीक्षण के बारे में विस्तृत जानकारी के लिए, भारत भुगतान विधियाँ पृष्ठ पर जाएँ।
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_online_course_hindi',
      quantity: 1
    }
  ],
  allowed_payment_method_types: [
    'upi_collect',
    'credit',
    'debit'
  ],
  customer: {
    email: 'student@example.in',
    name: 'Priya Sharma',
    phone_number: '+919876543210'
  },
  billing_address: {
    street: 'MG Road',
    city: 'Bangalore',
    state: 'Karnataka',
    country: 'IN',
    zipcode: '560001'
  },
  billing_currency: 'INR',
  return_url: 'https://education-platform.in/course-access',
  metadata: {
    region: 'south_india',
    language: 'hindi'
  }
});

10. BNPL (खरीदें अब, बाद में भुगतान करें) चेकआउट

BNPL कॉन्फ़िगरेशन और परीक्षण के बारे में विस्तृत जानकारी के लिए, खरीदें अब, बाद में भुगतान करें (BNPL) पृष्ठ पर जाएँ।
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_luxury_watch',
      quantity: 1
    }
  ],
  allowed_payment_method_types: [
    'klarna',
    'afterpay_clearpay',
    'credit',
    'debit'
  ],
  customer: {
    email: 'fashion.lover@example.com',
    name: 'Emma Thompson',
    phone_number: '+1234567890'
  },
  billing_address: {
    street: '555 Fashion Ave',
    city: 'Los Angeles',
    state: 'CA',
    country: 'US',
    zipcode: '90210'
  },
  feature_flags: {
    allow_phone_number_collection: true
  },
  return_url: 'https://luxury-store.com/purchase-confirmation',
  metadata: {
    product_category: 'luxury',
    price_range: 'high_value'
  }
});

11. त्वरित चेकआउट के लिए मौजूदा भुगतान विधियों का उपयोग करना

ग्राहक की सहेजी हुई भुगतान विधि का उपयोग करके एक चेकआउट सत्र बनाएं जो तुरंत प्रोसेस होता है, भुगतान विधि संग्रहण को छोड़कर:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_premium_plan',
      quantity: 1
    }
  ],
  customer: {
    customer_id: 'cus_123'  // Required when using payment_method_id
  },
  payment_method_id: 'pm_abc123',  // Use customer's saved payment method
  confirm: true,  // Required when using payment_method_id
  return_url: 'https://yourapp.com/success'
});
जब payment_method_id का उपयोग करते हैं, तो confirm को true पर सेट किया जाना चाहिए और एक मौजूदा customer_id प्रदान किया जाना चाहिए। भुगतान विधि को भुगतान की मुद्रा के साथ पात्रता के लिए मान्य किया जाएगा।
भुगतान विधि ग्राहक की होनी चाहिए और भुगतान मुद्रा के साथ संगत होनी चाहिए। यह लौटने वाले ग्राहकों के लिए एक-क्लिक खरीदारी को सक्षम करती है।

12. साफ़ भुगतान URLs के लिए संक्षिप्त लिंक

व्यक्तिगत स्लग के साथ संक्षिप्त, साझा करने योग्य भुगतान लिंक उत्पन्न करें:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_monthly_subscription',
      quantity: 1
    }
  ],
  short_link: true,  // Generate a shortened payment link
  return_url: 'https://yourapp.com/success',
  customer: {
    email: 'customer@example.com',
    name: 'John Doe'
  }
});

// The checkout_url will be a shortened, cleaner link
console.log(session.checkout_url);  // e.g., https://checkout.dodopayments.com/buy/abc123
संक्षिप्त लिंक SMS, ईमेल या सोशल मीडिया साझा करने के लिए एकदम सही हैं। ये लंबे URLs की तुलना में याद रखने में आसान होते हैं और अधिक ग्राहक विश्वास का निर्माण करते हैं।

13. भुगतान सफलता पृष्ठ को तुरंत पुनर्निर्देशित करना छोड़ें

भुगतान पूरा होने के बाद ग्राहकों को तुरंत पुनर्निर्देशित करें, डिफ़ॉल्ट सफलता पृष्ठ को बाईपास करते हुए:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_digital_product',
      quantity: 1
    }
  ],
  feature_flags: {
    redirect_immediately: true  // Skip success page, redirect immediately
  },
  return_url: 'https://yourapp.com/success',
  customer: {
    email: 'customer@example.com',
    name: 'Jane Smith'
  }
});
जब आपके पास एक कस्टम सफलता पृष्ठ हो जो डिफ़ॉल्ट भुगतान सफलता पृष्ठ की तुलना में बेहतर उपयोगकर्ता अनुभव प्रदान करता है, तो redirect_immediately: true का उपयोग करें। यह मोबाइल ऐप और एम्बेडेड चेकआउट फ़्लो के लिए विशेष रूप से उपयोगी है।
जब redirect_immediately सक्षम होता है, तो ग्राहकों को भुगतान पूर्ण होने के तुरंत बाद आपके return_url पर पुनर्निर्देशित किया जाता है, डिफ़ॉल्ट सफलता पृष्ठ को पूरी तरह से छोड़कर।

चेकआउट सत्रों का पूर्वावलोकन करना

चेकआउट सत्र बनाने से पहले, आप करों, छूटों और कुलों सहित मूल्य निर्धारण का विघटन पूर्वावलोकन कर सकते हैं। यह ग्राहकों को चेकआउट में जाने से पहले सटीक मूल्य निर्धारण दिखाने के लिए उपयोगी है।
const preview = await client.checkoutSessions.preview({
  product_cart: [
    { product_id: 'prod_123', quantity: 1 }
  ],
  billing_address: {
    country: 'US',
    state: 'CA',
    zipcode: '94102'
  },
  discount_code: 'SAVE20'
});

console.log('Subtotal:', preview.subtotal);
console.log('Tax:', preview.tax);
console.log('Discount:', preview.discount);
console.log('Total:', preview.total);

पूर्वावलोकन API संदर्भ

संपूर्ण पूर्वावलोकन एंडपॉइंट दस्तावेज़ देखें।

गतिशील लिंक से चेकआउट सत्र में जाना

प्रमुख अंतर

पहले, जब आप डायनेमिक लिंक के साथ भुगतान लिंक बनाते थे, तो आपको ग्राहक का पूरा बिलिंग पता प्रदान करना आवश्यक था। चेकआउट सत्रों के साथ, यह अब आवश्यक नहीं है। आप बस जो भी जानकारी आपके पास है, उसे पास कर सकते हैं, और हम शेष कार्य करेंगे। उदाहरण के लिए:
  • यदि आप केवल ग्राहक के बिलिंग देश को जानते हैं, तो केवल वही प्रदान करें।
  • चेकआउट फ़्लो स्वतः गायब जानकारी एकत्र करेगा, इससे पहले कि ग्राहक भुगतान पृष्ठ पर जाए।
  • दूसरी ओर, यदि आपके पास पहले से सभी आवश्यक जानकारी है और आप सीधे भुगतान पृष्ठ पर जाना चाहते हैं, तो आप पूरा डेटा सेट पास कर सकते हैं और अपने अनुरोध शरीर में confirm=true को शामिल कर सकते हैं।

माइग्रेशन प्रक्रिया

डायनेमिक लिंक से चेकआउट सत्र में माइग्रेट करना सरल है:
1

अपने एकीकरण को अपडेट करें

अपने एकीकरण को नए API या SDK विधि का उपयोग करने के लिए अपडेट करें।
2

अनुरोध डेटा को समायोजित करें

चेकआउट सत्र फॉर्मेट के अनुसार अनुरोध डेटा को समायोजित करें।
3

बस इतना ही!

हाँ। आपकी ओर से कोई अतिरिक्त संचालन या विशेष माइग्रेशन चरण की आवश्यकता नहीं है।