Skip to main content
@dodopayments/tanstack पैकेज आपके TanStack Start प्रोजेक्ट को तीन request handlers देता है। Checkout checkout URLs लौटाता है, CustomerPortal customer को Customer Portal पर भेजता है, और Webhooks webhook events को verify करके आपके code तक पहुंचाता है। प्रत्येक handler एक standard Request लेता है और Response लौटाता है, इसलिए आप इसे server route handler से call करते हैं।

Checkout Handler

static, dynamic और checkout session flows के साथ checkout URLs बनाएं।

Customer Portal

Customers को अपनी subscriptions और details manage करने दें।

Webhooks

Dodo Payments webhook events प्राप्त और process करें।

Installation

1

Install the Package

यह command अपने project root में चलाएं:
पैकेज को zod 3.25 या बाद का version भी चाहिए, जिसे यह peer dependency के रूप में सूचीबद्ध करता है।
2

Set Up Environment Variables

अपने project root में एक .env file बनाएं। API key Developer → API Keys के अंतर्गत बनाएं। अपना webhook endpoint Developer → Webhooks के अंतर्गत जोड़ें और उसका Signing secret DODO_PAYMENTS_WEBHOOK_KEY में copy करें:
TanStack Start .env files load करता है और server routes values को process.env से पढ़ते हैं। Checkout के बाद customers DODO_PAYMENTS_RETURN_URL पर पहुंचते हैं। यदि आप environment pass नहीं करते हैं, तो handlers live_mode का उपयोग करते हैं। Test mode API key केवल test_mode के साथ काम करती है।
अपने .env file या secrets को version control में कभी commit न करें।

Route Handler Examples

ये examples src/routes/api/ में TanStack Start server routes हैं। प्रत्येक example createFileRoute में server.handlers के अंतर्गत अपने handlers define करता है। पुराने TanStack Start releases, जैसे 1.129, @tanstack/react-start/server से createServerFileRoute और इसके बजाय .methods() call के साथ server routes define करते हैं। Dodo Payments handlers दोनों APIs के साथ इसी तरह काम करते हैं: उन्हें request दें।
अपने app में Dodo Payments checkout जोड़ने के लिए इस handler का उपयोग करें। GET handler static checkout serve करता है। POST handler checkout sessions, या जब आप type: "dynamic" set करते हैं तब dynamic checkout, serve करता है। Dynamic checkout example यह मानता है कि आपने type: "dynamic" set किया है।

Checkout Route Handler

Checkout handler Dodo Payments के साथ payments लेने के तीनों तरीकों का समर्थन करता है:
  • Static Payment Links: Shareable URLs जो बिना code के payments collect करते हैं।
  • Dynamic Payment Links: Custom details के साथ generate किए गए payment links। इनमें deprecated endpoints का उपयोग होता है।
  • Checkout Sessions: Product cart, customer details और customization options के साथ hosted checkout। यह recommended flow है।
Checkout इन options को लेता है: Handler GET requests के लिए static checkout serve करता है। POST requests के लिए, जब type dynamic होता है तब यह dynamic payment link बनाता है, और अन्यथा checkout session बनाता है।

Supported Query Parameters

string
आवश्यक
Product identifier, उदाहरण के लिए ?productId=pdt_nZuwz45WAs64n3l07zpQR।
integer
डिफ़ॉल्ट:"1"
Product की quantity।
string
Customer का पूरा नाम। यदि firstName या lastName दिया गया हो तो इसे अनदेखा किया जाता है।
string
Customer का first name।
string
Customer का last name।
string
Customer का email address।
string
Customer का देश, ISO 3166-1 alpha-2 code के रूप में।
string
Customer का street address।
string
Customer का city।
string
Customer का state या province।
string
Customer का ZIP या postal code।
boolean
Full name field को disable करने के लिए true पर set करें।
boolean
First name field को disable करने के लिए true पर set करें।
boolean
Last name field को disable करने के लिए true पर set करें।
boolean
Email field को disable करने के लिए true पर set करें।
boolean
Country field को disable करने के लिए true पर set करें।
boolean
Address line field को disable करने के लिए true पर set करें।
boolean
City field को disable करने के लिए true पर set करें।
boolean
State field को disable करने के लिए true पर set करें।
boolean
ZIP code field को disable करने के लिए true पर set करें।
string
Payment currency, उदाहरण के लिए USD।
boolean
डिफ़ॉल्ट:"true"
Currency selector दिखाएं या छिपाएं।
number
Major currency units में charged amount को fix करता है, उदाहरण के लिए $12.50 के लिए 12.5। केवल Pay What You Want products के साथ काम करता है और product की minimum price से कम होने पर अनदेखा किया जाता है।
boolean
डिफ़ॉल्ट:"true"
Discounts section दिखाएं या छिपाएं।
string
metadata_ से शुरू होने वाला कोई भी query parameter checkout को metadata के रूप में pass किया जाता है, उदाहरण के लिए metadata_orderId=123।
Disable flag तभी प्रभावी होता है जब matching field में कोई value हो, उदाहरण के लिए disableEmail=true के साथ email। Handler अपने config से returnUrl को link में redirect_url के रूप में जोड़ता है।
यदि productId missing है, तो handler 400 response लौटाता है। Invalid query parameters या आपके account में मौजूद न रहने वाला product भी 400 लौटाते हैं।

Response Format

Static checkout checkout URL के साथ JSON response लौटाता है। Test mode में URL test.checkout.dodopayments.com का उपयोग करता है:
  • Parameters को POST request में JSON body के रूप में भेजें।
  • One-time और recurring payments दोनों का समर्थन करता है। Handler product retrieve करता है, फिर यदि product recurring है तो subscription और अन्यथा one-time payment create करता है।
  • Body में billing (जिसमें street, city, state, country और zipcode हों) और customer, साथ ही product_id या product_cart चाहिए। Subscriptions के लिए product_id आवश्यक है।
  • प्रत्येक supported body field के लिए देखें:
Dynamic checkout deprecated POST /payments और POST /subscriptions endpoints को proxy करता है। यह existing integrations के लिए काम करता रहता है, लेकिन नई integrations को checkout sessions का उपयोग करना चाहिए।

Response Format

Dynamic checkout payment link को checkout URL के रूप में JSON response में लौटाता है:
Checkout sessions one-time purchases और subscriptions के लिए hosted checkout बनाते हैं, जिसमें customization पर पूरा control होता है। product_cart एकमात्र required field है और इसमें कम से कम एक product होना चाहिए। यदि body में return_url नहीं है, तो handler अपने config से returnUrl का उपयोग करता है।प्रत्येक checkout_url एक बार काम करता है और 24 घंटे बाद expire हो जाता है, या जब आप confirm: true pass करते हैं तब 15 मिनट बाद। payment_method_id के साथ बनाई गई session कोई checkout_url नहीं लौटाती, इसलिए handler 400 response देता है।अधिक details और सभी supported fields के लिए Checkout Sessions Integration Guide देखें।

Response Format

Checkout sessions checkout URL के साथ JSON response लौटाती हैं:

Customer Portal Route Handler

Customer Portal route handler आपके द्वारा दिए गए customer के लिए Customer Portal session बनाता है और browser को उस पर redirect करता है। CustomerPortal, Checkout के समान bearerToken और environment options लेता है।
Handler यह check नहीं करता कि इसे कौन call कर रहा है। Customer ID के साथ request करने वाला कोई भी व्यक्ति उस customer का portal प्राप्त कर सकता है। Route को अपने authentication से protect करें और केवल signed-in user की customer ID pass करें।

Query Parameters

string
आवश्यक
Portal session के लिए customer ID, उदाहरण के लिए ?customer_id=cus_123।
boolean
यदि इसे true पर set किया जाता है, तो Dodo Payments customer को portal link email भी करता है।
यदि customer_id missing है तो handler 400 लौटाता है, और यदि portal session create नहीं की जा सकती तो 500 लौटाता है।

Webhook Route Handler

Webhook route handler आपका code चलाने से पहले, webhookKey के रूप में दिए गए webhook secret से प्रत्येक request को verify करता है:
  • Method: केवल POST requests supported हैं। अन्य methods 405 लौटाते हैं।
  • Signature Verification: Standard Webhooks specification का पालन करते हुए webhookKey के साथ webhook-id, webhook-timestamp और webhook-signature headers verify करता है। Verification fail होने पर 401 लौटाता है।
  • Payload Validation: Zod के साथ payload validate करता है। Invalid payload के लिए 400 लौटाता है।
  • Error Handling:
    • 401: Invalid signature
    • 400: Invalid payload
    • 500: Verification के दौरान internal error
  • Event Routing: प्रत्येक event के लिए onPayload call करता है, फिर event के type के handler को call करता है और 200 लौटाता है।
Adaptor आपके handlers में thrown errors को catch नहीं करता। वे TanStack Start तक propagate होते हैं और request fail हो जाती है।

Supported Webhook Event Handlers

प्रत्येक handler optional और async है और अपने event type के लिए verified payload प्राप्त करता है:
प्रत्येक event का अर्थ जानने के लिए Webhook Event Guide देखें।

Prompt for LLM

Adaptor को अपने project में add करवाने के लिए इस prompt को अपने AI coding assistant में copy करें। अपने agent को Dodo Payments docs और skills भी देने के लिए Agent Plugin install करें।
अंतिम संशोधन 26 सितंबर 2026