Skip to main content

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-go SDK के साथ 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 करें:
Development के दौरान दोनों keys test mode में बनाएँ। Test mode पर जाने के लिए dashboard sidebar में Live Mode switch बंद करें।
4

Configure Environment Variables

Template से project root में एक .env file बनाएँ:
.env में ये values set करें:
.env
Server startup पर इन variables को पढ़ता है:यदि कोई भी 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 करें।
अपनी .env file को version control में कभी commit न करें। Repository की .gitignore पहले से इसे exclude करती है।
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 चलाने के लिए चलाएँ:
अपना pricing page देखने के लिए http://localhost:8000 खोलें।
आपको एक 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
Pricing page template प्रत्येक price में /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 Payments localhost तक नहीं पहुँच सकता। Development के दौरान webhooks प्राप्त करने के लिए अपने local server को ngrok जैसे tunnel से expose करें:
Dodo Payments Dashboard में उस forwarding URL के साथ endpoint जोड़ें जिसे ngrok print करता है, और उसके बाद /api/webhook जोड़ें:
Endpoint की signing key को DODO_PAYMENTS_WEBHOOK_KEY में copy करें, फिर server restart करें।

Deployment

Production के लिए Build करें

make build server को bin/server में compile करता है:
make के बिना binary को build और start करने के लिए चलाएँ:

Vercel पर Deploy करें

[ Deploy with Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate) 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 से मेल खाए:
Final image, templates/ को binary के पास copy करती है, क्योंकि server working directory से templates load करता है। Image को build और run करें:
Container, .env से PORT value पर listen करता है, इसलिए port mapping से मेल कराने के लिए PORT=8000 को बनाए रखें।

Production Considerations

Production पर deploy करने से पहले:
  • DODO_PAYMENTS_ENVIRONMENT को live_mode पर set करें।
  • Dashboard से live mode API key का उपयोग करें।
  • Webhook endpoint को अपने production domain पर point करें और उस endpoint की signing key का उपयोग करें।
  • DODO_PAYMENTS_RETURN_URL को अपने production domain के किसी page पर set करें।
  • प्रत्येक endpoint को HTTPS पर serve करें।

Troubleshooting

जाँचें कि go version Go 1.24.4 या बाद का version report करता है, फिर modules दोबारा download करें:
सामान्य कारण:
  • 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 करता है।
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 नहीं करती।
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 में सहायता के लिए:
अंतिम संशोधन 26 सितंबर 2026