Chuyển đến nội dung chính

GitHub Repository

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

Thiết lập nhanh

1. Yêu cầu trước khi bắt đầu

2. Cài đặt các phụ thuộc

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

  1. Đăng ký Neon
  2. Tạo một dự án mới
  3. Mở Trình chỉnh sửa SQL
  4. Sao chép và dán nội dung của schema.sql
  5. Chạy truy vấn
  6. Lấy chuỗi kết nối của bạn từ Neon → Chi tiết kết nối

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

Ghi chú: Chúng tôi sẽ thiết lập DODO_PAYMENTS_WEBHOOK_KEY sau khi triển khai khi bạn có URL webhook.

5. Khởi tạo & 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 Bảng điều khiển DodoPayments → Nhà phát triển → Webhooks
  2. Tạo một điểm cuối webhook mới
  3. Cấu hình URL webhook của bạn làm điểm cuối
  4. Bật các sự kiện đăng ký sau:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Sao chép Bí mật ký

8. Thiết lập Khóa Webhook & Triển khai lại

Chức năng của nó

Xử lý các sự kiện đăng ký và lưu trữ chúng trong PostgreSQL:
  • subscription.active - Tạo/cập nhật hồ sơ khách hàng và đăng ký
  • subscription.cancelled - Đánh dấu đăng ký là đã hủy
  • subscription.renewed - Cập nhật ngày thanh toán tiếp theo

Tính năng chính

Xác minh chữ ký - Sử dụng thư viện dodopayments
Tính không phụ thuộc - Ngăn chặn xử lý trùng với ID webhook
Ghi nhật ký sự kiện - Dòng điều tra đầy đủ trong bảng webhook_events
Xử lý lỗi - Được ghi lại và có thể thử lại
Ghi chú: Cách triển khai này trình bày xử lý ba sự kiện đăng ký cốt lõi (subscription.active, subscription.cancelled, subscription.renewed) với các trường tối thiểu. Bạn có thể dễ dàng mở rộng để hỗ trợ thêm loại sự kiện và trường theo yêu cầu.

Tệp cấu hình

Sơ đồ cơ sở dữ liệu

Các bảng được tạo:
  • customers - Email, tên, dodo_customer_id
  • subscriptions - Trạng thái, số tiền, next_billing_date, liên kết với khách hàng
  • webhook_events - Nhật ký sự kiện với webhook_id để đảm bảo idempotency

Mã triển khai

Cách hoạt động

Trình xử lý webhook:
  1. Xác minh chữ ký - Đảm bảo yêu cầu đến từ DodoPayments bằng HMAC-SHA256
  2. Kiểm tra trùng lặp - Sử dụng ID webhook để ngăn xử lý cùng sự kiện hai lần
  3. Ghi lại sự kiện - Lưu webhook thô vào bảng webhook_events để phục vụ kiểm tra
  4. Xử lý sự kiện - Tạo hoặc cập nhật khách hàng và đăng ký trong Neon
  5. Xử lý lỗi - Ghi lại thất bại và đánh dấu sự kiện chưa xử lý để thử lại

Kiểm tra

Phát triển cục bộ:
Xem nhật ký trong Bảng điều khiển Netlify:
  1. Chọn trang của bạn → tab Functions
  2. Nhấp vào hàm webhook
  3. Xem nhật ký thời gian thực và lịch sử gọi hàm
Cấu hình trong Bảng điều khiển DodoPayments:
  1. Đi đến Nhà phát triển → Webhooks
  2. Thêm điểm cuối với URL Netlify Functions của bạn
  3. Kích hoạt: subscription.active, subscription.cancelled, subscription.renewed

Vấn đề thường gặp

Tài nguyên

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