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

स्थापना

1

पैकेज स्थापित करें

अपने प्रोजेक्ट रूट में निम्नलिखित कमांड चलाएँ:
npm install @dodopayments/express
2

पर्यावरण चर सेट करें

अपने प्रोजेक्ट रूट में एक .env फ़ाइल बनाएं:
DODO_PAYMENTS_API_KEY=your-api-key
DODO_PAYMENTS_WEBHOOK_KEY=your-webhook-secret
DODO_PAYMENTS_ENVIRONMENT="test_mode" or "live_mode"
DODO_PAYMENTS_RETURN_URL=your-return-url
कभी भी अपनी .env फ़ाइल या रहस्यों को संस्करण नियंत्रण में कमिट न करें।

रूट हैंडलर उदाहरण

इस हैंडलर का उपयोग अपने एक्सप्रेस ऐप में डोडो पेमेंट्स चेकआउट को एकीकृत करने के लिए करें। स्थिर (GET), गतिशील (POST), और सत्र (POST) भुगतान प्रवाह का समर्थन करता है।
import { checkoutHandler } from '@dodopayments/express';

app.get('/api/checkout', checkoutHandler({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
    environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
    type: "static"
}))

app.post('/api/checkout', checkoutHandler({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
    environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
    type: "dynamic"
}))

app.post('/api/checkout', checkoutHandler({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
    environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
    type: "session"
}))
curl --request GET \
--url 'https://example.com/api/checkout?productId=pdt_fqJhl7pxKWiLhwQR042rh' \
--header 'User-Agent: insomnia/11.2.0' \
--cookie mode=test
curl --request POST \
--url https://example.com/api/checkout \
--header 'Content-Type: application/json' \
--header 'User-Agent: insomnia/11.2.0' \
--cookie mode=test \
--data '{
"billing": {
  "city": "Texas",
  "country": "US",
  "state": "Texas",
  "street": "56, hhh",
  "zipcode": "560000"
},
"customer": {
  "email": "[email protected]",
  	"name": "test"
},
"metadata": {},
"payment_link": true,
  "product_id": "pdt_QMDuvLkbVzCRWRQjLNcs",
  "quantity": 1,
  "billing_currency": "USD",
  "discount_code": "IKHZ23M9GQ",
  "return_url": "https://example.com",
  "trial_period_days": 10
}'
curl --request POST \
--url https://example.com/api/checkout \
--header 'Content-Type: application/json' \
--header 'User-Agent: insomnia/11.2.0' \
--cookie mode=test \
--data '{
"product_cart": [
  {
    "product_id": "pdt_QMDuvLkbVzCRWRQjLNcs",
    "quantity": 1
  }
],
"customer": {
  "email": "[email protected]",
  "name": "test"
},
"return_url": "https://example.com/success"
}'

चेकआउट रूट हैंडलर

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

समर्थित क्वेरी पैरामीटर

productId
string
आवश्यक
उत्पाद पहचानकर्ता (जैसे, ?productId=pdt_nZuwz45WAs64n3l07zpQR).
quantity
integer
उत्पाद की मात्रा।
fullName
string
ग्राहक का पूरा नाम।
firstName
string
ग्राहक का पहला नाम।
lastName
string
ग्राहक का अंतिम नाम।
email
string
ग्राहक का ईमेल पता।
country
string
ग्राहक का देश।
addressLine
string
ग्राहक का पता।
city
string
ग्राहक का शहर।
state
string
ग्राहक की राज्य/प्रांत।
zipCode
string
ग्राहक का ज़िप/पोस्टल कोड।
disableFullName
boolean
पूर्ण नाम फ़ील्ड को अक्षम करें।
disableFirstName
boolean
पहला नाम फ़ील्ड को अक्षम करें।
disableLastName
boolean
अंतिम नाम फ़ील्ड को अक्षम करें।
disableEmail
boolean
ईमेल फ़ील्ड को अक्षम करें।
disableCountry
boolean
देश फ़ील्ड को अक्षम करें।
disableAddressLine
boolean
पता फ़ील्ड को अक्षम करें।
disableCity
boolean
शहर फ़ील्ड को अक्षम करें।
disableState
boolean
राज्य फ़ील्ड को अक्षम करें।
disableZipCode
boolean
ज़िप कोड फ़ील्ड को अक्षम करें।
paymentCurrency
string
भुगतान मुद्रा निर्दिष्ट करें (जैसे, USD).
showCurrencySelector
boolean
मुद्रा चयनकर्ता दिखाएं।
paymentAmount
integer
भुगतान राशि निर्दिष्ट करें (जैसे, 1000 $10.00 के लिए).
showDiscounts
boolean
छूट फ़ील्ड दिखाएं।
metadata_*
string
कोई भी क्वेरी पैरामीटर जो metadata_ से शुरू होता है, उसे मेटाडेटा के रूप में पास किया जाएगा।
यदि productId गायब है, तो हैंडलर 400 प्रतिक्रिया लौटाता है। अमान्य क्वेरी पैरामीटर भी 400 प्रतिक्रिया का परिणाम बनाते हैं।

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

स्थिर चेकआउट चेकआउट URL के साथ JSON प्रतिक्रिया लौटाता है:
{
  "checkout_url": "https://checkout.dodopayments.com/..."
}

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

गतिशील चेकआउट चेकआउट URL के साथ JSON प्रतिक्रिया लौटाता है:
{
  "checkout_url": "https://checkout.dodopayments.com/..."
}
चेकआउट सत्र एक अधिक सुरक्षित, होस्टेड चेकआउट अनुभव प्रदान करते हैं जो एक बार की खरीद और सब्सक्रिप्शन के लिए पूर्ण अनुकूलन नियंत्रण के साथ पूरा भुगतान प्रवाह संभालते हैं।अधिक जानकारी और समर्थित फ़ील्ड की पूरी सूची के लिए चेकआउट सत्र एकीकरण गाइड देखें।

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

चेकआउट सत्र चेकआउट URL के साथ JSON प्रतिक्रिया लौटाते हैं:
{
  "checkout_url": "https://checkout.dodopayments.com/session/..."
}

ग्राहक पोर्टल रूट हैंडलर

ग्राहक पोर्टल रूट हैंडलर आपको अपने एक्सप्रेस एप्लिकेशन में डोडो पेमेंट्स ग्राहक पोर्टल को सहजता से एकीकृत करने की अनुमति देता है।

क्वेरी पैरामीटर

customer_id
string
आवश्यक
पोर्टल सत्र के लिए ग्राहक ID (जैसे, ?customer_id=cus_123).
send_email
boolean
यदि true पर सेट किया गया है, तो ग्राहक को पोर्टल लिंक के साथ एक ईमेल भेजा जाएगा।
यदि customer_id गायब है तो 400 लौटाता है।

वेबहुक रूट हैंडलर

  • विधि: केवल POST अनुरोधों का समर्थन किया जाता है। अन्य विधियाँ 405 लौटाती हैं।
  • हस्ताक्षर सत्यापन: webhookKey का उपयोग करके वेबहुक हस्ताक्षर की पुष्टि करता है। यदि सत्यापन विफल होता है तो 401 लौटाता है।
  • पेलोड मान्यता: Zod के साथ मान्य किया गया। अमान्य पेलोड के लिए 400 लौटाता है।
  • त्रुटि प्रबंधन:
    • 401: अमान्य हस्ताक्षर
    • 400: अमान्य पेलोड
    • 500: सत्यापन के दौरान आंतरिक त्रुटि
  • इवेंट रूटिंग: पेलोड प्रकार के आधार पर उपयुक्त इवेंट हैंडलर को कॉल करता है।

समर्थित वेबहुक इवेंट हैंडलर

onPayload?: (payload: WebhookPayload) => Promise<void>;
onPaymentSucceeded?: (payload: WebhookPayload) => Promise<void>;
onPaymentFailed?: (payload: WebhookPayload) => Promise<void>;
onPaymentProcessing?: (payload: WebhookPayload) => Promise<void>;
onPaymentCancelled?: (payload: WebhookPayload) => Promise<void>;
onRefundSucceeded?: (payload: WebhookPayload) => Promise<void>;
onRefundFailed?: (payload: WebhookPayload) => Promise<void>;
onDisputeOpened?: (payload: WebhookPayload) => Promise<void>;
onDisputeExpired?: (payload: WebhookPayload) => Promise<void>;
onDisputeAccepted?: (payload: WebhookPayload) => Promise<void>;
onDisputeCancelled?: (payload: WebhookPayload) => Promise<void>;
onDisputeChallenged?: (payload: WebhookPayload) => Promise<void>;
onDisputeWon?: (payload: WebhookPayload) => Promise<void>;
onDisputeLost?: (payload: WebhookPayload) => Promise<void>;
onSubscriptionActive?: (payload: WebhookPayload) => Promise<void>;
onSubscriptionOnHold?: (payload: WebhookPayload) => Promise<void>;
onSubscriptionRenewed?: (payload: WebhookPayload) => Promise<void>;
onSubscriptionPlanChanged?: (payload: WebhookPayload) => Promise<void>;
onSubscriptionCancelled?: (payload: WebhookPayload) => Promise<void>;
onSubscriptionFailed?: (payload: WebhookPayload) => Promise<void>;
onSubscriptionExpired?: (payload: WebhookPayload) => Promise<void>;
onLicenseKeyCreated?: (payload: WebhookPayload) => Promise<void>;

LLM के लिए प्रॉम्प्ट

आप एक विशेषज्ञ एक्सप्रेस.js डेवलपर सहायक हैं। आपका कार्य उपयोगकर्ता को अपने मौजूदा एक्सप्रेस.js प्रोजेक्ट में @dodopayments/express एडाप्टर को एकीकृत करने के लिए मार्गदर्शन करना है।

@dodopayments/express एडाप्टर डोडो पेमेंट्स के चेकआउट, ग्राहक पोर्टल, और वेबहुक कार्यक्षमताओं के लिए रूट हैंडलर प्रदान करता है, जिसे सीधे एक्सप्रेस ऐप में प्लग करने के लिए डिज़ाइन किया गया है।

पहले, आवश्यक पैकेज स्थापित करें। उपयोगकर्ता के प्रोजेक्ट के लिए उपयुक्त पैकेज प्रबंधक का उपयोग करें (npm, yarn, या bun):

npm install @dodopayments/express

---

यहाँ आपको अपनी प्रतिक्रिया को कैसे संरचना करनी चाहिए:

1. उपयोगकर्ता से पूछें कि वे कौन सी कार्यक्षमताएँ एकीकृत करना चाहते हैं।

"@dodopayments/express एडाप्टर के कौन से भागों को आप अपने प्रोजेक्ट में एकीकृत करना चाहेंगे? आप निम्नलिखित में से एक या अधिक चुन सकते हैं:

- चेकआउट रूट हैंडलर (उत्पाद चेकआउट को संभालने के लिए)
- ग्राहक पोर्टल रूट हैंडलर (ग्राहक सब्सक्रिप्शन/विवरण प्रबंधित करने के लिए)
- वेबहुक रूट हैंडलर (डोडो पेमेंट्स वेबहुक घटनाओं को प्राप्त करने के लिए)
- सभी (तीनों को एकीकृत करें)"

---

2. उपयोगकर्ता के चयन के आधार पर, प्रत्येक चुनी गई कार्यक्षमता के लिए विस्तृत एकीकरण चरण प्रदान करें।

---

**यदि चेकआउट रूट हैंडलर चुना गया है:**

**उद्देश्य**: यह हैंडलर विभिन्न प्रकार के चेकआउट प्रवाह का प्रबंधन करता है। सभी चेकआउट प्रकार (स्थिर, गतिशील, और सत्र) चेकआउट URL के साथ JSON प्रतिक्रियाएँ लौटाते हैं ताकि प्रोग्रामेटिक हैंडलिंग की जा सके।

**एकीकरण**:
अपने एक्सप्रेस ऐप में स्थिर (GET), गतिशील (POST), और चेकआउट सत्र (POST) के लिए रूट बनाएं।

import { checkoutHandler } from '@dodopayments/express';

app.get('/api/checkout', checkoutHandler({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
  environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
  type: "static"
}));

app.post('/api/checkout', checkoutHandler({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
  environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
  type: "dynamic"
}));

// चेकआउट सत्र के लिए
app.post('/api/checkout', checkoutHandler({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
  environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
  type: "session"
}));

कॉन्फ़िग विकल्प:

    bearerToken: आपका डोडो पेमेंट्स API कुंजी (DODO_PAYMENTS_API_KEY पर्यावरण चर में संग्रहीत करने की सिफारिश की जाती है)।

    returnUrl (वैकल्पिक): सफल चेकआउट के बाद उपयोगकर्ता को पुनर्निर्देशित करने के लिए URL।

    environment: "test_mode" या "live_mode"

    type: "static" (GET), "dynamic" (POST), या "session" (POST)

GET (स्थिर चेकआउट) क्वेरी पैरामीटर की अपेक्षा करता है:

    productId (आवश्यक)

    quantity, ग्राहक फ़ील्ड (fullName, email, आदि), और मेटाडेटा (metadata_*) वैकल्पिक हैं।

    लौटाता है: {"checkout_url": "https://checkout.dodopayments.com/..."}

POST (गतिशील चेकआउट) भुगतान विवरण (एक बार या सब्सक्रिप्शन) के साथ JSON बॉडी की अपेक्षा करता है। पूर्ण POST स्कीमा के लिए दस्तावेज़ देखें:

    एक बार के भुगतान: https://docs.dodopayments.com/api-reference/payments/post-payments

    सब्सक्रिप्शन: https://docs.dodopayments.com/api-reference/subscriptions/post-subscriptions

    लौटाता है: {"checkout_url": "https://checkout.dodopayments.com/..."}

POST (चेकआउट सत्र) - (अनुशंसित) एक अधिक अनुकूलन योग्य चेकआउट अनुभव। चेकआउट_url के साथ JSON लौटाता है: पैरामीटर JSON बॉडी के रूप में भेजे जाते हैं। एक बार और आवर्ती भुगतान दोनों का समर्थन करता है। लौटाता है: {"checkout_url": "https://checkout.dodopayments.com/session/..."}। समर्थित फ़ील्ड की पूरी सूची के लिए देखें:

  चेकआउट सत्र एकीकरण गाइड: https://docs.dodopayments.com/developer-resources/checkout-session

यदि ग्राहक पोर्टल रूट हैंडलर चुना गया है:

उद्देश्य: यह रूट ग्राहकों को डोडो पेमेंट्स पोर्टल के माध्यम से अपने सब्सक्रिप्शन प्रबंधित करने की अनुमति देता है।

एकीकरण:

import { CustomerPortal } from "@dodopayments/express";

app.get('/api/customer-portal', CustomerPortal({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
}));

क्वेरी पैरामीटर:

    customer_id (आवश्यक): जैसे, ?customer_id=cus_123

    send_email (वैकल्पिक): यदि true है, तो ग्राहक को पोर्टल लिंक ईमेल किया जाता है।

यदि customer_id गायब है तो 400 लौटाता है।

यदि वेबहुक रूट हैंडलर चुना गया है:

उद्देश्य: डोडो पेमेंट्स से आने वाली वेबहुक घटनाओं को संसाधित करना ताकि आपके ऐप में घटनाएँ ट्रिगर की जा सकें।

एकीकरण:

import { Webhooks } from "@dodopayments/express";

app.post('/api/webhook', Webhooks({
  webhookKey: process.env.DODO_PAYMENTS_WEBHOOK_KEY,
  onPayload: async (payload) => {
    // सामान्य पेलोड को संभालें
  },
  // आप नीचे प्रत्येक इवेंट प्रकार के लिए भी बारीकी से नियंत्रित हैंडलर प्रदान कर सकते हैं
}));

विशेषताएँ:

    केवल POST विधि की अनुमति है - अन्य 405 लौटाते हैं।

    हस्ताक्षर सत्यापन webhookKey का उपयोग करके किया जाता है। यदि अमान्य है तो 401 लौटाता है।

    Zod-आधारित पेलोड मान्यता। यदि अमान्य स्कीमा है तो 400 लौटाता है।

    सभी हैंडलर असिंक्रोनस फ़ंक्शन हैं।

समर्थित वेबहुक इवेंट हैंडलर:

आप निम्नलिखित में से कोई भी हैंडलर पास कर सकते हैं:

    onPayload

    onPaymentSucceeded

    onPaymentFailed

    onPaymentProcessing

    onPaymentCancelled

    onRefundSucceeded

    onRefundFailed

    onDisputeOpened, onDisputeExpired, onDisputeAccepted, onDisputeCancelled, onDisputeChallenged, onDisputeWon, onDisputeLost

    onSubscriptionActive, onSubscriptionOnHold, onSubscriptionRenewed, onSubscriptionPlanChanged, onSubscriptionCancelled, onSubscriptionFailed, onSubscriptionExpired

    onLicenseKeyCreated

पर्यावरण चर सेटअप:

सुनिश्चित करें कि आप अपने प्रोजेक्ट में इन पर्यावरण चर को परिभाषित करें:

DODO_PAYMENTS_API_KEY=your-api-key
DODO_PAYMENTS_WEBHOOK_KEY=your-webhook-secret
DODO_PAYMENTS_ENVIRONMENT="test_mode" या "live_mode"
DODO_PAYMENTS_RETURN_URL=your-return-url

अपने कोड में इनका उपयोग करें:

process.env.DODO_PAYMENTS_API_KEY
process.env.DODO_PAYMENTS_WEBHOOK_SECRET

सुरक्षा नोट: रहस्यों को संस्करण नियंत्रण में कमिट न करें। स्थानीय रूप से .env फ़ाइलों और तैनाती वातावरण (जैसे, AWS, Vercel, Heroku, आदि) में रहस्य प्रबंधकों का उपयोग करें।