跳转到主要内容

GitHub Repository

完整的源代码与设置指南

快速设置

1. 先决条件

2. 安装依赖

3. 数据库设置

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

4. 设置初始环境变量

通过 Vercel CLI:
注意: 一旦部署完成并拥有 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 - 更新下一个账单日期

主要特性

Signature verification - 使用 dodopayments 库
Idempotency - 使用 webhook ID 防止重复处理
Event logging - 在 webhook_events 表中保留完整审计日志
Error handling - 记录并支持重试
注意: 此实现演示了如何处理三类核心订阅事件(subscription.activesubscription.cancelledsubscription.renewed)并使用最少字段。你可以根据需求轻松扩展以支持更多事件类型和字段。

配置文件

数据库架构

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

实现代码

工作原理

Webhook 处理器:
  1. 禁用正文解析 - 以便访问原始正文用于签名验证
  2. 验证签名 - 使用 HMAC-SHA256 确保请求来自 DodoPayments
  3. 检查重复 - 使用 webhook ID 防止重复处理同一事件
  4. 记录事件 - 将原始 webhook 存入 webhook_events 表以保持审计跟踪
  5. 处理事件 - 在 Neon 中创建或更新客户与订阅
  6. 处理错误 - 记录失败并将事件标记为未处理以便重试

测试

本地开发:
在 Vercel 仪表板中查看日志:
  1. 选择您的项目
  2. 转到 部署 → 最新部署
  3. 点击 函数日志
在 DodoPayments 仪表板中配置:
  1. 转到开发者 → Webhooks
  2. 添加端点,使用您的 Vercel Functions URL
  3. 启用:subscription.active, subscription.cancelled, subscription.renewed

常见问题

资源

最后修改于 2026年5月22日