> ## 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>
  产品是 Dodo Payments 的基础。无论您是销售一次性下载、定期订阅还是基于使用的访问，都可以通过创建产品开始。每个产品定义其定价、结账显示方式和购买后的履行方式。
</Info>

<CardGroup cols={3}>
  <Card title="One‑Time" icon="credit-card" href="/features/one-time-payment-products">
    一次性收费以获得终生访问或单个交付。
  </Card>

  <Card title="Subscriptions" icon="repeat" href="/features/subscription">
    通过试用、比例调整和附加组件进行定期账单。
  </Card>

  <Card title="Usage‑Based" icon="arrow-trend-up" href="/features/usage-based-billing/introduction">
    根据实际使用量进行计量并收费。
  </Card>
</CardGroup>

## 创建产品

您可以通过仪表板或 API 创建产品。提前选择定价模型：一次性、订阅或基于使用，然后配置详细信息。定价模型不能在以后更改；如果需要不同的模型，请创建新产品。

<Steps>
  <Step title="Name & description">
    提供一个明确的标题和简洁的价值导向描述。描述中支持 Markdown。

    <Tip>
      将第一句话面向客户并以结果为导向；它在结账时显著显示。
    </Tip>

    <Frame>
      <img src="https://mintcdn.com/dodopayments/r-ndtvzx3WhKqwER/images/products.png?fit=max&auto=format&n=r-ndtvzx3WhKqwER&q=85&s=fb41221c4f2af4de0155e71de1ac6904" alt="产品" style={{ maxHeight: '500px', width: 'auto' }} width="1911" height="927" data-path="images/products.png" />
    </Frame>
  </Step>

  <Step title="Pricing model & price">
    选择定价模型：

    * **一次性**：一次性付款的固定价格。
    * **订阅**：具有间隔和可选试用的定期价格。
    * **基于使用**：价格来自计量事件。

    然后设置定价：

    * **价格**：基本金额和货币。
    * **折扣 (%)**：在结账和发票中显示的可选内联折扣。
    * 对于订阅，设置 **每次重复**（例如，1 个月或 1 年）和 **试用天数**（如果需要）。订阅价格必须至少为 **\$1**（或您选择的货币的等值）；低于此最小值的金额不受支持，订阅将不起作用。

    <Tip>
      希望以每种货币或国家/地区设置固定价格，而不是使用实时外汇转换？在产品上设置 `pricing_mode`，并附加 [Localized Pricing](/features/localized-pricing) 规则，例如以 EUR 显示 €9.99 或在印度以 ₹999 显示。
    </Tip>

    <Warning>
      更改价格仅影响新购买。现有订阅遵循计划更改规则。
    </Warning>
  </Step>

  <Step title="Product media">
    上传图片以在结账和发票中展示产品。支持 PNG/JPG/WebP ，最大可达 3 MB。随时重新排序或更换。
  </Step>

  <Step title="Automated entitlements (Under Advanced Settings)">
    附加付款后的自动激活履行：

    * **许可证密钥**：发放和验证唯一密钥
    * **文件下载**：提供安全文件访问
    * **自定义**：通过 webhooks 触发您自己的授权逻辑

    随着您的报价演变，添加或删除权益。现有订阅者将相应地获得或失去访问权限。
  </Step>
</Steps>

## 变体和定价选项

不要在一个产品下创建变体，而是为每个定价选项（例如，月度和年度）创建单独的产品。然后将它们分组到一个 **产品集合** 中，以便在结账时展示所有选项并允许在客户门户中切换计划。

<Frame>
  <img src="https://mintcdn.com/dodopayments/2YrxTqbaYgAm54C_/images/product-collection/checkout-page.png?fit=max&auto=format&n=2YrxTqbaYgAm54C_&q=85&s=1890932384bc32c8126c7993f3581855" alt="产品集合" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/checkout-page.png" />
</Frame>

### 为什么采用这种方法？

* **明确的定价模型**：每个产品都有一个单一且明确定义的定价模型（一次性、订阅或基于使用）
* **可预测的API**：更简单的集成，无需嵌套变体逻辑
* **更易于报告**：无需变体聚合即可跟踪每个产品的收入和指标
* **灵活的结账**：并排显示多个产品，让客户比较和选择

### 产品集合如何工作

1. **创建产品**：为每个计划设置单独产品（例如，启动月度、启动年度、专业月度、专业年度）
2. **分组到一个集合中**：将相关产品添加到产品集合中
3. **统一结账**：客户在一个结账中看到所有选项并选择他们的首选计划
4. **计划切换**：客户可以通过客户门户在同一集合中的产品之间升级或降级

<Card title="Product Collections" icon="layer-group" href="/features/product-collections">
  将相关产品组合在一起，实现统一结账体验和无缝的升级/降级路径。
</Card>

## 管理产品

您可以通过仪表板或编程方式通过 API 管理产品。API 提供对产品创建、更新、检索、图像上传和归档的全面控制。

### 仪表板管理

* **更新**：随时编辑名称、描述、图像、价格、字段和权益（定价模型不可变）。
* **归档**：在不打扰现有客户的情况下隐藏产品以防止新购买。您可以稍后取消归档。

### API 管理

以下说明允许您创建、更新、管理和检索产品，包括上传图像。

<AccordionGroup>
  <Accordion title="Creating a Product">
    产品可以是一次性商品或基于订阅的服务。要创建新产品，请向 `POST` 端点发送请求，提供名称、描述、价格、货币以及是否为循环产品等详细信息。

    对于循环产品，将 `price` 对象设置为循环价格（`type: recurring_price`），并指定 `payment_frequency_interval` 和 `subscription_period_interval`（`Day`、`Week`、`Month` 或 `Year`），以及它们相应的计数。

    <Card title="Create Product API" icon="code" href="/api-reference/products/post-products">
      在创建产品 API 文档中查看详细请求和响应结构。
    </Card>
  </Accordion>

  <Accordion title="Updating a Product">
    要修改现有产品，请向 `PATCH` 端点发送请求。您可以更新名称、价格和描述等属性，同时保持其他详细信息不变。

    确保端点中的 `product_id` 与现有产品匹配。

    <Card title="Update Product API" icon="code" href="/api-reference/products/patch-products">
      在更新产品 API 文档中查看详细请求和响应结构。
    </Card>
  </Accordion>

  <Accordion title="Retrieving Products">
    您可以使用 `GET` 请求检索存储在帐户中的产品列表。这样可以检索产品详细信息，包括活动和已归档产品。

    <Card title="Retrieve Products API" icon="code" href="/api-reference/products/get-products">
      在检索产品API文档中查看详细请求和响应结构。
    </Card>
  </Accordion>

  <Accordion title="Uploading Product Images">
    您可以通过使用 API 提供的预签名 URL 将图像上传到 AWS S3 以将图像与产品关联。首先，从 `/products/{product_id}/images` 端点请求图像上传 URL，然后在 60 秒内使用提供的 URL 上传图像。

    <Warning>
      预签名 URL 在 60 秒内过期，因此必须在该时间范围内上传图像。
    </Warning>

    一旦从 API 收到预签名 URL，使用 `PUT` 方法上传图像。这确保了对 AWS S3 的安全和临时访问以上传图像。

    **支持上传到 S3 的库：**

    * **Node.js**：`axios`, `node-fetch`
    * **Python**：`requests`, `boto3`
    * **Go**：`net/http`
    * **PHP**：`GuzzleHttp`
    * **Ruby**：`rest-client`

    如果上传成功，AWS S3 将返回 `200 OK` 状态，表示图像已成功存储。

    <Card title="Upload Product Image API" icon="code" href="/api-reference/products/put-products-images">
      在上传产品图像 API 文档中查看详细请求和响应结构。
    </Card>
  </Accordion>

  <Accordion title="Archiving a Product">
    如果您不再希望显示或使用产品，可以使用 `DELETE` 请求将其归档至 `/products/{id}` 端点。此操作隐藏产品，但不会永久删除。

    <Card title="Archive Product API" icon="code" href="/api-reference/products/archive-product">
      在归档产品API文档中查看详细请求和响应结构。
    </Card>
  </Accordion>

  <Accordion title="Unarchiving a Product">
    如果需要恢复已归档的产品，请向 `POST` 端点发送请求。这将重新激活产品并使其再次可用。

    <Card title="Unarchive Product API" icon="code" href="/api-reference/products/unarchive-product">
      在取消归档产品API文档中查看详细请求和响应结构。
    </Card>
  </Accordion>

  <Accordion title="Checkout & fulfillment">
    从产品创建支付或订阅流程，并通过权益和 webhooks 自动履行。

    <CardGroup cols={3}>
      <Card title="Checkout Sessions" icon="code" href="/developer-resources/checkout-session">
        为一次性或订阅产品创建结账会话。
      </Card>

      <Card title="Payment Webhooks" icon="code" href="/developer-resources/webhooks/intents/payment">
        对支付生命周期事件作出反应。
      </Card>

      <Card title="Subscription Webhooks" icon="code" href="/developer-resources/webhooks/intents/subscription">
        处理订阅创建、续订和取消事件。
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## 最佳实践

* **以清晰为起点**：为每种定价选项创建单独的产品（每月与每年）
* **明智地使用试用**：将试用与入职相结合以推动激活
* **自动化履行**：使用权益和 webhooks 即刻交付
* **使用元数据标记**：存储您的系统 ID 以便对账

<Check>
  您已准备好创建产品并开始销售——一次性、定期或按使用计费。
</Check>

## 相关

<CardGroup cols={2}>
  <Card title="Product Analytics" icon="chart-mixed" href="/features/analytics-and-reporting#product-level-analytics">
    跟踪每个产品的收入、客户、保留率、订阅者和 MRR。
  </Card>

  <Card title="Localized Pricing" icon="earth-americas" href="/features/localized-pricing">
    为产品设置固定的每种货币或国家价格，而不是依赖实时汇率。
  </Card>
</CardGroup>
