GitHub Repository
精简的 Go + Dodo Payments 样板
概述
Go boilerplate 提供了一个生产就绪的起点,用于将 Dodo Payments 集成到您的 Go 后端中。此模板包括结账会话处理、Webhook 验证、客户门户集成,并遵循 Go 最佳实践,帮助您快速开始接受支付。该样板使用 Go 1.21+ 并采用清晰的架构模式(
cmd、internal、templates)、HTML 模板,以及 dodopayments-go SDK 实现无缝的 API 集成。特性
- 快速设置 - 在 5 分钟内开始
- 支付集成 - 使用
dodopayments-goSDK 的预配置结账流程 - 现代 UI - 使用 HTML 模板的清爽暗色主题定价页面
- Webhook 处理 - 安全地验证并处理支付事件
- 客户门户 - 自助订阅管理
- Go 最佳实践 - 采用
cmd、internal和templates的清晰架构 - 预填写结账 - 展示如何传递客户数据以提升体验
先决条件
在开始之前,请确保您拥有:- Go 1.21+
- Dodo Payments 账户(以从仪表板访问 API 和 Webhook 密钥)
快速开始
Get API Credentials
在 Dodo Payments 注册,并从仪表板获取凭证:
- API 密钥: 仪表板 → 开发者 → API 密钥
- Webhook 密钥: 仪表板 → 开发者 → Webhooks
Run the Development Server
项目结构
API 端点
该 boilerplate 包含以下预配置的端点:| 端点 | 方法 | 描述 |
|---|---|---|
/ | GET | 显示产品列表的定价页面 |
/api/checkout | POST | 创建新的结账会话 |
/api/webhook | POST | 处理 Dodo Payments 的 webhook |
/api/customer-portal | POST | 生成客户门户 URL |
自定义
更新产品信息
编辑internal/lib/products.go 以修改:
- 产品 ID(来自你的 Dodo 仪表板)
- 定价
- 功能
- 描述
预填客户数据
在templates/index.html 中,用你的实际用户数据替换硬编码的客户数据:
Webhook 事件
该样板展示了如何在internal/api/webhook.go 中处理 webhook 事件。支持的事件包括:
| 事件 | 描述 |
|---|---|
subscription.active | 在订阅变为激活时触发 |
payment.succeeded | 在付款成功时触发 |
- 更新数据库中的用户权限
- 发送确认电子邮件
- 提供对数字产品的访问
- 跟踪分析和指标
本地测试 Webhooks
对于本地开发,使用 ngrok 来暴露您的本地服务器:部署
为生产构建
部署到 Vercel
[Docker
创建一个Dockerfile:
生产注意事项
故障排除
Build errors or missing dependencies
Build errors or missing dependencies
确保 Go 模块已正确下载:
Checkout session creation fails
Checkout session creation fails
常见原因:
- 无效的产品 ID - 确认它在你的 Dodo 仪表板中存在
.env中的 API 密钥或环境设置错误- 检查服务器日志以获取详细错误信息
Webhooks not receiving events
Webhooks not receiving events
Templates not loading
Templates not loading
确保你从项目根目录运行服务器,或者在代码中正确配置了模板路径。
了解更多
Go SDK
完整的 Go SDK 文档
Webhooks Documentation
了解所有 webhook 事件和最佳实践
Checkout Sessions
深入了解结账会话配置
API Reference
完整的 Dodo Payments API 文档
支持
需要有关 boilerplate 的帮助吗?- 加入我们的 Discord 社区 进行提问和讨论
- 查看 GitHub 仓库 以获取问题和更新
- 联系我们的 支持团队 寻求帮助