मुख्य सामग्री पर जाएं

अवलोकन

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

यह कैसे काम करता है

इनलाइन चेकआउट आपकी वेबसाइट या ऐप में एक सुरक्षित डोडो पेमेंट्स फ्रेम को एम्बेड करके काम करता है। चेकआउट फ्रेम ग्राहक जानकारी एकत्र करने और भुगतान विवरण कैप्चर करने का काम करता है। आपकी पृष्ठ पर आइटम सूची, कुल और चेकआउट पर जो कुछ है उसे बदलने के विकल्प प्रदर्शित होते हैं। SDK आपकी पृष्ठ और चेकआउट फ्रेम के बीच बातचीत करने की अनुमति देता है। डोडो पेमेंट्स स्वचालित रूप से एक चेकआउट पूरा होने पर एक सदस्यता बनाता है, जिसे आप प्रावधान करने के लिए तैयार कर सकते हैं।
इनलाइन चेकआउट फ्रेम सभी संवेदनशील भुगतान जानकारी को सुरक्षित रूप से संभालता है, आपके अंत में अतिरिक्त प्रमाणन के बिना PCI अनुपालन सुनिश्चित करता है।

एक अच्छा इनलाइन चेकआउट क्या बनाता है?

यह महत्वपूर्ण है कि ग्राहकों को पता हो कि वे किससे खरीद रहे हैं, वे क्या खरीद रहे हैं, और वे कितना भुगतान कर रहे हैं। एक इनलाइन चेकआउट बनाने के लिए जो अनुपालन में हो और रूपांतरण के लिए अनुकूलित हो, आपकी कार्यान्वयन में शामिल होना चाहिए:
आवश्यक तत्वों के लेबल के साथ इनलाइन चेकआउट उदाहरण

आवश्यक तत्वों के साथ उदाहरण इनलाइन चेकआउट लेआउट

  1. दोहराने की जानकारी: यदि यह दोहराने वाला है, तो यह कितनी बार दोहराता है और नवीनीकरण पर कुल कितना भुगतान करना है। यदि यह एक परीक्षण है, तो परीक्षण कितने समय तक चलता है।
  2. आइटम विवरण: जो खरीदा जा रहा है उसका विवरण।
  3. लेनदेन कुल: लेनदेन कुल, जिसमें उप-योग, कुल कर, और समग्र कुल शामिल हैं। सुनिश्चित करें कि मुद्रा भी शामिल है।
  4. डोडो पेमेंट्स फ़ुटर: पूरा इनलाइन चेकआउट फ्रेम, जिसमें चेकआउट फ़ुटर शामिल है जिसमें डोडो पेमेंट्स, हमारी बिक्री की शर्तें, और हमारी गोपनीयता नीति के बारे में जानकारी है।
  5. रिफंड नीति: आपकी रिफंड नीति का एक लिंक, यदि यह डोडो पेमेंट्स की मानक रिफंड नीति से भिन्न है।
हमेशा पूरा इनलाइन चेकआउट फ्रेम प्रदर्शित करें, जिसमें फ़ुटर शामिल है। कानूनी जानकारी को हटाना या छिपाना अनुपालन आवश्यकताओं का उल्लंघन करता है।

ग्राहक यात्रा

चेकआउट प्रवाह आपकी चेकआउट सत्र कॉन्फ़िगरेशन द्वारा निर्धारित होता है। जिस तरह से आप चेकआउट सत्र को कॉन्फ़िगर करते हैं, उसके आधार पर, ग्राहक एक चेकआउट का अनुभव करेंगे जो एक ही पृष्ठ पर सभी जानकारी प्रस्तुत कर सकता है या कई चरणों में।
1

ग्राहक चेकआउट खोलता है

आप आइटम या एक मौजूदा लेनदेन पास करके इनलाइन चेकआउट खोल सकते हैं। पृष्ठ पर जानकारी दिखाने और अपडेट करने के लिए SDK का उपयोग करें, और ग्राहक इंटरैक्शन के आधार पर आइटम अपडेट करने के लिए SDK विधियों का उपयोग करें।आइटम सूची और भुगतान फॉर्म के साथ प्रारंभिक चेकआउट पृष्ठ
2

ग्राहक अपने विवरण दर्ज करता है

इनलाइन चेकआउट पहले ग्राहकों से उनके ईमेल पते, उनके देश का चयन करने, और (जहां आवश्यक हो) उनके ZIP या पोस्टल कोड दर्ज करने के लिए कहता है। यह चरण सभी आवश्यक जानकारी एकत्र करता है ताकि कर और उपलब्ध भुगतान विकल्पों का निर्धारण किया जा सके।आप ग्राहक विवरण को पूर्व-भर सकते हैं और अनुभव को सरल बनाने के लिए सहेजे गए पते प्रस्तुत कर सकते हैं।
3

ग्राहक भुगतान विधि का चयन करता है

अपने विवरण दर्ज करने के बाद, ग्राहकों को उपलब्ध भुगतान विधियों और भुगतान फॉर्म के साथ प्रस्तुत किया जाता है। विकल्पों में क्रेडिट या डेबिट कार्ड, PayPal, Apple Pay, Google Pay, और उनके स्थान के आधार पर अन्य स्थानीय भुगतान विधियाँ शामिल हो सकती हैं।यदि उपलब्ध हो तो चेकआउट को तेज़ करने के लिए सहेजे गए भुगतान विधियों को प्रदर्शित करें।उपलब्ध भुगतान विधियाँ और कार्ड विवरण फॉर्म
4

चेकआउट पूरा हुआ

डोडो पेमेंट्स हर भुगतान को उस बिक्री के लिए सबसे अच्छे अधिग्रहणकर्ता के पास रूट करता है ताकि सफलता की सबसे अच्छी संभावना मिल सके। ग्राहक एक सफलता कार्यप्रवाह में प्रवेश करते हैं जिसे आप बना सकते हैं।पुष्टि चेकमार्क के साथ सफलता स्क्रीन
5

डोडो पेमेंट्स सदस्यता बनाता है

डोडो पेमेंट्स स्वचालित रूप से ग्राहक के लिए एक सदस्यता बनाता है, जिसे आप प्रावधान करने के लिए तैयार कर सकते हैं। ग्राहक द्वारा उपयोग की गई भुगतान विधि नवीनीकरण या सदस्यता परिवर्तनों के लिए फ़ाइल पर रखी जाती है।Webhook सूचना के साथ बनाई गई सदस्यता

त्वरित प्रारंभ

कुछ कोड की पंक्तियों में Dodo Payments इनलाइन चेकआउट के साथ शुरू करें:
import { DodoPayments } from "dodopayments-checkout";

// Initialize the SDK for inline mode
DodoPayments.Initialize({
  mode: "test",
  displayType: "inline",
  onEvent: (event) => {
    console.log("Checkout event:", event);
  },
});

// Open checkout in a specific container
DodoPayments.Checkout.open({
  checkoutUrl: "https://test.dodopayments.com/session/cks_123",
  elementId: "dodo-inline-checkout" // ID of the container element
});
सुनिश्चित करें कि आपके पृष्ठ पर संबंधित id के साथ एक कंटेनर तत्व है: <div id="dodo-inline-checkout"></div>

चरण-दर-चरण एकीकरण गाइड

1

SDK स्थापित करें

Dodo Payments चेकआउट SDK स्थापित करें:
npm install dodopayments-checkout
2

इनलाइन डिस्प्ले के लिए SDK प्रारंभ करें

SDK को प्रारंभ करें और displayType: 'inline' निर्दिष्ट करें। आपको अपने UI को वास्तविक समय में कर और कुल गणनाओं के साथ अपडेट करने के लिए checkout.breakdown इवेंट के लिए भी सुनना चाहिए।
import { DodoPayments } from "dodopayments-checkout";

DodoPayments.Initialize({
  mode: "test",
  displayType: "inline",
  onEvent: (event) => {
    if (event.event_type === "checkout.breakdown") {
      const breakdown = event.data?.message;
      // Update your UI with breakdown.subTotal, breakdown.tax, breakdown.total, etc.
    }
  },
});
3

एक कंटेनर तत्व बनाएं

अपने HTML में एक तत्व जोड़ें जहाँ चेकआउट फ्रेम इंजेक्ट किया जाएगा:
<div id="dodo-inline-checkout"></div>
4

चेकआउट खोलें

DodoPayments.Checkout.open() को checkoutUrl और आपके कंटेनर के elementId के साथ कॉल करें:
DodoPayments.Checkout.open({
  checkoutUrl: "https://test.dodopayments.com/session/cks_123",
  elementId: "dodo-inline-checkout"
});
5

अपने एकीकरण का परीक्षण करें

  1. अपने विकास सर्वर को प्रारंभ करें:
npm run dev
  1. चेकआउट प्रवाह का परीक्षण करें:
    • इनलाइन फ्रेम में अपना ईमेल और पता विवरण दर्ज करें।
    • सत्यापित करें कि आपका कस्टम ऑर्डर सारांश वास्तविक समय में अपडेट होता है।
    • परीक्षण क्रेडेंशियल्स का उपयोग करके भुगतान प्रवाह का परीक्षण करें।
    • पुष्टि करें कि रीडायरेक्ट सही ढंग से काम करते हैं।
यदि आपने onEvent कॉलबैक में कंसोल लॉग जोड़ा है, तो आपको अपने ब्राउज़र कंसोल में checkout.breakdown इवेंट्स लॉग होते हुए दिखाई देंगे।
6

लाइव जाएं

जब आप उत्पादन के लिए तैयार हों:
  1. मोड को 'live' में बदलें:
DodoPayments.Initialize({
  mode: "live",
  displayType: "inline",
  onEvent: (event) => {
    // Handle events
  }
});
  1. अपने चेकआउट URLs को अपने बैकएंड से लाइव चेकआउट सत्रों का उपयोग करने के लिए अपडेट करें।
  2. उत्पादन में पूरे प्रवाह का परीक्षण करें।

पूर्ण React उदाहरण

यह उदाहरण दिखाता है कि कैसे इनलाइन चेकआउट के साथ एक कस्टम ऑर्डर सारांश को लागू किया जाए, उन्हें checkout.breakdown इवेंट का उपयोग करके समन्वयित रखा जाए।
"use client";

import { useEffect, useState } from 'react';
import { DodoPayments, CheckoutBreakdownData } from 'dodopayments-checkout';

export default function CheckoutPage() {
  const [breakdown, setBreakdown] = useState<Partial<CheckoutBreakdownData>>({});

  useEffect(() => {
    // 1. Initialize the SDK
    DodoPayments.Initialize({
      mode: 'test',
      displayType: 'inline',
      onEvent: (event) => {
        // 2. Listen for the 'checkout.breakdown' event
        if (event.event_type === "checkout.breakdown") {
          const message = event.data?.message as CheckoutBreakdownData;
          if (message) setBreakdown(message);
        }
      }
    });

    // 3. Open the checkout in the specified container
    DodoPayments.Checkout.open({
      checkoutUrl: 'https://test.dodopayments.com/session/cks_123',
      elementId: 'dodo-inline-checkout'
    });

    return () => DodoPayments.Checkout.close();
  }, []);

  const format = (amt: number | null | undefined, curr: string | null | undefined) => 
    amt != null && curr ? `${curr} ${(amt/100).toFixed(2)}` : '0.00';

  const currency = breakdown.currency ?? breakdown.finalTotalCurrency ?? '';

  return (
    <div className="flex flex-col md:flex-row min-h-screen">
      {/* Left Side - Checkout Form */}
      <div className="w-full md:w-1/2 flex items-center">
        <div id="dodo-inline-checkout" className='w-full' />
      </div>

      {/* Right Side - Custom Order Summary */}
      <div className="w-full md:w-1/2 p-8 bg-gray-50">
        <h2 className="text-2xl font-bold mb-4">Order Summary</h2>
        <div className="space-y-2">
          {breakdown.subTotal && (
            <div className="flex justify-between">
              <span>Subtotal</span>
              <span>{format(breakdown.subTotal, currency)}</span>
            </div>
          )}
          {breakdown.discount && (
            <div className="flex justify-between">
              <span>Discount</span>
              <span>{format(breakdown.discount, currency)}</span>
            </div>
          )}
          {breakdown.tax != null && (
            <div className="flex justify-between">
              <span>Tax</span>
              <span>{format(breakdown.tax, currency)}</span>
            </div>
          )}
          <hr />
          {(breakdown.finalTotal ?? breakdown.total) && (
            <div className="flex justify-between font-bold text-xl">
              <span>Total</span>
              <span>{format(breakdown.finalTotal ?? breakdown.total, breakdown.finalTotalCurrency ?? currency)}</span>
            </div>
          )}
        </div>
      </div>
    </div>
  );
}

API संदर्भ

कॉन्फ़िगरेशन

प्रारंभिक विकल्प

interface InitializeOptions {
  mode: "test" | "live";
  displayType: "inline"; // Required for inline checkout
  onEvent: (event: CheckoutEvent) => void;
}
विकल्पप्रकारआवश्यकविवरण
mode"test" | "live"हाँपर्यावरण मोड।
displayType"inline" | "overlay"हाँचेकआउट को एम्बेड करने के लिए "inline" पर सेट किया जाना चाहिए।
onEventfunctionहाँचेकआउट इवेंट्स को संभालने के लिए कॉलबैक फ़ंक्शन।

चेकआउट विकल्प

interface CheckoutOptions {
  checkoutUrl: string;
  elementId: string; // Required for inline checkout
  options?: {
    showTimer?: boolean;
    showSecurityBadge?: boolean;
    manualRedirect?: boolean;
    payButtonText?: string;
  };
}
विकल्पप्रकारआवश्यकविवरण
checkoutUrlstringहाँचेकआउट सत्र URL।
elementIdstringहाँवह id DOM तत्व का स्थान जहाँ चेकआउट प्रदर्शित होना चाहिए।
options.showTimerbooleanनहींचेकआउट टाइमर को दिखाना या छिपाना। डिफ़ॉल्ट true है। जब अक्षम किया जाता है, तो आपको सत्र समाप्त होने पर checkout.link_expired घटना प्राप्त होगी।
options.showSecurityBadgebooleanनहींसुरक्षा बैज को दिखाना या छिपाना। डिफ़ॉल्ट true है।
options.manualRedirectbooleanनहींजब सक्षम किया जाता है, तो चेकआउट पूरा होने के बाद स्वचालित रूप से पुनर्निर्देशित नहीं होगा। इसके बजाय, आपको checkout.status और checkout.redirect_requested घटनाएँ प्राप्त होंगी ताकि आप पुनर्निर्देशन को स्वयं संभाल सकें।
options.payButtonTextstringनहींभुगतान बटन पर प्रदर्शित करने के लिए कस्टम पाठ।

विधियाँ

चेकआउट खोलें

निर्दिष्ट कंटेनर में चेकआउट फ्रेम खोलता है।
DodoPayments.Checkout.open({
  checkoutUrl: "https://test.dodopayments.com/session/cks_123",
  elementId: "dodo-inline-checkout"
});
आप चेकआउट व्यवहार को अनुकूलित करने के लिए अतिरिक्त विकल्प भी पास कर सकते हैं:
DodoPayments.Checkout.open({
  checkoutUrl: "https://test.dodopayments.com/session/cks_123",
  elementId: "dodo-inline-checkout",
  options: {
    showTimer: false,
    showSecurityBadge: false,
    manualRedirect: true,
    payButtonText: "Pay Now",
  },
});
manualRedirect का उपयोग करते समय, अपने onEvent कॉलबैक में चेकआउट पूर्णता को संभालें:
DodoPayments.Initialize({
  mode: "test",
  displayType: "inline",
  onEvent: (event) => {
    if (event.event_type === "checkout.status") {
      const status = event.data?.message?.status;
      // Handle status: "succeeded", "failed", or "processing"
    }
    if (event.event_type === "checkout.redirect_requested") {
      const redirectUrl = event.data?.message?.redirect_to;
      // Redirect the customer manually
      window.location.href = redirectUrl;
    }
    if (event.event_type === "checkout.link_expired") {
      // Handle expired checkout session
    }
  },
});

चेकआउट बंद करें

प्रोग्रामेटिक रूप से चेकआउट फ्रेम को हटा देता है और इवेंट लिस्नर्स को साफ करता है।
DodoPayments.Checkout.close();

स्थिति की जांच करें

यह लौटाता है कि चेकआउट फ्रेम वर्तमान में इंजेक्ट किया गया है या नहीं।
const isOpen = DodoPayments.Checkout.isOpen();
// Returns: boolean

घटनाएँ

SDK वास्तविक समय की घटनाएँ प्रदान करता है onEvent कॉलबैक के माध्यम से। इनलाइन चेकआउट के लिए, checkout.breakdown विशेष रूप से आपके UI को समन्वयित करने के लिए उपयोगी है।
घटना प्रकारविवरण
checkout.openedचेकआउट फ्रेम लोड हो गया है।
checkout.breakdownजब कीमतें, कर या छूट अपडेट होती हैं, तब फायर किया जाता है।
checkout.customer_details_submittedग्राहक विवरण प्रस्तुत किए गए हैं।
checkout.redirectचेकआउट पुनर्निर्देशित करेगा (जैसे, बैंक पृष्ठ पर)।
checkout.errorचेकआउट के दौरान एक त्रुटि हुई।
checkout.link_expiredजब चेकआउट सत्र समाप्त होता है, तब फायर किया जाता है। केवल तब प्राप्त होता है जब showTimer को false पर सेट किया गया है।
checkout.statusजब manualRedirect सक्षम होता है, तब फायर किया जाता है। इसमें चेकआउट स्थिति होती है (succeeded, failed, या processing)।
checkout.redirect_requestedजब manualRedirect सक्षम होता है, तब फायर किया जाता है। इसमें ग्राहक को पुनर्निर्देशित करने के लिए URL होता है।

चेकआउट ब्रेकडाउन डेटा

checkout.breakdown घटना निम्नलिखित डेटा प्रदान करती है:
interface CheckoutBreakdownData {
  subTotal?: number;          // Amount in cents
  discount?: number;         // Amount in cents
  tax?: number;              // Amount in cents
  total?: number;            // Amount in cents
  currency?: string;         // e.g., "USD"
  finalTotal?: number;       // Final amount including adjustments
  finalTotalCurrency?: string; // Currency for the final total
}

चेकआउट स्थिति घटना डेटा

जब manualRedirect सक्षम होता है, तो आपको checkout.status घटना प्राप्त होती है जिसमें निम्नलिखित डेटा होता है:
interface CheckoutStatusEventData {
  message: {
    status?: "succeeded" | "failed" | "processing";
  };
}

चेकआउट पुनर्निर्देशन अनुरोध की गई घटना डेटा

जब manualRedirect सक्षम होता है, तो आपको checkout.redirect_requested घटना प्राप्त होती है जिसमें निम्नलिखित डेटा होता है:
interface CheckoutRedirectRequestedEventData {
  message: {
    redirect_to?: string;
  };
}

ब्रेकडाउन घटना को समझना

checkout.breakdown घटना आपके एप्लिकेशन के UI को Dodo Payments चेकआउट स्थिति के साथ समन्वयित रखने का प्राथमिक तरीका है। जब यह फायर होता है:
  • प्रारंभ में: चेकआउट फ्रेम लोड होने और तैयार होने के तुरंत बाद।
  • पता परिवर्तन पर: जब भी ग्राहक एक देश का चयन करता है या एक पोस्टल कोड दर्ज करता है जो कर पुनर्गणना का परिणाम देता है।
फील्ड विवरण:
फ़ील्डविवरण
subTotalसत्र में सभी लाइन आइटम का योग, जब कोई छूट या कर लागू नहीं होता है।
discountसभी लागू छूट का कुल मूल्य।
taxगणना की गई कर राशि। inline मोड में, यह उपयोगकर्ता के पता फ़ील्ड के साथ इंटरैक्ट करते समय गतिशील रूप से अपडेट होता है।
totalसत्र की मूल मुद्रा में subTotal - discount + tax का गणितीय परिणाम।
currencyमानक उप-योग, छूट, और कर मूल्यों के लिए ISO मुद्रा कोड (जैसे, "USD")।
finalTotalवास्तविक राशि जो ग्राहक को चार्ज की जाती है। इसमें अतिरिक्त विदेशी मुद्रा समायोजन या स्थानीय भुगतान विधि शुल्क शामिल हो सकते हैं जो मूल मूल्य ब्रेकडाउन का हिस्सा नहीं हैं।
finalTotalCurrencyवह मुद्रा जिसमें ग्राहक वास्तव में भुगतान कर रहा है। यदि क्रय शक्ति समानता या स्थानीय मुद्रा रूपांतरण सक्रिय है, तो यह currency से भिन्न हो सकता है।
मुख्य एकीकरण टिप्स:
  1. मुद्रा प्रारूपण: कीमतें हमेशा सबसे छोटे मुद्रा इकाई (जैसे, USD के लिए सेंट, JPY के लिए येन) में पूर्णांक के रूप में लौटाई जाती हैं। उन्हें प्रदर्शित करने के लिए, 100 (या उपयुक्त 10 की शक्ति) से विभाजित करें या Intl.NumberFormat जैसी प्रारूपण पुस्तकालय का उपयोग करें।
  2. प्रारंभिक राज्यों को संभालना: जब चेकआउट पहली बार लोड होता है, tax और discount 0 या null हो सकते हैं जब तक उपयोगकर्ता अपनी बिलिंग जानकारी प्रदान नहीं करता या कोड लागू नहीं करता। आपका UI इन राज्यों को सुचारू रूप से संभालना चाहिए (जैसे, एक डैश दिखाना या पंक्ति को छिपाना)।
  3. “अंतिम कुल” बनाम “कुल”: जबकि total आपको मानक मूल्य गणना देता है, finalTotal लेनदेन के लिए सत्य का स्रोत है। यदि finalTotal मौजूद है, तो यह ठीक वही दर्शाता है जो ग्राहक के कार्ड पर चार्ज किया जाएगा, जिसमें कोई भी गतिशील समायोजन शामिल है।
  4. वास्तविक समय की प्रतिक्रिया: उपयोगकर्ताओं को दिखाने के लिए tax फ़ील्ड का उपयोग करें कि कर वास्तविक समय में गणना किए जा रहे हैं। यह आपके चेकआउट पृष्ठ को “लाइव” अनुभव प्रदान करता है और पते के प्रवेश चरण के दौरान घर्षण को कम करता है।

कार्यान्वयन विकल्प

पैकेज प्रबंधक स्थापना

npm, yarn, या pnpm के माध्यम से स्थापना करें जैसा कि चरण-दर-चरण एकीकरण गाइड में दिखाया गया है।

CDN कार्यान्वयन

बिना किसी निर्माण चरण के त्वरित एकीकरण के लिए, आप हमारे CDN का उपयोग कर सकते हैं:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dodo Payments Inline Checkout</title>
    
    <!-- Load DodoPayments -->
    <script src="https://cdn.jsdelivr.net/npm/dodopayments-checkout@latest/dist/index.js"></script>
    <script>
        // Initialize the SDK
        DodoPaymentsCheckout.DodoPayments.Initialize({
            mode: "test",
            displayType: "inline",
            onEvent: (event) => {
                console.log('Checkout event:', event);
            }
        });
    </script>
</head>
<body>
    <div id="dodo-inline-checkout"></div>

    <script>
        // Open the checkout
        DodoPaymentsCheckout.DodoPayments.Checkout.open({
            checkoutUrl: "https://test.dodopayments.com/session/cks_123",
            elementId: "dodo-inline-checkout"
        });
    </script>
</body>
</html>

थीम कस्टमाइजेशन

आप चेकआउट के रूप को कस्टमाइज़ कर सकते हैं, जब चेकआउट खोलते समय themeConfig ऑब्जेक्ट को options पैरामीटर में पास करके। थीम कॉन्फ़िगरेशन लाइट और डार्क मोड दोनों का समर्थन करता है, जिससे आप रंग, बॉर्डर, टेक्स्ट, बटन और बॉर्डर रेडियस को कस्टमाइज़ कर सकते हैं।

बेसिक थीम कॉन्फ़िगरेशन

DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123",
  options: {
    themeConfig: {
      light: {
        bgPrimary: "#FFFFFF",
        textPrimary: "#344054",
        buttonPrimary: "#A6E500",
      },
      dark: {
        bgPrimary: "#0D0D0D",
        textPrimary: "#FFFFFF",
        buttonPrimary: "#A6E500",
      },
      radius: "8px",
    },
  },
});

पूर्ण थीम कॉन्फ़िगरेशन

सभी उपलब्ध थीम प्रॉपर्टीज़:
DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123",
  options: {
    themeConfig: {
      light: {
        // Background colors
        bgPrimary: "#FFFFFF",        // Primary background color
        bgSecondary: "#F9FAFB",      // Secondary background color (e.g., tabs)
        
        // Border colors
        borderPrimary: "#D0D5DD",     // Primary border color
        borderSecondary: "#6B7280",  // Secondary border color
        inputFocusBorder: "#D0D5DD", // Input focus border color
        
        // Text colors
        textPrimary: "#344054",       // Primary text color
        textSecondary: "#6B7280",    // Secondary text color
        textPlaceholder: "#667085",  // Placeholder text color
        textError: "#D92D20",        // Error text color
        textSuccess: "#10B981",      // Success text color
        
        // Button colors
        buttonPrimary: "#A6E500",           // Primary button background
        buttonPrimaryHover: "#8CC500",      // Primary button hover state
        buttonTextPrimary: "#0D0D0D",       // Primary button text color
        buttonSecondary: "#F3F4F6",         // Secondary button background
        buttonSecondaryHover: "#E5E7EB",     // Secondary button hover state
        buttonTextSecondary: "#344054",     // Secondary button text color
      },
      dark: {
        // Background colors
        bgPrimary: "#0D0D0D",
        bgSecondary: "#1A1A1A",
        
        // Border colors
        borderPrimary: "#323232",
        borderSecondary: "#D1D5DB",
        inputFocusBorder: "#323232",
        
        // Text colors
        textPrimary: "#FFFFFF",
        textSecondary: "#909090",
        textPlaceholder: "#9CA3AF",
        textError: "#F97066",
        textSuccess: "#34D399",
        
        // Button colors
        buttonPrimary: "#A6E500",
        buttonPrimaryHover: "#8CC500",
        buttonTextPrimary: "#0D0D0D",
        buttonSecondary: "#2A2A2A",
        buttonSecondaryHover: "#3A3A3A",
        buttonTextSecondary: "#FFFFFF",
      },
      radius: "8px", // Border radius for inputs, buttons, and tabs
    },
  },
});

केवल लाइट मोड

यदि आप केवल लाइट थीम को कस्टमाइज़ करना चाहते हैं:
DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123",
  options: {
    themeConfig: {
      light: {
        bgPrimary: "#FFFFFF",
        textPrimary: "#000000",
        buttonPrimary: "#0070F3",
      },
      radius: "12px",
    },
  },
});

केवल डार्क मोड

यदि आप केवल डार्क थीम को कस्टमाइज़ करना चाहते हैं:
DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123",
  options: {
    themeConfig: {
      dark: {
        bgPrimary: "#000000",
        textPrimary: "#FFFFFF",
        buttonPrimary: "#0070F3",
      },
      radius: "12px",
    },
  },
});

आंशिक थीम ओवरराइड

आप केवल विशिष्ट प्रॉपर्टीज़ को ओवरराइड कर सकते हैं। चेकआउट उन प्रॉपर्टीज़ के लिए डिफ़ॉल्ट मानों का उपयोग करेगा जिन्हें आप निर्दिष्ट नहीं करते:
DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123",
  options: {
    themeConfig: {
      light: {
        buttonPrimary: "#FF6B6B", // Only override primary button color
      },
      radius: "16px", // Override border radius
    },
  },
});

अन्य विकल्पों के साथ थीम कॉन्फ़िगरेशन

आप थीम कॉन्फ़िगरेशन को अन्य चेकआउट विकल्पों के साथ संयोजित कर सकते हैं:
DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123",
  options: {
    showTimer: true,
    showSecurityBadge: true,
    manualRedirect: false,
    themeConfig: {
      light: {
        bgPrimary: "#FFFFFF",
        buttonPrimary: "#A6E500",
      },
      dark: {
        bgPrimary: "#0D0D0D",
        buttonPrimary: "#A6E500",
      },
      radius: "8px",
    },
  },
});

TypeScript प्रकार

TypeScript उपयोगकर्ताओं के लिए, सभी थीम कॉन्फ़िगरेशन प्रकार निर्यात किए गए हैं:
import { ThemeConfig, ThemeModeConfig } from "dodopayments-checkout";

const themeConfig: ThemeConfig = {
  light: {
    bgPrimary: "#FFFFFF",
    // ... other properties
  },
  dark: {
    bgPrimary: "#0D0D0D",
    // ... other properties
  },
  radius: "8px",
};

त्रुटि प्रबंधन

SDK इवेंट सिस्टम के माध्यम से विस्तृत त्रुटि जानकारी प्रदान करता है। हमेशा अपने onEvent कॉलबैक में उचित त्रुटि प्रबंधन लागू करें:
DodoPayments.Initialize({
  mode: "test",
  displayType: "inline",
  onEvent: (event: CheckoutEvent) => {
    if (event.event_type === "checkout.error") {
      console.error("Checkout error:", event.data?.message);
      // Handle error appropriately
    }
  }
});
जब समस्याएँ होती हैं, तो एक अच्छा उपयोगकर्ता अनुभव प्रदान करने के लिए हमेशा checkout.error इवेंट को संभालें।

सर्वोत्तम प्रथाएँ

  1. उत्तरदायी डिज़ाइन: सुनिश्चित करें कि आपके कंटेनर तत्व की चौड़ाई और ऊँचाई पर्याप्त है। iframe आमतौर पर अपने कंटेनर को भरने के लिए विस्तारित होगा।
  2. सिंक्रनाइज़ेशन: अपने कस्टम ऑर्डर सारांश या मूल्य निर्धारण तालिकाओं को चेकआउट फ्रेम में उपयोगकर्ता जो देखता है, के साथ समन्वय में रखने के लिए checkout.breakdown इवेंट का उपयोग करें।
  3. स्केलेटन स्टेट्स: checkout.opened इवेंट फायर होने तक अपने कंटेनर में लोडिंग संकेतक दिखाएँ।
  4. साफ़ करना: जब आपका घटक अनमाउंट होता है, तो iframe और इवेंट लिसनर्स को साफ़ करने के लिए DodoPayments.Checkout.close() को कॉल करें।
डार्क मोड कार्यान्वयन के लिए, इन्लाइन चेकआउट फ्रेम के साथ अनुकूल दृश्य एकीकरण के लिए बैकग्राउंड रंग के रूप में #0d0d0d का उपयोग करने की सिफारिश की जाती है।

समस्या निवारण

  • सुनिश्चित करें कि elementId एक ऐसे id से मेल खाता है जो वास्तव में DOM में मौजूद है।
  • सुनिश्चित करें कि displayType: 'inline' को Initialize में पास किया गया था।
  • जांचें कि checkoutUrl मान्य है।
  • सुनिश्चित करें कि आप checkout.breakdown इवेंट के लिए सुन रहे हैं।
  • कर केवल तब गणना किए जाते हैं जब उपयोगकर्ता चेकआउट फ्रेम में एक मान्य देश और डाक कोड दर्ज करता है।

एप्पल पे सक्षम करना

एप्पल पे ग्राहकों को उनके सहेजे गए भुगतान विधियों का उपयोग करके तेजी से और सुरक्षित रूप से भुगतान पूरा करने की अनुमति देता है। जब सक्षम किया जाता है, तो ग्राहक समर्थित उपकरणों पर चेकआउट ओवरले से सीधे एप्पल पे मोडल लॉन्च कर सकते हैं।
एप्पल पे iOS 17+, iPadOS 17+, और macOS पर Safari 17+ पर समर्थित है।
अपने डोमेन के लिए उत्पादन में एप्पल पे सक्षम करने के लिए, इन चरणों का पालन करें:
1

एप्पल पे डोमेन एसोसिएशन फ़ाइल डाउनलोड और अपलोड करें

एप्पल पे डोमेन एसोसिएशन फ़ाइल डाउनलोड करें।फ़ाइल को अपने वेब सर्वर पर /.well-known/apple-developer-merchantid-domain-association पर अपलोड करें। उदाहरण के लिए, यदि आपकी वेबसाइट example.com है, तो फ़ाइल को https://example.com/well-known/apple-developer-merchantid-domain-association पर उपलब्ध कराएँ।
2

एप्पल पे सक्रियण का अनुरोध करें

[email protected] पर निम्नलिखित जानकारी के साथ ईमेल करें:
  • आपका उत्पादन डोमेन URL (जैसे, https://example.com)
  • अपने डोमेन के लिए एप्पल पे सक्षम करने का अनुरोध
आपको 1-2 कार्यदिवसों के भीतर पुष्टि प्राप्त होगी जब एप्पल पे आपके डोमेन के लिए सक्षम किया गया हो।
3

एप्पल पे उपलब्धता की पुष्टि करें

पुष्टि प्राप्त करने के बाद, अपने चेकआउट में एप्पल पे का परीक्षण करें:
  1. समर्थित उपकरण (iOS 17+, iPadOS 17+, या macOS पर Safari 17+) पर अपने चेकआउट को खोलें
  2. सत्यापित करें कि एप्पल पे बटन एक भुगतान विकल्प के रूप में दिखाई देता है
  3. पूर्ण भुगतान प्रवाह का परीक्षण करें
एप्पल पे को आपके डोमेन के लिए सक्षम किया जाना चाहिए, इससे पहले कि यह उत्पादन में भुगतान विकल्प के रूप में दिखाई दे। यदि आप एप्पल पे की पेशकश करने की योजना बना रहे हैं, तो लाइव जाने से पहले समर्थन से संपर्क करें।

ब्राउज़र समर्थन

Dodo Payments Checkout SDK निम्नलिखित ब्राउज़रों का समर्थन करता है:
  • क्रोम (नवीनतम)
  • फ़ायरफ़ॉक्स (नवीनतम)
  • सफारी (नवीनतम)
  • एज (नवीनतम)
  • IE11+

इनलाइन बनाम ओवरले चेकआउट

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

संबंधित संसाधन

अधिक सहायता के लिए, हमारी Discord समुदाय पर जाएँ या हमारी डेवलपर समर्थन टीम से संपर्क करें.