跳转到主要内容

概述

Better Auth Adapter 为 Dodo Payments 提供:
  • 注册时自动创建客户
  • 结账会话(首选)与产品 slug 映射
  • 自助客户门户
  • 用于基于使用量计费的计量使用摄取和报告端点
  • 实时 webhook 事件处理和签名验证
  • 完全支持 TypeScript
要使用此集成,您需要一个 Dodo Payments 帐户和 API 密钥。

先决条件

  • Node.js 20+
  • 访问您的 Dodo Payments 仪表板
  • 使用 better-auth 的现有项目

安装

1

Install dependencies

在项目根目录运行以下命令:
所有必需的包现已安装。

设置

1

Configure environment variables

将这些添加到您的 .env 文件:
切勿将 API 密钥或密钥提交到版本控制。
2

Set up server-side integration

创建或更新 src/lib/auth.ts
在生产环境中将 environment 设置为 live_mode
3

Set up client-side integration

创建或更新 src/lib/auth-client.ts

使用示例

对于新的集成,优先使用 authClient.dodopayments.checkoutSession。 旧的 checkout 方法已弃用,仅为向后兼容保留。

创建结账会话(首选)

与传统的checkout方法不同,checkoutSession不需要预先获取账单信息,因为这些信息会在结账页面由用户提供。你仍然可以通过传递billing键来覆盖它。
类似于传统的checkout方法,checkoutSession会从用户的better-auth会话中获取客户的电子邮件和姓名,不过,你可以通过传递包含电子邮件和姓名的customer对象来覆盖它。
你可以在参数中传递与创建结账会话端点的请求体相同的选项。
返回URL来自服务器插件中配置的successUrl。你无需在客户端负载中包含return_url

传统结账(已弃用)

authClient.dodopayments.checkout方法已弃用。请在新的实现中使用checkoutSession

访问客户门户

列出客户数据

跟踪计量使用情况

在服务器上启用usage()插件以捕获计量事件,并让客户查看他们的使用量计费。
  • authClient.dodopayments.usage.ingest为已登录且验证过电子邮件的用户摄取事件。
  • authClient.dodopayments.usage.meters.list列出与客户订阅相关的计量器的最近使用情况。
摄取使用情况时,早于1小时或超过5分钟的未来时间戳将被拒绝。
如果在列出使用情况计量器时省略meter_id,将返回与客户订阅相关的所有计量器。

Webhooks

webhooks插件通过安全签名验证处理来自Dodo Payments的实时支付事件。默认端点为/api/auth/dodopayments/webhooks
1

Generate and set webhook secret

在Dodo Payments仪表板中为你的端点URL(例如,https://<your-domain>/api/auth/dodopayments/webhooks)生成一个webhook密钥,并将其设置在你的.env文件中。
2

Handle webhook events

示例处理器:

支持的Webhook事件处理器

配置参考

  • client(必需):DodoPayments客户端实例
  • createCustomerOnSignUp(可选):在用户注册时自动创建客户
  • use(必需):启用的插件数组(checkout, portal, usage, webhooks)
  • getCustomerParams(可选):接收BetterAuth User并返回要附加到DodoPayments客户上的额外字段的函数(例如,metadata, phone_number
  • products:产品数组或返回产品的异步函数 - successUrl:成功付款后重定向的URL - authenticatedUsersOnly:要求用户认证(默认:false)

故障排除与提示

  • 无效的API密钥:仔细检查你的DODO_PAYMENTS_API_KEY.env中。 - Webhook签名不匹配:确保webhook密钥与Dodo Payments仪表板中设置的密钥匹配。 - 客户未创建:确认createCustomerOnSignUp设置为true
  • 对所有密钥和密钥使用环境变量。 - 在切换到live_mode前在test_mode中测试。 - 记录webhook事件以进行调试和审核。

LLMs提示

最后修改于 2026年7月9日