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,internalvàtemplates - 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
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:
- API Key: Bảng điều khiển → Nhà phát triển → API Keys
- Webhook Key: Bảng điều khiển → Nhà phát triển → Webhooks
Configure Environment Variables
Tạo một tệp Cập nhật các giá trị với thông tin xác thực Dodo Payments của bạn:
.env trong thư mục gốc:.env
Run the Development Server
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
API Endpoints
Boilerplate bao gồm các điểm cuối được cấu hình sẵn sau:| Endpoint | Phương thức | Mô tả |
|---|---|---|
/ | GET | Trang giá với danh sách sản phẩm |
/api/checkout | POST | Tạo phiên thanh toán mới |
/api/webhook | POST | Xử lý webhook từ Dodo Payments |
/api/customer-portal | POST | Tạ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ửainternal/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ả
Tự động điền dữ liệu khách hàng
Trongtemplates/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:
Sự kiện Webhook
Boilerplate minh họa cách xử lý các sự kiện webhook tronginternal/api/webhook.go. Các sự kiện được hỗ trợ bao gồm:
| Sự kiện | Mô tả |
|---|---|
subscription.active | Kích hoạt khi một đăng ký trở nên hoạt động |
payment.succeeded | Kích hoạt khi một thanh toán thành công |
- 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:Triển khai
Xây dựng cho sản xuất
Triển khai lên Vercel
[Docker
Tạo mộtDockerfile:
Cân nhắc sản xuất
Khắc phục sự cố
Build errors or missing dependencies
Build errors or missing dependencies
Đảm bảo các module Go được tải xuống đúng cách:
Checkout session creation fails
Checkout session creation fails
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
Webhooks not receiving events
Webhooks not receiving events
Để thử nghiệm cục bộ, hãy dùng ngrok để công khai máy chủ của bạn: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.Templates not loading
Templates not loading
Đả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
Go SDK
Tài liệu đầy đủ về Go SDK
Webhooks Documentation
Tìm hiểu về tất cả sự kiện webhook và các thực hành tốt nhất
Checkout Sessions
Đi sâu vào cấu hình phiên thanh toán
API Reference
Tài liệu đầy đủ về API Dodo Payments
Hỗ trợ
Cần giúp đỡ với boilerplate?- Tham gia cộng đồng Discord của chúng tôi để đặt câu hỏi và thảo luận
- Kiểm tra kho lưu trữ GitHub để biết các vấn đề và cập nhật
- Liên hệ với đội ngũ hỗ trợ của chúng tôi để được trợ giúp