> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 订阅的附加组件

> 通过灵活的附加组件增强您的订阅产品，以实现基于座位的计费、功能升级和创意定价模型

<Info>
  附加组件是可以附加到您的主要订阅产品上的额外产品，使灵活的定价模型和增强的客户体验成为可能。无论您需要基于座位的计费、功能升级还是自定义定价结构，附加组件都能让您创建复杂的订阅产品。
</Info>

<CardGroup cols={2}>
  <Card title="基于座位的计费" icon="users" href="/developer-resources/seat-based-pricing">
    为额外的团队座位、用户许可证或按座位计费的容量升级创建附加组件。
  </Card>

  <Card title="Usage Extensions" icon="bolt" href="/features/usage-based-billing/introduction">
    通过灵活的附加定价扩展使用限制、API 调用或数据配额。
  </Card>
</CardGroup>

## 什么是附加组件？

附加组件是在主要订阅之外，客户可以额外购买的补充产品。它们非常适合：

* **Seat-based billing**：额外的团队成员、用户许可或并发用户
* **Feature upgrades**：高级功能、进阶分析或优先支持
* **Usage extensions**：额外的存储、API 调用或带宽额度
* **Service add-ons**：专业服务、培训或咨询小时

<Frame>
  <img src="https://mintcdn.com/dodopayments/ajOhO6Du1yNsg0hy/images/cookbooks/seat-based/seat-based-addons.png?fit=max&auto=format&n=ajOhO6Du1yNsg0hy&q=85&s=ea4ce0d437201c92590eea6c31a14e80" alt="在仪表板中附加到订阅产品的附加组件" style={{ maxHeight: '500px', width: 'auto' }} width="2338" height="1196" data-path="images/cookbooks/seat-based/seat-based-addons.png" />
</Frame>

## 主要优势

* **Flexible Pricing Models**：提供基础方案并配备可选附加组件，以构建复杂的定价结构。您可以通过随着客户需求变化而增长的升级功能来满足不同的客户群体。
* **Revenue Optimization**：展示相关附加组件以提升每位用户的平均收入（ARPU），从而在客户逐步添加功能时创造自然的追加销售机会。
* **Simplified Management**：从一个仪表板管理所有定价组件。附加组件会自动包含在结账会话和订阅管理中。
* **Customer Choice**：允许客户通过仅选择所需的附加组件来自定义订阅，从而提升满意度并减少流失。

## 创建附加组件

附加组件作为独立产品在 Dodo Payments 仪表板中创建，然后附加到您的主要订阅产品。这种分离使您能够：

* 在多个订阅产品中重用附加组件
* 独立管理定价
* 单独跟踪附加组件的表现
* 更新附加组件而不影响基础订阅

<Frame>
  <img src="https://mintcdn.com/dodopayments/ajOhO6Du1yNsg0hy/images/cookbooks/seat-based/seat-based-addons-creation.png?fit=max&auto=format&n=ajOhO6Du1yNsg0hy&q=85&s=d2c17b4a9f2f9a1b19f537f0507656a4" alt="在仪表板界面中创建附加组件" style={{ maxHeight: '500px', width: 'auto' }} width="2348" height="1606" data-path="images/cookbooks/seat-based/seat-based-addons-creation.png" />
</Frame>

### 附加组件配置

创建附加组件时可以配置：

* **Pricing**：为附加组件设置一次性或定期定价
* **Billing cycle**：必须与订阅的结算周期匹配
* **Quantity limits**：为每位客户设置最小和最大数量
* **Availability**：控制哪些订阅产品可以使用该附加组件
* **Tax settings**：配置相应的税务类别

### 入门指南

准备在您的订阅业务中实施附加组件了吗？以下是入门步骤：

<Steps>
  <Step title="Plan Your Add-ons">
    识别哪些附加功能、服务或容量可以作为附加组件为客户带来价值。

    考虑：

    * 客户经常提出哪些需求？
    * 哪些功能可以单独收费？
    * 哪些会形成自然的升级路径？
  </Step>

  <Step title="Create Your First Add-on">
    使用 Dodo Payments 仪表板或 API 创建您的第一个附加组件产品。

    <Card title="Dashboard Guide" icon="box" href="/developer-resources/seat-based-pricing">
      按照我们的逐步指南在仪表板中创建附加组件。
    </Card>
  </Step>

  <Step title="Attach to Subscriptions">
    将附加组件连接到应该提供它们的相应订阅产品。
  </Step>

  <Step title="Test Integration">
    创建带有不同附加组件组合的测试结账会话，以确保所有功能正常运行。
  </Step>

  <Step title="Monitor Performance">
    跟踪附加组件的采纳率和收入影响，从而优化您的定价策略。
  </Step>
</Steps>

## API 管理

Dodo Payments 提供了一个全面的 API，用于以编程方式管理附加组件：

<AccordionGroup>
  <Accordion title="Create Add-ons">
    使用 `POST /addons` 端点创建具有自定义定价、描述和配置选项的新附加组件。

    <Card title="API Reference" icon="code" href="/api-reference/addons/create-addon">
      查看创建附加组件的完整 API 文档。
    </Card>
  </Accordion>

  <Accordion title="Update Add-ons">
    使用 `PATCH /addons/{id}` 端点修改现有附加组件，以更新定价、描述或可用性。

    <Card title="API Reference" icon="code" href="/api-reference/addons/update-addon">
      了解如何以编程方式更新附加组件详细信息。
    </Card>
  </Accordion>

  <Accordion title="List and Retrieve">
    使用 `GET /addons` 列出所有附加组件，或使用 `GET /addons/{id}` 检索特定附加组件的详细信息。

    <Card title="API Reference" icon="code" href="/api-reference/addons/list-addons">
      访问完整的列表和检索 API 文档。
    </Card>
  </Accordion>

  <Accordion title="Image Management">
    使用 `PUT /addons/{id}/images` 端点更新附加组件图片，以提升产品展示效果。

    <Card title="API Reference" icon="code" href="/api-reference/addons/update-addon-images">
      了解如何通过 API 管理附加组件图片。
    </Card>
  </Accordion>
</AccordionGroup>

## 常见使用场景

* **Seat-Based Billing**：额外的团队成员、用户许可或并发用户
* **Feature Upgrades**：高级功能、进阶分析或优先支持
* **Usage Extensions**：额外的存储、API 调用或带宽额度
* **Service Add-ons**：专业服务、培训或咨询小时

## 集成示例

### 带附加组件的结账会话

创建结账会话时，可按需包含附加组件及自定义数量：

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'your_subscription_id',
      quantity: 1,
      addons: [
        {
          addon_id: 'your_addon_id',
          quantity: 3 // 3 additional seats
        }
      ]
    }
  ],
  // ... other checkout options
});
```

### 包含附加组件的计划变更

修改现有订阅以添加、删除或更新附加组件：

```typescript theme={null}
// Add add-ons to existing subscription
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: [
    { addon_id: 'addon_123', quantity: 2 }
  ]
});

// Remove all existing add-ons
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: [] // Empty array removes all existing add-ons
});
```

### 动态定价

根据附加组件选择动态计算总费用：

```typescript theme={null}
function calculateTotalCost(basePrice: number, addons: AddonSelection[]) {
  const addonTotal = addons.reduce((sum, addon) => 
    sum + (addon.price * addon.quantity), 0
  );
  return basePrice + addonTotal;
}
```

## 最佳实践

* **Start simple**：先推出 2-3 个核心附加组件，并根据客户反馈与使用情况逐步扩展选项。
* **Maintain pricing clarity**：清晰传达附加组件定价与价值，让客户了解额外费用获得的内容。
* **Test thoroughly**：全面验证附加组件组合，确保定价计算准确并且结账流程顺畅。

### 设计考量

* **Clear Value Proposition**：每个附加组件都应具备客户易于理解的明确优势
* **Logical Grouping**：在结账流程中将相关附加组件进行分组
* **Flexible Quantities**：允许客户根据需要调整附加组件数量
* **Transparent Pricing**：在整个结账过程中直观展示总费用

<Info>
  附加组件是一种强大方式，可帮助您建立随客户成长而扩展的灵活可扩展定价模型。从简单用例起步，并根据业务和客户反馈逐步扩展，找出最适合的方案。
</Info>
