跳转到主要内容

GitHub Repository

精简的 Go + Dodo Payments 样板

概述

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

特性

  • 快速设置 - 在 5 分钟内开始
  • 支付集成 - 使用 dodopayments-go SDK 的预配置结账流程
  • 现代 UI - 使用 HTML 模板的清爽暗色主题定价页面
  • Webhook 处理 - 安全地验证并处理支付事件
  • 客户门户 - 自助订阅管理
  • Go 最佳实践 - 采用 cmdinternaltemplates 的清晰架构
  • 预填写结账 - 展示如何传递客户数据以提升体验

先决条件

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

快速开始

1

Clone the Repository

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

Install Dependencies

make install
或者手动:
go mod download
3

Get API Credentials

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

Configure Environment Variables

在根目录创建一个 .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

Add Your Products

用 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

Run the Development Server

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 的 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 来暴露您的本地服务器:
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。确保在 .env 文件中更新正确的 webhook 验证密钥。
确保你从项目根目录运行服务器,或者在代码中正确配置了模板路径。

了解更多

Go SDK

完整的 Go SDK 文档

Webhooks Documentation

了解所有 webhook 事件和最佳实践

Checkout Sessions

深入了解结账会话配置

API Reference

完整的 Dodo Payments API 文档

支持

需要有关 boilerplate 的帮助吗?
Last modified on February 27, 2026