GitHub Repository
Minimal Go + Dodo Payments boilerplate
अवलोकन
Go boilerplate एक न्यूनतम Go server है जो pricing page से आपके Dodo Payments products बेचता है। यह checkout sessions बनाता है, webhooks को verify और handle करता है, और Customer Portal खोलता है। इसे अपने Go backend के शुरुआती आधार के रूप में clone करें।Boilerplate के लिए Go 1.24.4 या बाद का संस्करण आवश्यक है, जो इसके
go.mod में निर्धारित संस्करण है। इसमें cmd, internal और templates layout का उपयोग किया गया है, pricing page को Go HTML templates के साथ render किया गया है और dodopayments-go SDK के माध्यम से Dodo Payments API को call किया गया है।सुविधाएँ
- त्वरित सेटअप: Repository को clone करें, अपनी API keys
.envमें जोड़ें औरmake runके साथ server शुरू करें। - Payment Integration:
dodopayments-goSDK के साथ checkout sessions बनाने वाला checkout flow। - आधुनिक UI: Go HTML templates और Tailwind CSS से बना dark-themed pricing page।
- Webhook Handling: Event process करने से पहले प्रत्येक webhook के signature को verify करता है।
- Customer Portal: Customer Portal के माध्यम से self-serve subscription management।
- Go Best Practices:
cmd,internalऔरtemplatesके साथ साफ़ project layout। - Pre-filled Checkout: Customer का name और email checkout में भेजता है, ताकि customer को उन्हें दोबारा type न करना पड़े।
आवश्यकताएँ
शुरू करने से पहले, आपके पास ये चीज़ें होनी चाहिए:- Go 1.24.4 या बाद का संस्करण।
go versionसे अपना version जाँचें। - Dodo Payments account, ताकि dashboard में API key और webhook signing key बनाई जा सके।
- कम-से-कम एक product, जो dashboard में Products के अंतर्गत बनाया गया हो।
Quick Start
1
Clone the Repository
2
Install Dependencies
make install, go mod download को चलाता है और फिर go mod tidy चलाता है। make के बिना modules download करने के लिए चलाएँ:3
Get API Credentials
Dodo Payments पर sign up करें, फिर dashboard से दोनों keys copy करें:
- API Key: Developer → API Keys
- Webhook Key: Developer → Webhooks। प्रत्येक webhook endpoint की अपनी signing key होती है। अपने local server तक पहुँचने वाला endpoint बनाने के लिए Locally Webhooks की Testing देखें।
4
Configure Environment Variables
Template से project root में एक Server startup पर इन variables को पढ़ता है:
.env file बनाएँ:.env में ये values set करें:.env
यदि कोई भी required key मौजूद न हो, तो server startup पर exit हो जाता है।
.env.example, PORT और DODO_PAYMENTS_RETURN_URL को port 8080 पर set करता है। यह page port 8000 का उपयोग करता है, इसलिए दिखाए गए अनुसार दोनों को 8000 पर set करें, या इस page के commands में 8000 को 8080 से replace करें।5
Add Your Products
internal/lib/products.go में मौजूद sample product को अपने products से replace करें। प्रत्येक product ID dashboard के Products से copy करें:Price केवल pricing page पर दिखने वाली price set करता है, currency की सबसे छोटी unit में: 9999, $99.99 के रूप में दिखता है। Checkout Dodo Payments में product की price charge करता है।6
Run the Development Server
make run server को bin/server में build करता है और उसे start करता है। Binary को पहले build किए बिना server चलाने के लिए चलाएँ:आपको एक dark-themed pricing page दिखाई देगा, जिसमें आपके products खरीदने के लिए तैयार सूचीबद्ध होंगे।
Project Structure
Repository का layout इस प्रकार है:API Endpoints
Boilerplate में पहले से configure किए गए ये endpoints शामिल हैं:Customization
Product Information Update करें
इन चीज़ों को बदलने के लिएinternal/lib/products.go edit करें:
- Product IDs (अपने Dodo Payments dashboard के Products से)
- Names
- Pricing page पर दिखाई जाने वाली pricing
- Features
- Descriptions
/mo suffix जोड़ता है और जब Price, 100000 या उससे अधिक हो, तो price के बजाय Custom दिखाता है। इसे बदलने के लिए templates/index.html edit करें।
Customer Data Pre-fill करें
.env में handleCheckout function hardcoded customer data को /api/checkout पर भेजता है। इसे अपने signed-in user के data से replace करें:
handlePortal function इस customer data का फिर से उपयोग करता है और वही sample name और email fallback के रूप में इस्तेमाल करता है। Production app में, दोनों functions में अपने authentication system से ये values inject करें।
Webhook Events
internal/api/webhook.go प्रत्येक request को client.Webhooks.Unwrap और DODO_PAYMENTS_WEBHOOK_KEY में मौजूद key से verify करता है, फिर उसके type के आधार पर event को route करता है। इन events के handlers हैं और प्रत्येक handler event data को log करता है:
Handler
subscription.on_hold, subscription.failed, subscription.expired और subscription.plan_changed को बिना किसी action के भी accept करता है और हर दूसरे event type को unhandled के रूप में log करता है। यह प्रत्येक verified event को 200 के साथ respond करता है। सभी event types के लिए Webhook Event Guide देखें।
Handler functions में अपनी business logic जोड़ें ताकि आप:
- अपने database में user permissions update कर सकें
- Confirmation emails भेज सकें
- Digital products का access provision कर सकें
- Analytics और metrics track कर सकें
Webhooks की Locally Testing
Dodo Paymentslocalhost तक नहीं पहुँच सकता। Development के दौरान webhooks प्राप्त करने के लिए अपने local server को ngrok जैसे tunnel से expose करें:
/api/webhook जोड़ें:
DODO_PAYMENTS_WEBHOOK_KEY में copy करें, फिर server restart करें।
Deployment
Production के लिए Build करें
make build server को bin/server में compile करता है:
make के बिना binary को build और start करने के लिए चलाएँ:
Vercel पर Deploy करें
[.env file की variables को Vercel project settings में जोड़ें, क्योंकि .env repository में नहीं होती। फिर dashboard में अपना webhook endpoint https://yourdomain.com/api/webhook पर set करें।
Docker
Project root में एकDockerfile बनाएँ। Build stage में Go 1.24.4 या बाद का संस्करण होना चाहिए, ताकि go.mod से मेल खाए:
templates/ को binary के पास copy करती है, क्योंकि server working directory से templates load करता है। Image को build और run करें:
.env से PORT value पर listen करता है, इसलिए port mapping से मेल कराने के लिए PORT=8000 को बनाए रखें।
Production Considerations
Troubleshooting
Build errors or missing dependencies
Build errors or missing dependencies
जाँचें कि
go version Go 1.24.4 या बाद का version report करता है, फिर modules दोबारा download करें:Checkout session creation fails
Checkout session creation fails
सामान्य कारण:
- Product ID invalid है। जाँचें कि यह आपकी API key के समान mode में Products के अंतर्गत मौजूद है।
.envमें API key याDODO_PAYMENTS_ENVIRONMENTगलत है। Test mode key के लिएtest_modeआवश्यक है।- Exact error के लिए server logs जाँचें।
500लौटाने से पहले handler प्रत्येक failed request को log करता है।
Webhooks not receiving events
Webhooks not receiving events
Local testing के लिए अपने server को ngrok से expose करें:अपने Dodo Payments dashboard में webhook URL को ngrok URL पर set करें। फिर
.env में DODO_PAYMENTS_WEBHOOK_KEY को उस endpoint की signing key पर set करें। यदि server webhook verification failed log करता है, तो key endpoint से match नहीं करती।Templates not loading
Templates not loading
Server, working directory से
templates/base.html और templates/index.html load करता है। Server को project root से start करें या cmd/server/main.go में template paths बदलें।अधिक जानें
Go SDK
संपूर्ण Go SDK documentation
Webhooks Documentation
सभी webhook events और best practices के बारे में जानें
Checkout Sessions
Checkout session configuration की गहराई से जानकारी
API Reference
संपूर्ण Dodo Payments API documentation
Support
Boilerplate में सहायता के लिए:- Discord community में प्रश्न पूछें।
- Issues और updates के लिए GitHub repository देखें।
- Support team से संपर्क करें।