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:- Một tài khoản Cloudflare
- 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 Database
- Đă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 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ửawrangler.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
- Truy cập Developer → Webhooks trong dashboard của Dodo Payments.
- Nhấp vào Add endpoint.
- Nhập webhook URL 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.
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à subscriptionsubscription.cancelled— Đánh dấu subscription là đã cancelledsubscription.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
customers— Email, name và Dodo Payments customer IDsubscriptions— Status, amount, ngày billing tiếp theo, được liên kết với customerwebhook_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 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 table
webhook_eventsđể phục vụ audit - Xử lý event — Tạo hoặc cập nhật customer và subscription trong database
- 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:- Truy cập Developer → Webhooks.
- Thêm một endpoint với Worker URL của bạn.
- Chọn
subscription.active,subscription.cancelledvàsubscription.renewed.