跳转到主要内容

GitHub Repository

最小 Go + Dodo Payments boilerplate

概述

Go boilerplate 提供了一个生产就绪的起点,用于将 Dodo Payments 集成到您的 Go 后端中。此模板包括结账会话处理、Webhook 验证、客户门户集成,并遵循 Go 最佳实践,帮助您快速开始接受支付。
此 boilerplate 使用 Go 1.21+ 和干净的架构模式 (cmd, internal, templates),HTML 模板,以及 dodopayments-go SDK,以实现无缝的 API 集成。

特性

  • 快速设置 - 在 5 分钟内开始
  • 支付集成 - 使用 dodopayments-go SDK 预配置的结账流程
  • 现代 UI - 干净的深色主题定价页面,配有 HTML 模板
  • Webhook 处理 - 安全验证和处理支付事件
  • 客户门户 - 自助订阅管理
  • Go 最佳实践 - 使用 cmd, internaltemplates 的干净架构
  • 预填结账 - 演示传递客户数据以改善用户体验

先决条件

在开始之前,请确保您拥有:
  • Go 1.21+
  • Dodo Payments 账户(以从仪表板访问 API 和 Webhook 密钥)

快速开始

1

克隆仓库

git clone https://github.com/dodopayments/go-boilerplate.git
cd go-boilerplate
2

安装依赖

make install
或者手动:
go mod download
3

获取 API 凭证

Dodo Payments 注册并从仪表板获取您的凭证:
确保在开发时处于 测试模式
4

配置环境变量

在根目录中创建一个 .env 文件:
cp .env.example .env
使用您的 Dodo Payments 凭证更新值:
.env
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 中。
5

添加您的产品

使用您在 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
}
6

运行开发服务器

make run
或者手动:
go run cmd/server/main.go
打开 http://localhost:8000 查看您的定价页面!
您应该看到一个深色主题的定价页面,您的产品已准备好购买。

项目结构

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 Webhooks
/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: "[email protected]"  // Replace with actual logged-in user's email
};
在生产应用中,您将动态注入这些值来自您的身份验证系统。

Webhook 事件

该 boilerplate 演示了在 internal/api/webhook.go 中处理 webhook 事件。支持的事件包括:
事件描述
subscription.active当订阅变为活动时触发
payment.succeeded当支付成功时触发
在 webhook 处理程序中添加您的业务逻辑,以:
  • 更新数据库中的用户权限
  • 发送确认电子邮件
  • 提供对数字产品的访问
  • 跟踪分析和指标

本地测试 Webhooks

对于本地开发,使用 ngrok 来暴露您的本地服务器:
ngrok http 8000
在您的 Dodo Payments 仪表板 中更新 webhook URL:
https://your-ngrok-url.ngrok.io/api/webhook

部署

为生产构建

make build
或者手动:
go build -o bin/server cmd/server/main.go
./bin/server

部署到 Vercel

[ 使用 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 来暴露您的服务器:
ngrok http 8000
在您的 Dodo 仪表板 中将 webhook URL 更新为 ngrok URL。确保使用正确的 webhook 验证密钥更新您的 .env 文件。
确保您从项目根目录运行服务器,或者确保模板路径在您的代码中正确配置。

了解更多

支持

需要有关 boilerplate 的帮助吗?