GitHub Repository
Hướng dẫn cài đặt và mã nguồn đầy đủ
Thiết lập nhanh
1. Điều kiện tiên quyết
Bạn cần:- Một tài khoản Vercel
- Một tài khoản cơ sở dữ liệu Neon
- API key của Dodo Payments từ Developer → API Keys trong dashboard
2. Cài đặt Dependencies
3. Thiết lập cơ sở dữ liệu
- Đăng ký Neon và tạo một project.
- Mở SQL Editor.
- Sao chép toàn bộ nội dung của
schema.sqlvà chạy nội dung đó. - Sao chép connection string của bạn từ Connection Details.
4. Thiết lập Environment Variables ban đầu
Bạn sẽ thiết lập
DODO_PAYMENTS_WEBHOOK_KEY sau khi triển khai, khi đã có webhook URL.5. Triển khai
6. Lấy URL Webhook của bạn
URL webhook của bạn là:7. Đăng ký Webhook trong Bảng điều khiển DodoPayments
- Truy cập Developer → Webhooks trong dashboard Dodo Payments.
- Nhấp vào Add endpoint.
- Nhập webhook URL của bạn.
- Chọn các event sau:
subscription.active,subscription.cancelled,subscription.renewed. - Nhấp vào Create endpoint và sao chép signing secret.
8. Thiết lập Khóa Webhook & Triển khai lại
Chức năng của nó
Webhook handler xử lý các event subscription và lưu chúng vào PostgreSQL:subscription.active— Tạo hoặc cập nhật bản ghi customer và subscriptionsubscription.cancelled— Đánh dấu subscription là đã bị hủysubscription.renewed— Cập nhật ngày billing tiếp theo
Tính năng chính
- Xác minh chữ ký — Sử dụng Dodo Payments SDK để xác minh tính xác thực của webhook
- Idempotency — Sử dụng header
webhook-idđể ngăn xử lý trùng lặp - Ghi log event — Lưu tất cả event vào table
webhook_eventsđể phục vụ audit trail - Xử lý lỗi — Ghi log các lỗi và đánh dấu event để retry
Ví dụ này xử lý ba event subscription cốt lõi với số field tối thiểu. Bạn có thể mở rộng để hỗ trợ thêm các loại event và field dựa trên nhu cầu của mình.
Tệp cấu hình
Sơ đồ cơ sở dữ liệu
customers— Email, name và customer ID của Dodo Paymentssubscriptions— Status, amount, ngày billing tiếp theo, liên kết với customerwebhook_events— Event log với webhook ID để đảm bảo idempotency
Mã triển khai
Cách hoạt động
Webhook handler:- Tắt body parsing — Để truy cập raw body nhằm xác minh chữ ký
- Xác minh chữ ký — Sử dụng Dodo Payments SDK để xác minh request bằng HMAC-SHA256
- Kiểm tra bản sao trùng lặp — Sử dụng header
webhook-idđể ngăn xử lý cùng một event hai lần - Ghi log event — Lưu raw webhook vào table
webhook_eventsđể phục vụ audit trail - Xử lý event — Tạo hoặc cập nhật customer và subscription trong Neon
- Xử lý lỗi — Ghi log các lỗi và đánh dấu event là chưa được xử lý để retry
Kiểm tra
Phát triển cục bộ:- Chọn project của bạn.
- Truy cập Deployments → deployment mới nhất.
- Nhấp vào Functions → Logs.
- Truy cập Developer → Webhooks.
- Thêm endpoint với URL Vercel Functions của bạn.
- Chọn
subscription.active,subscription.cancelledvàsubscription.renewed.