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:- Một tài khoản Netlify
- 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 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
- Truy cập Developer → Webhooks trong dashboard của Dodo Payments.
- Nhấp vào Add endpoint.
- Nhập URL webhook 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 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à subscriptionsubscription.cancelled— Đánh dấu subscription là đã 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 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
customers— Email, tên và customer ID của Dodo Paymentssubscriptions— Trạng thái, số tiền, ngày billing tiếp theo, được liên kết với customerswebhook_events— Event log với webhook ID để đảm bảo idempotency
Code triển khai
Cách hoạt động
Webhook handler:- Xác minh chữ ký — Sử dụng Dodo Payments SDK để xác minh request bằng HMAC-SHA256
- 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 - Ghi log event — Lưu webhook thô vào bảng
webhook_eventsđể phục vụ audit trail - Xử lý event — Tạo hoặc cập nhật customers và subscriptions 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 thử
Phát triển cục bộ:- Chọn site của bạn và truy cập Functions.
- Nhấp vào function
webhook. - Xem log theo thời gian thực và lịch sử invocation.
- Truy cập Developer → Webhooks.
- Thêm một endpoint với URL Netlify Functions của bạn.
- Chọn
subscription.active,subscription.cancelledvàsubscription.renewed.