Skip to main content
本教程将介绍如何使用 Dodo Payments add-ons 实现基于席位的定价。你将创建一个包含额外席位 add-ons 的订阅产品,并生成带有自定义 add-on 数量的 payment links。
本教程使用 Node.js 和 Express。你可以根据所使用的框架(Next.js、React、Vue 等)调整代码,并自定义 UI 以匹配你的应用程序。
到本教程结束时,您将知道如何:
  • 创建基于座位的订阅产品
  • 设置额外座位的附加组件
  • 生成带有自定义附加组件数量的支付链接
  • 处理具有动态座位数量的结账会话

我们要构建的内容

让我们创建一个基于座位的定价模型:
  • 基础套餐:每月 $49,最多包含 5 名团队成员
  • 席位 Add-on:每增加一个席位,每月 $2
  • Payment Links:支持自定义席位数量的动态 checkout
开始之前,请确保您具备以下条件:
  • Dodo Payments 帐户
  • TypeScript/Node.js 的基本熟悉程度

第 1 步:创建您的座位附加组件

创建一个表示额外席位的 add-on。此 add-on 将附加到基础订阅,允许客户购买额外席位。
在控制面板中创建席位 add-on
我们要构建的内容:一个每个席位每月收费 $2、可添加到任意基础订阅的 add-on。
1

Navigate to Add-Ons

  1. 在 Dodo Payments 仪表板中,保持在 产品(Products) 部分
  2. 点击 附加组件(Add-Ons) 选项卡
  3. 点击 创建附加组件(Create Add-On)
这将打开附加组件创建表单。
2

Enter add-on details

为我们的席位附加组件填写以下内容:附加组件名称:Additional Team Seat描述:Add extra team members to your workspace with full access to all features价格:输入 → 2.00货币:必须与您的基础订阅货币匹配税务类别:选择适合您产品的类别。
3

Save your add-on

  1. 检查所有设置:
    • 名称:Additional Team Seat
    • 价格:每月 $2.00
  2. 点击 Create Add-On
附加组件已创建! 现在您可以将席位附加组件附加到订阅中。

第 2 步:创建您的基础订阅产品

创建一个包含 5 名团队成员的基础订阅产品。这将作为基于席位的定价模型的基础。
在控制面板中创建基础订阅产品
1

Navigate to Products

  1. 登录您的 Dodo Payments 仪表板
  2. 在左侧边栏中点击 产品(Products)
  3. 点击 创建产品(Create Product) 按钮
  4. 选择 订阅(Subscription) 作为产品类型
您将看到一个用于配置基础订阅的表单。
2

Fill in the subscription details

接下来我们为基础方案输入具体信息:产品名称:Motion描述:Where your team's documentation lives.定期价格:输入 → 49.00计费周期:选择 → Monthly货币:选择您偏好的货币(例如:USD)

第 3 步:将附加组件连接到订阅

将席位 add-on 关联到基础订阅,以便客户在 checkout 期间购买额外席位。
1

Attach the seat add-on

在控制面板中将 add-on 附加到订阅
  1. 向下滚动到 附加组件 部分
  2. 点击 添加附加组件
  3. 从下拉菜单中选择您的座位附加组件
  4. 确认它出现在您的订阅配置中
2

Save subscription changes

  1. 查看完整的订阅设置:
    • 基础方案:每月 $49,包含 5 个席位
    • 附加项:每增加一个席位,每月 $2
  2. 点击 保存更改
基于席位的定价已配置完成! 客户现在可以购买你的基础套餐,并按需添加额外席位。
创建一个能够生成带有自定义 add-on 数量的 payment links 的 Express.js 应用。这样你就可以动态创建包含任意数量额外席位的 checkout sessions。
1

Set up your project

创建一个新的 Node.js 项目并安装所需的依赖:
创建一个 tsconfig.json 文件:
2

Create your environment file

创建一个包含 Dodo Payments API key 的 .env 文件:
切勿将 API key 提交到版本控制系统。将 .env 添加到你的 .gitignore 文件中。
3

Implement the checkout session creation

创建一个包含以下代码的 src/server.ts 文件:
4

Add a simple web interface

创建一个 public/index.html 文件,以便进行简单测试:
Web 界面已创建! 现在你可以使用简单的 UI 测试不同的席位数量。
5

Serve static files

将以下内容添加到你的 src/server.ts,以提供 HTML 文件:
静态文件已配置! 访问 http://localhost:3000 查看演示界面。

第 5 步:测试实现

让我们测试基于席位的定价实现,确保一切正常运行。
1

Start your server

  1. 确保你的 .env 文件包含正确的 API key
  2. 在代码中将产品 ID 和 add-on ID 更新为 Dodo Payments 控制面板中的实际值
  3. 启动服务器:
你的服务器应成功启动,并显示 “Server is running on port 3000”
2

Test the web interface

基于席位的定价演示界面
  1. 打开浏览器并访问 http://localhost:3000
  2. 你应该会看到基于席位的定价演示界面
  3. 尝试不同的席位数量(0、3、10 等)
  4. 针对每个数量点击 “Generate Checkout Link”
  5. 验证 checkout URLs 是否正确生成
3

Test a checkout session

  1. 生成一个包含 3 个额外席位的 checkout link
  2. 点击 checkout URL,打开 Dodo Payments checkout
  3. 验证 checkout 显示:
    • 基础套餐:每月 $49
    • 额外席位:3 × 2 dollars = 每月 $6
  4. 完成测试购买
checkout 应显示正确的价格明细,并允许你完成购买。
4

Listen for webhooks and update your database

通过监听来自 Dodo Payments 的 webhook events,使数据库与订阅和席位变更保持同步。当客户完成 checkout、更新订阅或更改席位数量时,webhooks 会通知你的后端。按照官方 Dodo Payments webhooks 指南中的分步说明设置 webhook endpoints 并处理 events:

Dodo Payments Webhooks Documentation

了解如何安全地接收和处理用于订阅与席位管理的 webhook events。

故障排除

常见问题及其解决方案:
可能原因:
  • 产品 ID 或 add-on ID 无效
  • API key 没有足够的权限
  • Add-on 未正确关联到订阅
  • 网络连接问题
解决方案:
  1. 验证 Dodo Payments 控制面板中是否存在产品 ID 和 add-on ID
  2. 检查 add-on 是否已正确附加到订阅
  3. 确保 API key 具有创建 checkout session 的权限
  4. 使用简单的 GET request 测试 API connectivity

恭喜!你已实现基于席位的定价

你已成功使用 Dodo Payments 创建基于席位的定价系统。以下是你完成的内容:

Base Subscription

创建了一个每月 $49、包含 5 个席位的订阅产品

Seat Add-ons

配置了额外席位 add-ons,每个席位每月收费 $2

Checkout

构建了一个能够使用自定义席位数量生成 checkout sessions 的 API

Web Interface

创建了一个用于测试不同席位数量的简单 Web 界面
此示例演示了基于席位定价的最小实现。用于生产环境时,请添加错误处理、身份验证、数据验证和安全措施,并根据应用程序的需求调整逻辑。
最后修改于 2026年9月26日