GitHub Repository
Mã nguồn hoàn chỉnh 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:- Một tài khoản Supabase đã tạo project
- API key của Dodo Payments từ Developer → API Keys trong dashboard
2. Xác thực & Liên kết
3. Thiết lập cơ sở dữ liệu
- Truy cập dashboard Supabase.
- Mở SQL Editor.
- Sao chép toàn bộ nội dung của
schema.sqlvà chạy nội dung đó.
4. Thiết lập Secret ban đầu
Supabase tự động cung cấpSUPABASE_URL và SUPABASE_SERVICE_ROLE_KEY trong thời gian chạy.
Bạn sẽ thiết lập
DODO_PAYMENTS_WEBHOOK_KEY sau khi triển khai, khi đã có URL webhook.5. Triển khai
Function đã được thiết lập sẵn trongfunctions/webhook/index.ts.
6. Lấy URL Webhook
URL webhook của bạn là:7. Đăng ký Webhook trong Dashboard Dodo Payments
- Truy cập Developer → Webhooks trong dashboard 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 Supabase PostgreSQL:subscription.active— Tạo hoặc cập nhật bản ghi customer và subscriptionsubscription.cancelled— Đánh dấu subscription đã bị 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 SDK Dodo Payments để 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 nhật ký event — Lưu tất cả event trong bảng
webhook_eventsđể phục vụ việc kiểm toán - Xử lý lỗi — Ghi log các lỗi và đánh dấu event để thử lại
Ví dụ này xử lý ba event subscription cốt lõi với số trường tối thiểu. Bạn có thể mở rộng để hỗ trợ các loại event và trường bổ sung tùy theo nhu cầu.
Các tệp 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 customerwebhook_events— Nhật ký event với webhook ID để đảm bảo idempotency
Code triển khai
Cách hoạt động
Edge Function dựa trên Deno:- Xác minh chữ ký — Sử dụng SDK Dodo Payments để xác minh HMAC-SHA256
- Kiểm tra bản ghi trùng lặp — Sử dụng header
webhook-idđể ngăn xử lý trùng lặp - Ghi nhật ký event — Lưu dữ liệu webhook thô vào bảng
webhook_events - Xử lý cập nhật — Tạo hoặc cập nhật customer và subscription thông qua Supabase client
- Xử lý lỗi — Ghi log các lỗi và đánh dấu event để thử lại
Kiểm thử
Phát triển cục bộ:Cờ
--no-verify-jwt là bắt buộc vì webhook không chứa JWT token. Bảo mật được cung cấp thông qua việc xác minh chữ ký webhook.- Truy cập Developer → Webhooks.
- Thêm một endpoint với URL Supabase của bạn.
- Chọn
subscription.active,subscription.cancelledvàsubscription.renewed.