产品是 Dodo Payments 的基础。无论您是销售一次性下载、定期订阅还是基于使用的访问,都可以通过创建产品开始。每个产品定义其定价、结账显示方式和购买后的履行方式。
One‑Time
一次性收费以获得终生访问或单个交付。
Subscriptions
通过试用、比例调整和附加组件进行定期账单。
Usage‑Based
根据实际使用量进行计量并收费。
创建产品
您可以通过仪表板或 API 创建产品。提前选择定价模型:一次性、订阅或基于使用,然后配置详细信息。定价模型不能在以后更改;如果需要不同的模型,请创建新产品。1
Name & description
提供一个明确的标题和简洁的价值导向描述。描述中支持 Markdown。

2
Pricing model & price
选择定价模型:
- 一次性:一次性付款的固定价格。
- 订阅:具有间隔和可选试用的定期价格。
- 基于使用:价格来自计量事件。
- 价格:基础金额和货币。您可以使用 Dodo Payments can charge 的任何货币设置基础价格,不仅限于 USD。使用可搜索的货币选择器查找货币;USD、GBP、EUR 和 INR 固定显示在列表顶部。
- 折扣 (%):可选的内联折扣,会显示在结账页面和发票中。
- 对于订阅,请设置 Repeat every(例如 1 个月或 1 年)、Trial days,以及可选的 paid trial Trial amount。订阅价格必须至少为 $1(或您所选货币的等值金额);不支持低于此最低金额的价格,订阅也将无法正常使用。
基础货币以外的客户仍会通过 Adaptive Currency 计费,因此您可以使用最适合您市场的货币创建价格,而无需更改买家被收取费用的方式。
3
Product media
上传图片,在结账页面和发票中展示产品。支持最大 3 MB 的 PNG/JPG/WebP 图片。您可以随时重新排序或替换图片。
4
Automated entitlements (Under Advanced Settings)
附加会在付款后自动激活的履约内容:
- License Keys:发放和验证唯一密钥
- File Downloads:授予安全的文件访问权限
- Custom:通过 webhooks 触发您自己的权益逻辑
变体和定价选项
您可以不在一个产品下创建变体,而是为每个定价选项创建单独的产品(例如 Monthly 和 Yearly)。然后将它们归入一个 Product Collection,即可在单个结账页面中展示所有选项,并支持在 Customer Portal 中切换计划。
为什么采用这种方式?
- 清晰的定价模式:每个产品都有单一且明确的定价模式(一次性、订阅或按使用量计费)
- 可预测的 API:无需处理嵌套的变体逻辑,集成更加简单
- 更轻松的报告:无需汇总变体,即可按产品跟踪收入和指标
- 灵活的结账体验:并排展示多个产品,让客户进行比较和选择
Product Collections 的工作方式
- 创建产品:为每个计划设置单独的产品(例如 Starter Monthly、Starter Annual、Pro Monthly、Pro Annual)
- 归入集合:将相关产品添加到 Product Collection
- 统一结账:客户可以在一个结账页面中查看所有选项并选择偏好的计划
- 切换计划:客户可以通过 Customer Portal 在同一集合中的产品之间升级或降级
Product Collections
将相关产品归组,以实现统一的结账体验和顺畅的升级/降级路径。
管理产品
您可以通过控制面板管理产品,也可以通过 API 以编程方式管理。API 提供对产品创建、更新、检索、图片上传和归档的完整控制。控制面板管理
- 更新:随时编辑名称、描述、图片、价格、字段和权益(定价模式不可变)。
- 归档:将产品从新购买中隐藏,同时不会影响现有客户。之后可以取消归档。
- 草稿:进行中的产品会保存为草稿,您可以稍后返回继续编辑。测试模式和正式模式的草稿会分别保存,因此某一模式中的未完成产品不会影响另一模式。使用 Clear Draft 丢弃草稿并重新开始。
API 管理
以下说明介绍如何创建、更新、管理和检索产品,包括上传图片。Creating a Product
Creating a Product
产品可以是一次性商品,也可以是基于订阅的服务。要创建新产品,请向
/products endpoint 发送 POST 请求,并提供名称、描述、价格、货币以及是否为 recurring product 等详细信息。对于 recurring products,请将 price object 设置为 recurring price(type: recurring_price),并指定 payment_frequency_interval 和 subscription_period_interval(Day、Week、Month 或 Year)及其对应的次数。Create Product API
在 Create Product API 文档中查看详细的请求和响应结构。
Updating a Product
Updating a Product
要修改现有产品,请向
/products/{product_id} endpoint 发送 PATCH 请求。您可以更新名称、价格和描述等属性,同时保留其他详细信息不变。请确保 endpoint 中的 product_id 与现有产品匹配。Update Product API
在 Update Product API 文档中查看详细的请求和响应结构。
Retrieving Products
Retrieving Products
您可以向
/products endpoint 发送 GET 请求,获取账户中存储的产品列表。这可以检索产品详细信息,包括活跃产品和已归档产品。Retrieve Products API
在 Retrieve Products API 文档中查看详细的请求和响应结构。
Uploading Product Images
Uploading Product Images
您可以通过 API 提供的预签名 URL 将图片上传到 AWS S3,从而为产品关联图片。首先,从
/products/{product_id}/images endpoint 请求图片上传 URL,然后使用所提供的 URL 在 60 秒内上传图片。从 API 收到预签名 URL 后,使用 PUT method 上传图片。这可以确保以安全且临时的方式访问 AWS S3 以完成图片上传。支持用于上传到 S3 的库:- Node.js:
axios、node-fetch - Python:
requests、boto3 - Go:
net/http - PHP:
GuzzleHttp - Ruby:
rest-client
200 OK status,表示图片已成功存储。Upload Product Image API
在 Upload Product Image API 文档中查看详细的请求和响应结构。
Archiving a Product
Archiving a Product
如果您不再希望展示或使用某个产品,可以向
/products/{id} endpoint 发送 DELETE 请求将其归档。此操作会隐藏产品,但不会永久删除产品。Archive Product API
在 Archive Product API 文档中查看详细的请求和响应结构。
Unarchiving a Product
Unarchiving a Product
如果需要恢复已归档的产品,请向
/products/{product_id}/unarchive endpoint 发送 POST 请求。这会重新激活产品,使其恢复可用状态。Unarchive Product API
在 Unarchive Product API 文档中查看详细的请求和响应结构。
Checkout & fulfillment
Checkout & fulfillment
从产品创建付款或订阅流程,并通过权益和 webhooks 自动完成履约。
Checkout Sessions
为一次性购买或订阅购买创建结账会话。
Payment Webhooks
响应付款生命周期事件。
Subscription Webhooks
处理订阅创建、续订和取消事件。
最佳实践
- 从清晰开始:为每个定价选项分别创建产品(Monthly 与 Yearly)
- 合理使用试用:将试用与引导流程结合,以推动用户激活
- 自动化履约:使用权益和 webhooks 即时交付
- 使用 metadata 添加标签:存储系统 ID 以便对账
您已经可以创建产品并开始销售——无论是一次性、经常性,还是按使用量计费。
相关内容
Product Analytics
跟踪每个产品的收入、客户、留存、订阅者和 MRR。
Localized Pricing
为产品设置按货币或按国家固定的价格,而不是依赖实时汇率。