Skip to main content

GitHub Repository

Hoàn thành mã nguồn và hướng dẫn cài đặt

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 từ Connection Details.

4. Thiết lập các biến môi trường ban đầu

Bạn sẽ thiết lập DODO_PAYMENTS_WEBHOOK_KEY sau khi triển khai, khi đã có URL webhook.

5. Khởi tạo & triển khai

6. Lấy URL webhook

URL webhook của bạn là:

7. Đăng ký webhook trong DodoPayments Dashboard

  1. Truy cập Developer → Webhooks trong dashboard của Dodo Payments.
  2. Nhấp vào Add endpoint.
  3. Nhập URL webhook 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 Webhook Key & triển khai 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 các bản ghi customer và subscription
  • subscription.cancelled — Đánh dấu subscription là đã 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 bảng 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ố 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 dựa trên nhu cầu của mình.

Các file cấu hình

Database Schema

Các bảng được tạo:
  • customers — Email, tên và customer ID của Dodo Payments
  • subscriptions — Trạng thái, số tiền, ngày billing tiếp theo, được liên kết với customers
  • 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 ghi 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 bảng webhook_events để phục vụ audit trail
  4. Xử lý event — Tạo hoặc cập nhật customers và subscriptions trong Neon
  5. Xử lý lỗi — Ghi log các lỗi và đánh dấu event là chưa được xử lý để retry

Kiểm thử

Phát triển cục bộ:
Xem log trong dashboard của Netlify:
  1. Chọn site của bạn và truy cập Functions.
  2. Nhấp vào function webhook.
  3. Xem log theo thời gian thực và lịch sử invocation.
Cấu hình trong dashboard của Dodo Payments:
  1. Truy cập Developer → Webhooks.
  2. Thêm một endpoint với URL Netlify Functions 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