跳转到主要内容

GitHub Repository

完整的源代码和设置指南

快速设置

1. 先决条件

2. 安装依赖

3. 数据库设置

  1. 注册 Neon
  2. 创建新项目
  3. 打开 SQL 编辑器
  4. 复制并粘贴 schema.sql 的内容
  5. 运行查询
  6. 从 Neon → Connection Details 获取连接字符串

4. 配置初始密钥

注意: 部署后在获得你的 webhook URL 后我们会设置 DODO_PAYMENTS_WEBHOOK_KEY

5. 更新 wrangler.toml

编辑 wrangler.toml 并设置你的 worker 名称:

6. 部署

7. 获取您的 Webhook URL

您的 Webhook URL 是:

8. 在 DodoPayments 仪表板中注册 Webhook

  1. 前往 DodoPayments Dashboard → Developer → Webhooks
  2. 创建一个新的 webhook 终端
  3. 将你的 webhook URL 配置为该终端
  4. 启用以下订阅事件:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. 复制 Signing Secret

9. 设置 Webhook 密钥并重新部署

它的功能

处理订阅事件并将其存储在 PostgreSQL 中:
  • subscription.active - 创建/更新客户和订阅记录
  • subscription.cancelled - 将订阅标记为已取消
  • subscription.renewed - 更新下一个账单日期

主要特性

签名验证 - 使用 dodopayments 库
幂等性 - 通过 webhook ID 防止重复处理
事件记录 - 在 webhook_events 表中保留完整的审计轨迹
错误处理 - 记录并可重试
注意: 此实现展示了如何处理三个核心订阅事件(subscription.activesubscription.cancelledsubscription.renewed)并使用最少字段。你可以根据需求轻松扩展以支持更多事件类型和字段。

配置文件

数据库架构

创建的表:
  • customers - 电子邮件、姓名、dodo_customer_id
  • subscriptions - 状态、金额、下一个账单日期,链接到客户
  • webhook_events - 带有幂等性的 webhook_id 的事件日志

实现代码

工作原理

Webhook 处理程序:
  1. 验证签名 - 使用 HMAC-SHA256 确保请求来自 DodoPayments
  2. 检查重复 - 使用 webhook ID 防止重复处理同一事件
  3. 记录事件 - 将原始 webhook 存储在 webhook_events 表中以便审计
  4. 处理事件 - 创建或更新客户和订阅
  5. 处理错误 - 记录失败并将事件标记为未处理以便重试

测试

本地开发:
在 DodoPayments 仪表板中配置:
  1. 转到开发者 → Webhooks
  2. 添加带有您的 Worker URL 的端点
  3. 启用:subscription.active, subscription.cancelled, subscription.renewed

常见问题

资源

最后修改于 2026年5月22日