Chuyển đến nội dung chính

GitHub Repository

Boilerplate Go + Dodo Payments tối giản

Tổng quan

Boilerplate Go cung cấp một điểm khởi đầu sẵn sàng cho sản xuất để tích hợp Dodo Payments với backend Go của bạn. Mẫu này bao gồm xử lý phiên thanh toán, xác minh webhook, tích hợp cổng khách hàng và tuân theo các thực tiễn tốt nhất của Go để giúp bạn bắt đầu chấp nhận thanh toán nhanh chóng.
Boilerplate này sử dụng Go 1.21+ với các mô hình kiến trúc sạch (cmd, internal, templates), các mẫu HTML và SDK dodopayments-go để tích hợp API mượt mà.

Tính năng

  • Khởi động nhanh - Bắt đầu trong chưa đầy 5 phút
  • Tích hợp thanh toán - Luồng thanh toán đã được cấu hình sẵn sử dụng SDK dodopayments-go
  • Giao diện hiện đại - Trang giá chủ đề tối, sạch sẽ với các mẫu HTML
  • Xử lý webhook - Xác thực và xử lý sự kiện thanh toán một cách an toàn
  • Cổng khách hàng - Quản lý đăng ký tự phục vụ
  • Thực hành tốt Go - Kiến trúc sạch với cmd, internaltemplates
  • Thanh toán điền sẵn - Minh họa việc truyền dữ liệu khách hàng để cải thiện trải nghiệm người dùng

Điều kiện tiên quyết

Trước khi bạn bắt đầu, hãy đảm bảo bạn đã có:
  • Go 1.21+
  • Tài khoản Dodo Payments (để truy cập API và Webhook Keys từ bảng điều khiển)

Bắt đầu nhanh

1

Clone the Repository

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

Install Dependencies

make install
Hoặc thủ công:
go mod download
3

Get API Credentials

Đăng ký tại Dodo Payments và lấy thông tin đăng nhập từ bảng điều khiển:
Hãy đảm bảo bạn đang ở Chế độ kiểm tra trong lúc phát triển!
4

Configure Environment Variables

Tạo một tệp .env trong thư mục gốc:
cp .env.example .env
Cập nhật các giá trị với thông tin xác thực Dodo Payments của bạn:
.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
Không bao giờ đưa tệp .env vào hệ thống kiểm soát phiên bản. Nó đã được bao gồm trong .gitignore.
5

Add Your Products

Cập nhật internal/lib/products.go bằng các ID sản phẩm thực tế từ Dodo Payments:
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
Hoặc thủ công:
go run cmd/server/main.go
Mở http://localhost:8000 để xem trang giá của bạn!
Bạn sẽ thấy một trang giá theo chủ đề tối với sản phẩm của mình đã sẵn sàng để mua.

Cấu trúc dự án

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 Endpoints

Boilerplate bao gồm các điểm cuối được cấu hình sẵn sau:
EndpointPhương thứcMô tả
/GETTrang giá với danh sách sản phẩm
/api/checkoutPOSTTạo phiên thanh toán mới
/api/webhookPOSTXử lý webhook từ Dodo Payments
/api/customer-portalPOSTTạo URL cổng khách hàng

Tùy chỉnh

Cập nhật thông tin sản phẩm

Chỉnh sửa internal/lib/products.go để tùy chỉnh:
  • ID sản phẩm (từ bảng điều khiển Dodo của bạn)
  • Giá
  • Tính năng
  • Mô tả
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",
        },
    },
}

Tự động điền dữ liệu khách hàng

Trong templates/index.html, thay dữ liệu khách hàng mã hóa cứng bằng dữ liệu người dùng thực tế của bạn:
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
};
Trong một ứng dụng sản xuất, bạn sẽ tiêm động các giá trị này từ hệ thống xác thực của bạn.

Sự kiện Webhook

Boilerplate minh họa cách xử lý các sự kiện webhook trong internal/api/webhook.go. Các sự kiện được hỗ trợ bao gồm:
Sự kiệnMô tả
subscription.activeKích hoạt khi một đăng ký trở nên hoạt động
payment.succeededKích hoạt khi một thanh toán thành công
Thêm logic kinh doanh của bạn bên trong trình xử lý webhook để:
  • Cập nhật quyền người dùng trong cơ sở dữ liệu của bạn
  • Gửi email xác nhận
  • Cung cấp quyền truy cập vào các sản phẩm kỹ thuật số
  • Theo dõi phân tích và số liệu

Kiểm tra Webhook Locally

Đối với phát triển cục bộ, sử dụng các công cụ như ngrok để mở rộng máy chủ cục bộ của bạn:
ngrok http 8000
Cập nhật URL webhook trong Bảng điều khiển Dodo Payments:
https://your-ngrok-url.ngrok.io/api/webhook

Triển khai

Xây dựng cho sản xuất

make build
Hoặc thủ công:
go build -o bin/server cmd/server/main.go
./bin/server

Triển khai lên Vercel

[ Triển khai với Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate)

Docker

Tạo một 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"]
Xây dựng và chạy:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

Cân nhắc sản xuất

Trước khi triển khai lên môi trường production:
  • Chuyển DODO_PAYMENTS_ENVIRONMENT sang live_mode
  • Sử dụng khóa API production từ bảng điều khiển
  • Cập nhật URL webhook thành miền production của bạn
  • Bật HTTPS cho tất cả các điểm cuối

Khắc phục sự cố

Đảm bảo các module Go được tải xuống đúng cách:
go mod tidy
go mod download
Các nguyên nhân phổ biến:
  • ID sản phẩm không hợp lệ - xác nhận nó tồn tại trong bảng điều khiển Dodo của bạn
  • Khóa API hoặc thiết lập môi trường sai trong .env
  • Kiểm tra nhật ký máy chủ để biết thông báo lỗi chi tiết
Để thử nghiệm cục bộ, hãy dùng ngrok để công khai máy chủ của bạn:
ngrok http 8000
Cập nhật URL webhook trong bảng điều khiển Dodo của bạn thành URL ngrok. Hãy chắc là cập nhật tệp .env với khóa xác thực webhook chính xác.
Đảm bảo bạn đang chạy máy chủ từ thư mục gốc của dự án, hoặc đường dẫn đến mẫu đã được cấu hình đúng trong mã của bạn.

Tìm hiểu thêm

Hỗ trợ

Cần giúp đỡ với boilerplate?