Skip to main content

GitHub Repository

Hoàn chỉnh mã nguồn và hướng dẫn thiết lập

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 Database

  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. Cấu hình Secrets ban đầu

Bạn sẽ thiết lập DODO_PAYMENTS_WEBHOOK_KEY sau khi deployment hoàn tất và bạn đã có webhook URL.

5. Cập nhật wrangler.toml

Chỉnh sửa wrangler.toml và đặt tên worker của bạn:

6. Deploy

7. Lấy Webhook URL

Webhook URL của bạn là:

8. Đăng ký Webhook trong Dodo Payments Dashboard

  1. Truy cập Developer → Webhooks trong dashboard của 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.

9. Đặt Webhook Key và Deploy lại

Chức năng

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à đã cancelled
  • 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
  • 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ố lượng field tối thiểu. Bạn có thể mở rộng để hỗ trợ các loại event và field bổ sung tùy theo nhu cầu.

Các File Cấu hình

Database Schema

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

Code triển khai

Cách hoạt động

Webhook handler:
  1. Xác minh chữ ký — Sử dụng Dodo Payments SDK để xác minh request bằng HMAC-SHA256
  2. Kiểm tra bản trùng lặp — Sử dụng header webhook-id để ngăn xử lý cùng một event hai lần
  3. Ghi log event — Lưu webhook thô vào table webhook_events để phục vụ audit
  4. Xử lý event — Tạo hoặc cập nhật customer và subscription trong database
  5. Xử lý lỗi — Ghi log các lỗi và đánh dấu event là chưa được xử lý để retry

Testing

Phát triển local:
Cấu hình trong dashboard của Dodo Payments:
  1. Truy cập Developer → Webhooks.
  2. Thêm một endpoint với Worker URL của bạn.
  3. Chọn subscription.active, subscription.cancelled và subscription.renewed.

Các sự cố thường gặp

Tài nguyên

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