सुरक्षित, होस्टेड चेकआउट अनुभव बनाएं जो एक बार की खरीद और सब्सक्रिप्शन के लिए पूर्ण भुगतान प्रवाह को संभालते हैं, जिसमें पूर्ण अनुकूलन नियंत्रण होता है।
सत्र वैधता: चेकआउट सत्र डिफ़ॉल्ट रूप से 24 घंटे के लिए मान्य होते हैं। यदि आप अपने अनुरोध में confirm=true पास करते हैं, तो सत्र केवल 15 मिनट के लिए मान्य होगा।
import DodoPayments from 'dodopayments';// Initialize the Dodo Payments clientconst 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 routeapp.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' }); }});
कॉपी करें
import osfrom dodopayments import DodoPayments# Initialize the Dodo Payments clientclient = DodoPayments( bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), # This is the default and can be omitted environment="test_mode", # defaults to "live_mode")def create_checkout_session(): """ Create a checkout session for a single product with customer data pre-filled. Returns the session object containing checkout_url for customer redirection. """ try: session = client.checkout_sessions.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 checkout 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 print(f"Checkout URL: {session.checkout_url}") print(f"Session ID: {session.session_id}") return session except Exception as error: print(f"Failed to create checkout session: {error}") raise error# Example usage in a Flask routefrom flask import Flask, jsonify, requestapp = Flask(__name__)@app.route('/create-checkout', methods=['POST'])def create_checkout(): try: session = create_checkout_session() return jsonify({"checkout_url": session.checkout_url}) except Exception as error: return jsonify({"error": "Failed to create checkout session"}), 500
कॉपी करें
// Direct API call using fetch - useful for any JavaScript environmentasync function createCheckoutSession() { try { const response = await fetch('https://test.dodopayments.com/checkouts', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${process.env.DODO_PAYMENTS_API_KEY}` }, body: JSON.stringify({ // 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 checkout 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' } }) }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const session = await response.json(); // 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: Redirect user to checkoutcreateCheckoutSession().then(session => { window.location.href = session.checkout_url;});
अपने ग्राहक को खरीदारी पूरी करने के लिए चेकआउट URL पर भेजें।
कॉपी करें
// Redirect immediatelywindow.location.href = session.checkout_url;// Or open in new windowwindow.open(session.checkout_url, '_blank');
वैकल्पिक एकीकरण विकल्प: पुनर्निर्देशन के बजाय, आप ओवरले चेकआउट (मोडल ओवरले) या इनलाइन चेकआउट (पूर्ण रूप से एम्बेडेड) का उपयोग करके चेकआउट को सीधे अपने पृष्ठ में एम्बेड कर सकते हैं। दोनों विकल्प समान चेकआउट सत्र URL का उपयोग करते हैं।
3
वापसी को संभालें
भुगतान के बाद, ग्राहकों को आपके return_url पर अतिरिक्त क्वेरी पैरामीटर के साथ पुनर्निर्देशित किया जाता है।
चेकआउट सत्र में शामिल करने के लिए उत्पादों की सूची। प्रत्येक उत्पाद में आपके डोडो पेमेंट्स डैशबोर्ड से एक मान्य product_id होना चाहिए।
मिश्रित चेकआउट: आप एक बार के भुगतान उत्पादों और सब्सक्रिप्शन उत्पादों को एक ही चेकआउट सत्र में मिला सकते हैं। यह सेटअप शुल्क के साथ सब्सक्रिप्शन, हार्डवेयर बंडल के साथ SaaS, और अधिक जैसे शक्तिशाली उपयोग के मामलों को सक्षम करता है।
ग्राहक द्वारा भुगतान की जाने वाली राशि यदि pay_what_you_want सक्षम है। यदि अक्षम है, तो यह फ़ील्ड अनदेखी की जाएगी।फॉर्मेट: मुद्रा की सबसे छोटी इकाई में दर्शाया गया (जैसे, USD के लिए सेंट)। उदाहरण के लिए, $1.00 चार्ज करने के लिए, 100 पास करें।
अपने उत्पाद आईडी खोजें: आप अपने डोडो पेमेंट्स डैशबोर्ड में उत्पादों के तहत उत्पाद आईडी देख सकते हैं → विवरण देखें, या उत्पाद सूची API का उपयोग करके।
ग्राहक का फोन नंबर अंतरराष्ट्रीय प्रारूप में। कुछ भुगतान विधियों और धोखाधड़ी की रोकथाम के लिए आवश्यक।फॉर्मेट: देश कोड शामिल करें, जैसे "+1234567890" अमेरिकी नंबरों के लिए
दो-हरफ वाला ISO देश कोड (ISO 3166-1 alpha-2)। जब बिलिंग पते को प्रदान किया जाता है, तो यह फ़ील्ड हमेशा आवश्यक होती है।उदाहरण: "US" (संयुक्त राज्य अमेरिका), "CA" (कनाडा), "GB" (संयुक्त राज्य), "DE" (जर्मनी)
ग्राहकों के लिए चेकआउट के दौरान उपलब्ध भुगतान विधियों को नियंत्रित करें। यह विशिष्ट बाजारों या व्यावसायिक आवश्यकताओं के लिए अनुकूलित करने में मदद करता है।उपलब्ध विकल्प: 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 को बैकअप विकल्प के रूप में शामिल करें।
डिफ़ॉल्ट मुद्रा चयन को एक निश्चित बिलिंग मुद्रा के साथ ओवरराइड करें। ISO 4217 मुद्रा कोड का उपयोग करता है।समर्थित मुद्राएँ: USD, EUR, GBP, CAD, AUD, INR, और अधिक।उदाहरण: "USD" अमेरिकी डॉलर के लिए, "EUR" यूरो के लिए।
यह फ़ील्ड केवल तब प्रभावी होती है जब अनुकूली मूल्य निर्धारण सक्षम हो। यदि अनुकूली मूल्य निर्धारण अक्षम है, तो उत्पाद की डिफ़ॉल्ट मुद्रा का उपयोग किया जाएगा।
न्यूनतम पते संग्रह मोड सक्षम करें। जब सक्षम हो, तो चेकआउट केवल निम्नलिखित एकत्र करता है:
देश: कर निर्धारण के लिए हमेशा आवश्यक
ZIP/डाक कोड: केवल उन क्षेत्रों में जहां यह बिक्री कर, VAT, या GST गणना के लिए आवश्यक है।
यह अनावश्यक फ़ॉर्म फ़ील्ड को समाप्त करके चेकआउट में रुकावट को काफी कम करता है।
तेज चेकआउट पूर्णता के लिए न्यूनतम पते को सक्षम करें। पूर्ण पते संग्रह उन व्यवसायों के लिए उपलब्ध रहता है जिन्हें पूर्ण बिलिंग विवरण की आवश्यकता होती है।
न्यूनतम पते संग्रह मोड सक्षम करें। जब सक्षम हो, तो चेकआउट केवल निम्नलिखित एकत्र करता है:
देश: हमेशा कर निर्धारण के लिए आवश्यक
ZIP/डाक कोड: केवल उन क्षेत्रों में जहां यह बिक्री कर, VAT, या GST गणना के लिए आवश्यक है।
यह अनावश्यक फ़ॉर्म फ़ील्ड को समाप्त करके चेकआउट में रुकावट को काफी कम करता है।
तेज चेकआउट पूर्णता के लिए न्यूनतम पते को सक्षम करें। पूर्ण पते संग्रह उन व्यवसायों के लिए उपलब्ध रहता है जिन्हें पूर्ण बिलिंग विवरण की आवश्यकता होती है।
ग्राहक को पहले चार्ज के लिए उत्पाद की कीमत। यदि निर्दिष्ट नहीं किया गया है, तो उत्पाद की संग्रहीत कीमत का उपयोग किया जाएगा।फॉर्मेट: मुद्रा की सबसे छोटी इकाई में दर्शाया गया (जैसे, सेंट के लिए USD)। उदाहरण के लिए, $1.00 चार्ज करने के लिए, 100 पास करें।
क्या अनुकूली मुद्रा शुल्क उत्पाद की कीमत में शामिल किए जाने चाहिए (सत्य) या ऊपर जोड़े जाने चाहिए (असत्य)। यदि अनुकूली मूल्य निर्धारण सक्षम नहीं है, तो अनदेखा किया जाएगा।
billing_currency ओवरराइड केवल तब प्रभावी होता है जब आपके खाता सेटिंग्स में अनुकूली मुद्रा सक्षम हो। यदि अनुकूली मुद्रा अक्षम है, तो यह पैरामीटर कोई प्रभाव नहीं डालेगा।
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 प्रदान किया जाना चाहिए। भुगतान विधि की वैधता भुगतान की मुद्रा के साथ जांची जाएगी।
भुगतान विधि ग्राहक की होनी चाहिए और भुगतान मुद्रा के साथ संगत होनी चाहिए। यह लौटने वाले ग्राहकों के लिए एक-क्लिक खरीदारी को सक्षम करता है।
जब आपके पास एक कस्टम सफलता पृष्ठ हो जो डिफ़ॉल्ट भुगतान सफलता पृष्ठ की तुलना में बेहतर उपयोगकर्ता अनुभव प्रदान करता है, तो redirect_immediately: true का उपयोग करें। यह मोबाइल ऐप और एम्बेडेड चेकआउट प्रवाह के लिए विशेष रूप से उपयोगी है।
जब redirect_immediately सक्षम होता है, तो ग्राहकों को भुगतान पूर्ण होने के तुरंत बाद आपके return_url पर पुनर्निर्देशित किया जाता है, पूरी तरह से डिफ़ॉल्ट सफलता पृष्ठ को छोड़ते हुए।
पहले, जब आप डायनामिक लिंक के साथ भुगतान लिंक बनाते थे, तो आपको ग्राहक का पूरा बिलिंग पता प्रदान करना आवश्यक था।चेकआउट सत्र के साथ, यह अब आवश्यक नहीं है। आप बस जो भी जानकारी आपके पास है, उसे पास कर सकते हैं, और हम बाकी का ध्यान रखेंगे। उदाहरण के लिए:
यदि आप केवल ग्राहक के बिलिंग देश को जानते हैं, तो बस वही प्रदान करें।
चेकआउट प्रवाह स्वचालित रूप से भुगतान पृष्ठ पर जाने से पहले गायब विवरण एकत्र करेगा।
दूसरी ओर, यदि आपके पास पहले से सभी आवश्यक जानकारी है और आप सीधे भुगतान पृष्ठ पर जाना चाहते हैं, तो आप पूर्ण डेटा सेट पास कर सकते हैं और अपने अनुरोध शरीर में confirm=true शामिल कर सकते हैं।