Skip to main content

GitHub Repository

完整的源代码和设置指南

快速设置

1. 前置条件

你需要:

2. 安装依赖

3. 数据库设置

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

4. 配置初始 Secrets

部署完成并获得 webhook URL 后,你将在此处设置 DODO_PAYMENTS_WEBHOOK_KEY。

5. 更新 wrangler.toml

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

6. 部署

7. 获取你的 Webhook URL

你的 webhook URL 是:

8. 在 Dodo Payments 控制面板中注册 Webhook

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

9. 设置 Webhook Key 并重新部署

功能说明

webhook handler 处理 subscription events,并将其存储在 PostgreSQL 中:
  • subscription.active — 创建或更新 customer 和 subscription 记录
  • subscription.cancelled — 将 subscription 标记为已取消
  • subscription.renewed — 更新下一次 billing date

主要功能

  • 签名验证 — 使用 Dodo Payments SDK 验证 webhook 的真实性
  • 幂等性 — 使用 webhook-id header 防止重复处理
  • 事件日志记录 — 将所有事件存储在 webhook_events table 中,以便进行审计
  • 错误处理 — 记录失败并将事件标记为可重试
此示例使用最少的字段处理三种核心 subscription events。你可以根据需求扩展它,以支持其他 event types 和 fields。

配置文件

数据库 Schema

已创建的表:
  • customers — Email、name 和 Dodo Payments customer ID
  • subscriptions — Status、amount、next billing date,以及关联的 customers
  • webhook_events — 包含 webhook ID 的 event log,用于实现幂等性

实现代码

工作原理

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

测试

本地开发:
在 Dodo Payments 控制面板中配置:
  1. 前往 Developer → Webhooks。
  2. 使用你的 Worker URL 添加一个 endpoint。
  3. 选择 subscription.active、subscription.cancelled 和 subscription.renewed。

常见问题

资源

最后修改于 2026年9月26日