Skip to main content

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:

2. Cài đặt Dependencies

3. Thiết lập cơ sở dữ liệu

  1. Đăng ký Neon và tạo một project.
  2. Mở SQL Editor.
  3. Sao chép toàn bộ nội dung của schema.sql và chạy nội dung đó.
  4. 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

  1. Truy cập Developer → Webhooks trong dashboard Dodo Payments.
  2. Nhấp vào Add endpoint.
  3. Nhập webhook URL của bạn.
  4. Chọn các event sau: subscription.active, subscription.cancelled, subscription.renewed.
  5. 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à subscription
  • subscription.cancelled — Đánh dấu subscription là đã bị hủy
  • subscription.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

Các table được tạo:
  • customers — Email, name và customer ID của Dodo Payments
  • subscriptions — Status, amount, ngày billing tiếp theo, liên kết với customer
  • webhook_events — Event log với webhook ID để đảm bảo idempotency

Mã triển khai

Cách hoạt động

Webhook handler:
  1. Tắt body parsing — Để truy cập raw body nhằm xác minh chữ ký
  2. Xác minh chữ ký — Sử dụng Dodo Payments SDK để xác minh request bằng HMAC-SHA256
  3. 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
  4. Ghi log event — Lưu raw webhook vào table webhook_events để phục vụ audit trail
  5. Xử lý event — Tạo hoặc cập nhật customer và subscription trong Neon
  6. 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ộ:
Xem log trong dashboard Vercel:
  1. Chọn project của bạn.
  2. Truy cập Deployments → deployment mới nhất.
  3. Nhấp vào Functions → Logs.
Cấu hình trong dashboard Dodo Payments:
  1. Truy cập Developer → Webhooks.
  2. Thêm endpoint với URL Vercel Functions của bạn.
  3. Chọn subscription.active, subscription.cancelled và subscription.renewed.

Các vấn đề thường gặp

Tài nguyên

Lần sửa đổi cuối 26 tháng 9, 2026