GitHub Repository 最小 Go + Dodo Payments boilerplate
Go boilerplate 提供了一个生产就绪的起点,用于将 Dodo Payments 集成到您的 Go 后端中。此模板包括结账会话处理、Webhook 验证、客户门户集成,并遵循 Go 最佳实践,帮助您快速开始接受支付。
此模板使用 Go 1.21+ 和干净架构模式 (cmd, internal, templates)、HTML 模板,以及 dodopayments-go SDK 以实现无缝的 API 集成。
快速设置 - 在 5 分钟内开始
支付集成 - 使用 dodopayments-go SDK 预配置的结账流程
现代 UI - 干净、深色主题的定价页面,配有 HTML 模板
Webhook 处理 - 安全验证和处理支付事件
客户门户 - 自助订阅管理
Go 最佳实践 - 使用 cmd、internal 和 templates 的干净架构
预填充结账 - 演示传递客户数据以改善用户体验
先决条件
在开始之前,请确保您拥有:
Go 1.21+
Dodo Payments 账户 (以从仪表板访问 API 和 Webhook 密钥)
快速开始
克隆仓库
git clone https://github.com/dodopayments/go-boilerplate.git
cd go-boilerplate
配置环境变量
在根目录中创建一个 .env 文件: 使用您的 Dodo Payments 凭证更新值: DODO_PAYMENTS_API_KEY = your_api_key_here
DODO_PAYMENTS_WEBHOOK_KEY = your_webhook_signing_key_here
DODO_PAYMENTS_RETURN_URL = http://localhost:8000
DODO_PAYMENTS_ENVIRONMENT = test_mode
切勿将您的 .env 文件提交到版本控制。它已包含在 .gitignore 中。
添加您的产品
使用来自 Dodo Payments 的实际产品 ID 更新 internal/lib/products.go: var Products = [] Product {
{
ProductID : "pdt_001" , // Replace with your product ID
Name : "Basic Plan" ,
Description : "Get access to basic features and support" ,
Price : 9999 , // in cents
Features : [] string {
"Access to basic features" ,
"Email support" ,
"1 Team member" ,
"Basic analytics" ,
},
},
// ... add more products
}
项目结构
go-boilerplate/
├── cmd/
│ └── server/ # Application entry point
├── internal/
│ ├── api/ # API handlers (Checkout, Portal, Webhook)
│ ├── core/ # Configuration and system core
│ └── lib/ # Shared logic (Products, Customer utils)
├── templates/ # HTML templates
├── Makefile # Build and run commands
├── go.mod # Go module definition
├── go.sum # Dependency checksums
├── .env.example # Environment template
└── README.md
API 端点
该 boilerplate 包含以下预配置的端点:
端点 方法 描述 /GET 带有产品列表的定价页面 /api/checkoutPOST 创建新的结账会话 /api/webhookPOST 处理 Dodo Payments webhook /api/customer-portalPOST 生成客户门户 URL
自定义
更新产品信息
编辑 internal/lib/products.go 以修改:
产品 ID(来自您的 Dodo 仪表板)
定价
特性
描述
var Products = [] Product {
{
ProductID : "pdt_001" , // Replace with your product ID
Name : "Basic Plan" ,
Description : "Get access to basic features and support" ,
Price : 9999 ,
Features : [] string {
"Access to basic features" ,
"Email support" ,
"1 Team member" ,
"Basic analytics" ,
},
},
}
预填客户数据
在 templates/index.html 中,将硬编码的客户数据替换为您的实际用户数据:
const customerData = {
name: "John Doe" , // Replace with actual logged-in user's name
email: "john@example.com" // Replace with actual logged-in user's email
};
在生产应用中,您将动态注入这些值来自您的身份验证系统。
Webhook 事件
该模板演示了如何在 internal/api/webhook.go 中处理 webhook 事件。支持的事件包括:
事件 描述 subscription.active当订阅变为活动时触发 payment.succeeded当支付成功时触发
在 webhook 处理程序中添加您的业务逻辑,以:
更新数据库中的用户权限
发送确认电子邮件
提供对数字产品的访问
跟踪分析和指标
本地测试 Webhooks
对于本地开发,使用 ngrok 来暴露您的本地服务器:
在您的 Dodo Payments 仪表板 中更新 webhook URL:
https://your-ngrok-url.ngrok.io/api/webhook
为生产构建
或者手动:
go build -o bin/server cmd/server/main.go
./bin/server
部署到 Vercel
[
](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate )
Docker
创建一个 Dockerfile:
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o bin/server cmd/server/main.go
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/bin/server .
COPY --from=builder /app/templates ./templates
EXPOSE 8000
CMD [ "./server" ]
构建并运行:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo
生产注意事项
在部署到生产环境之前:
将 DODO_PAYMENTS_ENVIRONMENT 切换到 live_mode
使用来自仪表板的生产 API 密钥
将 webhook URL 更新为您的生产域名
为所有端点启用 HTTPS
故障排除
确保 Go 模块已正确下载: go mod tidy
go mod download
常见原因:
产品 ID 无效 - 验证它是否存在于您的 Dodo 仪表板中
在 .env 中的 API 密钥或环境设置错误
检查服务器日志以获取详细错误消息
对于本地测试,使用 ngrok 来暴露您的服务器: 在您的 Dodo 仪表板 中更新 webhook URL 为 ngrok URL。确保使用正确的 webhook 验证密钥更新您的 .env 文件。
确保您从项目根目录运行服务器,或者确保模板路径在您的代码中正确配置。
了解更多
需要有关 boilerplate 的帮助吗?