跳转到主要内容

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. 初始化并部署

6. 获取您的 Webhook URL

您的 Webhook URL 是:

7. 在 DodoPayments 仪表板中注册 Webhook

  1. 访问 DodoPayments Dashboard → Developer → Webhooks
  2. 创建一个新的 webhook 端点
  3. 将您的 webhook URL 配置为该端点
  4. 启用这些订阅事件:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. 复制 Signing Secret

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

它的功能

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

主要特性

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

配置文件

数据库架构

创建的表:
  • customers - 电子邮件、姓名、dodo_customer_id
  • subscriptions - 状态、金额、next_billing_date,链接到客户
  • webhook_events - 带有 webhook_id 的事件日志以实现幂等性

实现代码

它是如何工作的

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

测试

本地开发:
在 Netlify 仪表板查看日志:
  1. 选择您的站点 → Functions 选项卡
  2. 点击 webhook 函数
  3. 查看实时日志和调用历史记录
在 DodoPayments 仪表板中配置:
  1. 转到开发者 → Webhooks
  2. 使用您的 Netlify 函数 URL 添加端点
  3. 启用:subscription.active, subscription.cancelled, subscription.renewed

常见问题

资源

最后修改于 2026年5月22日