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

अवलोकन

Dodo Payments चेकआउट SDK आपके वेब एप्लिकेशन में हमारे भुगतान ओवरले को एकीकृत करने का एक सहज तरीका प्रदान करता है। TypeScript और आधुनिक वेब मानकों के साथ निर्मित, यह रीयल-टाइम इवेंट हैंडलिंग और अनुकूलन योग्य थीम के साथ भुगतान को संभालने के लिए एक मजबूत समाधान प्रदान करता है।
Overlay Checkout Cover Image

डेमो

Interactive Demo

हमारे लाइव डेमो के साथ ओवरले चेकआउट को क्रियाशील अवस्था में देखें।

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

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

// Initialize the SDK
DodoPayments.Initialize({
  mode: "test", // 'test' or 'live'
  displayType: "overlay", // Optional: defaults to 'overlay' for overlay checkout
  onEvent: (event) => {
    console.log("Checkout event:", event);
  },
});

// Open checkout
DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123"
});
अपना चेकआउट URL create checkout session API से प्राप्त करें।

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

1

Install the SDK

अपने पसंदीदा पैकेज प्रबंधक का उपयोग करके Dodo Payments चेकआउट SDK स्थापित करें:
npm install dodopayments-checkout
2

Initialize the SDK

अपने एप्लिकेशन में SDK को प्रारंभ करें, आमतौर पर आपके मुख्य घटक या ऐप के प्रवेश बिंदु में:
import { DodoPayments } from "dodopayments-checkout";

DodoPayments.Initialize({
  mode: "test", // Change to 'live' for production
  displayType: "overlay", // Optional: defaults to 'overlay' for overlay checkout
  onEvent: (event) => {
    console.log("Checkout event:", event);
    
    // Handle different events
    switch (event.event_type) {
      case "checkout.opened":
        // Checkout overlay has been opened
        break;
      case "checkout.closed":
        // Checkout has been closed
        break;
      case "checkout.error":
        // Handle errors
        console.error("Checkout error:", event.data?.message);
        break;
    }
  },
});
चेकआउट खोलने का प्रयास करने से पहले हमेशा SDK को इनिशियलाइज़ करें। इनिशियलाइज़ेशन आपके एप्लिकेशन के लोड होने पर एक बार होना चाहिए।
3

Create a Checkout Button Component

एक घटक बनाएं जो चेकआउट ओवरले को खोलता है:
// components/CheckoutButton.tsx
"use client";

import { Button } from "@/components/ui/button";
import { DodoPayments } from "dodopayments-checkout";
import { useEffect, useState } from "react";

export function CheckoutButton() {
  const [isLoading, setIsLoading] = useState(false);

  useEffect(() => {
    // Initialize the SDK
    DodoPayments.Initialize({
      mode: "test",
      displayType: "overlay",
      onEvent: (event) => {
        switch (event.event_type) {
          case "checkout.opened":
            setIsLoading(false);
            break;
          case "checkout.error":
            setIsLoading(false);
            console.error("Checkout error:", event.data?.message);
            break;
        }
      },
    });
  }, []);

  const handleCheckout = async () => {
    try {
      setIsLoading(true);
      await DodoPayments.Checkout.open({
        checkoutUrl: "https://checkout.dodopayments.com/session/cks_123"
      });
    } catch (error) {
      console.error("Failed to open checkout:", error);
      setIsLoading(false);
    }
  };

  return (
    <Button 
      onClick={handleCheckout}
      disabled={isLoading}
    >
      {isLoading ? "Loading..." : "Checkout Now"}
    </Button>
  );
}
4

Add Checkout to Your Page

अपने एप्लिकेशन में चेकआउट बटन घटक का उपयोग करें:
// app/page.tsx
import { CheckoutButton } from "@/components/CheckoutButton";

export default function Home() {
  return (
    <main className="flex min-h-screen flex-col items-center justify-center p-24">
      <h1>Welcome to Our Store</h1>
      <CheckoutButton />
    </main>
  );
}
5

Handle Success and Failure Pages

चेकआउट रीडायरेक्ट को संभालने के लिए पृष्ठ बनाएं:
// app/success/page.tsx
export default function SuccessPage() {
  return (
    <div className="flex min-h-screen flex-col items-center justify-center">
      <h1>Payment Successful!</h1>
      <p>Thank you for your purchase.</p>
    </div>
  );
}

// app/failure/page.tsx
export default function FailurePage() {
  return (
    <div className="flex min-h-screen flex-col items-center justify-center">
      <h1>Payment Failed</h1>
      <p>Please try again or contact support.</p>
    </div>
  );
}
6

Test Your Integration

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

Go Live

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

API संदर्भ

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

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

interface InitializeOptions {
  mode: "test" | "live";
  displayType?: "overlay" | "inline";
  onEvent: (event: CheckoutEvent) => void;
}
विकल्पप्रकारआवश्यकविवरण
mode"test" | "live"हाँEnvironment mode: 'test' विकास के लिए, 'live' उत्पादन के लिए
displayType"overlay" | "inline"नहींDisplay type: 'overlay' मोडल चेकआउट (डिफ़ॉल्ट) के लिए, 'inline' एम्बेडेड चेकआउट के लिए
onEventfunctionहाँकिस्‍म के ईवेंट्स को संभालने के लिए कॉलबैक फ़ंक्शन

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

interface CheckoutOptions {
  checkoutUrl: string;
  options?: {
    showTimer?: boolean;
    showSecurityBadge?: boolean;
  };
}
विकल्पप्रकारआवश्यकविवरण
checkoutUrlstringहांचेकआउट सेशन API से चेकआउट सेशन URL
options.showTimerbooleanनहींचेकआउट टाइमर को दिखाएं या छिपाएं। डिफ़ॉल्ट रूप से इसे true पर सेट किया गया है। जब निष्क्रिय हो, तो आपको सेशन समाप्त होने पर checkout.link_expired इवेंट प्राप्त होगा।
options.showSecurityBadgebooleanनहींसुरक्षा बैज को दिखाएं या छिपाएं। डिफ़ॉल्ट रूप से इसे true पर सेट किया गया है।

विधियाँ

चेकआउट खोलें

निर्दिष्ट चेकआउट सत्र URL के साथ चेकआउट ओवरले खोलता है।
DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123"
});
आप चेकआउट व्यवहार को अनुकूलित करने के लिए अतिरिक्त विकल्प भी पास कर सकते हैं:
DodoPayments.Checkout.open({
  checkoutUrl: "https://checkout.dodopayments.com/session/cks_123",
  options: {
    showTimer: false,
    showSecurityBadge: false,
  },
});

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

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

स्थिति जांचें

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

इवेंट्स

SDK रीयल-टाइम इवेंट्स प्रदान करता है जिन्हें आप onEvent कॉलबैक के माध्यम से सुन सकते हैं:
DodoPayments.Initialize({
  onEvent: (event: CheckoutEvent) => {
    switch (event.event_type) {
      case "checkout.opened":
        // Checkout overlay has been opened
        break;
      case "checkout.form_ready":
        // Checkout form is ready for user input
        break;
      case "checkout.payment_page_opened":
        // Payment page has been displayed
        break;
      case "checkout.customer_details_submitted":
        // Customer and billing details submitted
        break;
      case "checkout.closed":
        // Checkout has been closed
        break;
      case "checkout.redirect":
        // Checkout will perform a redirect
        break;
      case "checkout.error":
        // An error occurred
        console.error("Error:", event.data?.message);
        break;
      case "checkout.link_expired":
        // Checkout session has expired (only when showTimer is false)
        break;
    }
  }
});
इवेंट प्रकारविवरण
checkout.openedचेकआउट ओवरले खोला गया
checkout.form_readyचेकआउट फॉर्म उपयोगकर्ता इनपुट को प्राप्त करने के लिए तैयार है। लोडिंग स्टेट्स छिपाने के लिए उपयोगी।
checkout.payment_page_openedभुगतान पृष्ठ प्रदर्शित किया गया
checkout.customer_details_submittedग्राहक और बिलिंग विवरण सबमिट किये गए
checkout.closedचेकआउट ओवरले बंद किया गया
checkout.redirectचेकआउट एक रीडायरेक्ट करेगा
checkout.errorचेकआउट के दौरान एक त्रुटि आई
checkout.link_expiredफायर तब होता है जब चेकआउट सेशन समाप्त होता है। केवल तब प्राप्त होता है जब showTimer false पर सेट हो।

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

पैकेज मैनेजर इंस्टॉलेशन

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 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", // Change to 'live' for production
            displayType: "overlay",
            onEvent: (event) => {
                console.log('Checkout event:', event);
            }
        });
    </script>
</head>
<body>
    <button onclick="openCheckout()">Checkout Now</button>

    <script>
        function openCheckout() {
            DodoPaymentsCheckout.DodoPayments.Checkout.open({
                checkoutUrl: "https://checkout.dodopayments.com/session/cks_123"
            });
        }
    </script>
</body>
</html>

थीम अनुकूलन

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

बुनियादी थीम कॉन्फ़िगरेशन

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
        
        // 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",
        
        // 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,
    themeConfig: {
      light: {
        bgPrimary: "#FFFFFF",
        buttonPrimary: "#A6E500",
      },
      dark: {
        bgPrimary: "#0D0D0D",
        buttonPrimary: "#A6E500",
      },
      radius: "8px",
    },
  },
});

टाइपस्क्रिप्ट प्रकार

टाइपस्क्रिप्ट उपयोगकर्ताओं के लिए, सभी थीम कॉन्फ़िगरेशन प्रकार निर्यात किए जाते हैं:
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: "overlay",
  onEvent: (event: CheckoutEvent) => {
    if (event.event_type === "checkout.error") {
      console.error("Checkout error:", event.data?.message);
      // Handle error appropriately
      // You may want to show a user-friendly error message
      // or retry the checkout process
    }
    if (event.event_type === "checkout.link_expired") {
      // Handle expired checkout session
      console.warn("Checkout session has expired");
    }
  }
});
जब त्रुटियाँ होती हैं, तो एक अच्छा उपयोगकर्ता अनुभव प्रदान करने के लिए हमेशा checkout.error इवेंट को संभालें।

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

  1. एक बार प्रारंभ करें: आपके एप्लिकेशन लोड होने पर SDK को एक बार प्रारंभ करें, न कि हर चेकआउट प्रयास पर
  2. त्रुटि हैंडलिंग: हमेशा अपने इवेंट कॉलबैक में उचित त्रुटि हैंडलिंग लागू करें
  3. टेस्ट मोड: विकास के दौरान test मोड का उपयोग करें और केवल जब उत्पादन के लिए तैयार हो जाए तब live पर स्विच करें
  4. इवेंट हैंडलिंग: एक संपूर्ण उपयोगकर्ता अनुभव के लिए सभी प्रासंगिक इवेंट्स को हैंडल करें
  5. मान्य URLs: हमेशा चेकआउट URL का उपयोग करें जो चेकआउट सेशन API से मान्य हो
  6. टाइपस्क्रिप्ट: बेहतर प्रकार सुरक्षा और डेवलपर अनुभव के लिए टाइपस्क्रिप्ट का उपयोग करें
  7. लोडिंग स्टेट्स: UX को बेहतर बनाने के लिए जब चेकआउट खुल रहा हो तब लोडिंग स्टेट दिखाएं
  8. टाइमर मैनेजमेंट: अगर आप सेशन समाप्ति को मैनुअल रूप से हैंडल करना चाहते हैं तो टाइमर (showTimer: false) को निष्क्रिय करें

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

संभावित कारण:
  • open() को कॉल करने से पहले SDK प्रारंभ नहीं किया गया
  • अमान्य चेकआउट URL
  • कंसोल में जावास्क्रिप्ट त्रुटियाँ
  • नेटवर्क कनेक्टिविटी समस्याएँ
समाधान:
  • सुनिश्चित करें कि चेकआउट खोलने से पहले SDK प्रारंभ होता है
  • कंसोल त्रुटियों की जाँच करें
  • सुनिश्चित करें कि चेकआउट URL मान्य है और चेकआउट सेशन API से है
  • नेटवर्क कनेक्टिविटी की जाँच करें
संभावित कारण:
  • इवेंट हैंडलर सही तरह से सेट नहीं किया गया
  • जावास्क्रिप्ट त्रुटियाँ जो इवेंट प्रसार को रोक रही हैं
  • SDK सही तरह से प्रारंभ नहीं हुआ
समाधान:
  • सुनिश्चित करें कि इवेंट हैंडलर Initialize() में सही तरह से कॉन्फ़िगर किया गया है
  • कंसोल में जावास्क्रिप्ट त्रुटियों की जाँच करें
  • सुनिश्चित करें कि SDK प्रारंभ सफलतापूर्वक पूरा हुआ
  • पहले एक साधारण इवेंट हैंडलर के साथ परीक्षण करें
संभावित कारण:
  • आपके एप्लिकेशन के स्टाइल्स के साथ CSS संघर्ष
  • थीम सेटिंग्स सही तरह से लागू नहीं हुईं
  • उत्तरदायी डिज़ाइन समस्याएँ
समाधान:
  • ब्राउज़र DevTools में CSS संघर्षों की जाँच करें
  • सुनिश्चित करें कि थीम सेटिंग्स सही हैं
  • विभिन्न स्क्रीन आकारों पर परीक्षण करें
  • ओवरले के साथ z-index संघर्ष सुनिश्चित न हो

डिजिटल वॉलेट सक्षम करना

Google Pay और अन्य डिजिटल वॉलेट्स की सेटअप के बारे में विस्तृत जानकारी के लिए डिजिटल वॉलेट्स पृष्ठ देखें।
ओवरले चेकआउट में Apple Pay अभी तक समर्थित नहीं है। Apple Pay के लिए समर्थन जल्द आ रहा है।

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

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

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

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

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

Inline Checkout

अपने पृष्ठ पर सीधे चेकआउट एम्बेड करें पूरी तरह से एकीकृत अनुभवों के लिए।

Checkout Sessions API

चेकआउट अनुभवों को संचालित करने के लिए चेकआउट सत्र बनाएं।

Webhooks

वेबहुक्स के माध्यम से सर्वर-साइड भुगतान इवेंट्स को संभालें।

Integration Guide

Dodo Payments को एकीकृत करने के लिए पूरी गाइड।
अधिक सहायता के लिए, हमारे Discord समुदाय पर जाएँ या हमारी डेवलपर समर्थन टीम से संपर्क करें।
Last modified on April 20, 2026