Skip to main content

GitHub Repository

完整的源代码和设置指南

快速设置

1. 前置条件

你需要:

2. 安装依赖

3. 数据库设置

  1. 注册 Neon 并创建一个项目。
  2. 打开 SQL Editor。
  3. 复制 schema.sql 的全部内容并运行。
  4. 从 Connection Details 中复制你的连接字符串。

4. 设置初始环境变量

部署后,获取 webhook URL 后,你需要设置 DODO_PAYMENTS_WEBHOOK_KEY。

5. 初始化并部署

6. 获取你的 Webhook URL

你的 webhook URL 是:

7. 在 DodoPayments 控制面板中注册 Webhook

  1. 在 Dodo Payments 控制面板中前往 Developer → Webhooks。
  2. 点击 Add endpoint。
  3. 输入你的 webhook URL。
  4. 选择以下事件:subscription.active、subscription.cancelled、subscription.renewed。
  5. 点击 Create endpoint 并复制 signing secret。

8. 设置 Webhook Key 并重新部署

功能说明

Webhook handler 会处理 subscription 事件并将其存储在 PostgreSQL 中:
  • subscription.active — 创建或更新 customer 和 subscription 记录
  • subscription.cancelled — 将 subscription 标记为已取消
  • subscription.renewed — 更新下次计费日期

主要功能

  • Signature verification — 使用 Dodo Payments SDK 验证 webhook 的真实性
  • Idempotency — 使用 webhook-id header 防止重复处理
  • Event logging — 将所有事件存储在 webhook_events table 中,以便进行审计追踪
  • Error handling — 记录失败并将事件标记为可重试
此示例使用最少的字段处理三个核心 subscription 事件。你可以根据需求扩展它,以支持其他事件类型和字段。

配置文件

数据库架构

已创建的表:
  • customers — Email、姓名和 Dodo Payments customer ID
  • subscriptions — 状态、金额、下次计费日期,以及关联的 customer
  • webhook_events — 包含 webhook ID 的事件日志,用于实现幂等性

实现代码

工作原理

Webhook handler 的工作流程:
  1. 验证签名 — 使用 Dodo Payments SDK 通过 HMAC-SHA256 验证请求
  2. 检查重复事件 — 使用 webhook-id header,防止重复处理同一事件
  3. 记录事件 — 将原始 webhook 存储在 webhook_events table 中,以便进行审计追踪
  4. 处理事件 — 在 Neon 中创建或更新 customer 和 subscription
  5. 处理错误 — 记录失败,并将事件标记为未处理,以便重试

测试

本地开发:
在 Netlify 控制面板中查看日志:
  1. 选择你的站点并前往 Functions。
  2. 点击 webhook function。
  3. 查看实时日志和调用历史。
在 Dodo Payments 控制面板中配置:
  1. 前往 Developer → Webhooks。
  2. 使用你的 Netlify Functions URL 添加 endpoint。
  3. 选择 subscription.active、subscription.cancelled 和 subscription.renewed。

常见问题

资源

最后修改于 2026年9月26日