मुख्य सामग्री पर जाएं
सत्र वैधता: चेकआउट सत्र डिफ़ॉल्ट रूप से 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: '[email protected]',
        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');
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, upi_intent, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, sepa, ach, 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" अमेरिकी डॉलर के लिए, "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: '[email protected]',
    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: '[email protected]',
    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: '[email protected]',
    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: '[email protected]',
    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: '[email protected]',
    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: '[email protected]',
    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: '[email protected]',
    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: '[email protected]'
  }
});

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: '[email protected]',
    name: 'Mike Chen'
  },
  return_url: 'https://gaming-store.com/order-complete'
});

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

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_online_course_hindi',
      quantity: 1
    }
  ],
  allowed_payment_method_types: [
    'upi_collect',
    'upi_intent',
    'credit',
    'debit'
  ],
  customer: {
    email: '[email protected]',
    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 (बाय नाउ पे लेटर) चेकआउट

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_luxury_watch',
      quantity: 1
    }
  ],
  allowed_payment_method_types: [
    'klarna',
    'affirm',
    'afterpay_clearpay',
    'credit',
    'debit'
  ],
  customer: {
    email: '[email protected]',
    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'
  }
});

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

मुख्य अंतर

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

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

गतिशील लिंक से चेकआउट सत्रों में माइग्रेट करना सीधा है:
1

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

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

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

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

बस इतना ही!

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