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

स्थापना

1

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

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

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

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

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

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

  const fastify = Fastify({})
  const checkoutGet = Checkout({
      bearerToken: process.env.DODO_PAYMENTS_API_KEY,
      environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
      returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
      type: 'static'
  });

  const checkoutPost = Checkout({
      bearerToken: process.env.DODO_PAYMENTS_API_KEY,
      environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
      returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
      type: 'dynamic'
  });

  const checkoutSession = Checkout({
      bearerToken: process.env.DODO_PAYMENTS_API_KEY,
      environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
      returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
      type: 'session'
  });

  fastify.get('/api/checkout', checkoutGet.getHandler);
  fastify.post('/api/checkout', checkoutPost.postHandler);
  fastify.post('/api/checkout-session', checkoutSession.postHandler);
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-session \
--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"
}'

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

डोडो पेमेंट्स आपके वेबसाइट में भुगतान एकीकृत करने के लिए तीन प्रकार के भुगतान प्रवाह का समर्थन करता है, यह एडाप्टर सभी प्रकार के भुगतान प्रवाह का समर्थन करता है।
  • स्थिर भुगतान लिंक: त्वरित, बिना कोड के भुगतान संग्रह के लिए तुरंत साझा करने योग्य यूआरएल।
  • गतिशील भुगतान लिंक: 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 प्रतिक्रिया का परिणाम बनाते हैं।

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

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

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

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

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

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

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

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

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

customer_id
string
आवश्यक
पोर्टल सत्र के लिए ग्राहक आईडी (जैसे, ?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 के लिए प्रॉम्प्ट

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

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

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

npm install @dodopayments/fastify

---

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

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

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

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

---

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

---

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

**उद्देश्य**: यह हैंडलर उपयोगकर्ताओं को डोडो पेमेंट्स चेकआउट पृष्ठ पर पुनर्निर्देशित करता है।

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

import { Checkout } from '@dodopayments/fastify';
import Fastify from 'fastify'

const fastify = Fastify({})
const checkoutGet = Checkout({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
    returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
    type: 'static'
});

const checkoutPost = Checkout({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
    returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
    type: 'dynamic'
});

const checkoutSession = Checkout({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
    returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
    type: 'session'
});

fastify.get('/api/checkout', checkoutGet.getHandler);
fastify.post('/api/checkout', checkoutPost.postHandler);
fastify.post('/api/checkout-session', checkoutSession.postHandler);

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

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

    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 बॉडी की अपेक्षा करता है। लौटाता है: {"checkout_url": "https://checkout.dodopayments.com/..."}। पूर्ण POST स्कीमा के लिए दस्तावेज़ देखें:

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

    सदस्यताएँ: https://docs.dodopayments.com/api-reference/subscriptions/post-subscriptions

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

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

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

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

एकीकरण:

import { CustomerPortal } from "@dodopayments/fastify";
import Fastify from 'fastify'

const fastify = Fastify({})
const customerPortalHandler = CustomerPortal({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: process.env.DODO_PAYMENTS_ENVIRONMENT
});
fastify.get('/api/customer-portal', customerPortalHandler);

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

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

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

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

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

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

एकीकरण:

import Fastify from 'fastify'
import { Webhooks } from '@dodopayments/fastify'

const fastify = Fastify({})
fastify.addContentTypeParser('application/json', { parseAs: 'string' }, function (req, body, done) {
    done(null, body)
})

fastify.post('/api/webhooks', Webhooks({
  webhookKey: process.env.DODO_PAYMENTS_WEBHOOK_KEY,
  onPayload: async (payload) => {
    // यहाँ पेलोड को संभालें
    console.log(payload)
  }
}));

विशेषताएँ:

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

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

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

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

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

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

    onPayload

    onPaymentSucceeded

    onPaymentFailed

    onPaymentProcessing

    onPaymentCancelled

    onRefundSucceeded

    onRefundFailed

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

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

    onLicenseKeyCreated

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

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

DODO_PAYMENTS_API_KEY=your-api-key
DODO_PAYMENTS_RETURN_URL=https://yourapp.com/success
DODO_PAYMENTS_WEBHOOK_KEY=your-webhook-secret
DODO_PAYMENTS_ENVIRONMENT="test_mode" या "live_mode""

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

process.env.DODO_PAYMENTS_API_KEY
process.env.DODO_PAYMENTS_WEBHOOK_KEY

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