One-Time
一次性收费,提供终身访问权限或单项交付内容。
Subscriptions
按计划计费,支持试用、按比例计费和附加项。
Usage-Based
统计用量,并根据实际用量计费。
创建产品
您可以从控制面板或通过 API 创建产品。请预先选择定价模式——One-Time、Subscription 或 Usage-Based——然后配置详细信息。定价模式不可变;如果需要使用其他模式,请创建新产品。1
Name and Description
提供清晰的标题和简洁、突出价值的描述。描述支持 Markdown。

2
Pricing Model and Price
选择定价模式:
- One-Time:一次性支付固定价格。
- Subscription:按周期重复收费,可设置间隔和可选试用期。
- Usage-Based:根据计量事件得出的价格。
- Price:基础金额和货币。您可以使用 Dodo Payments 支持的任意货币设置基础价格,但 Pay What You Want 产品除外;这类产品的基础货币必须为 USD、GBP 或 EUR。USD、GBP、EUR 和 INR 会固定显示在货币选择器顶部,方便快速访问。
- Discount (%):可选的百分比折扣,会显示在结账页面和发票中。
- 对于订阅,请设置 Repeat every(例如 1 个月或 1 年)、Trial days,以及用于 paid trial 的可选 Trial amount。非零订阅价格至少必须为 $1(或您所选货币的等值金额)。同时也支持价格正好为 $0 的情况,您可以允许客户在没有银行卡的情况下开始 $0 订阅;请参阅 Card-Optional at Zero Price。不支持负金额。
启用 Adaptive Currency 后,基础货币以外地区的客户会以当地货币付款,因此您可以使用最适合目标市场的货币编写价格。停用后,客户将使用您的基础货币付款。
3
Product Media
上传图片,在结账页面和发票中展示产品。支持的格式:PNG、JPG、WebP,大小不超过 3 MB。您可以随时重新排序或替换图片。
4
Automated Entitlements
在 Entitlements 部分,附加付款后自动激活的履约方式:
- License Keys:签发并验证唯一密钥。
- File Downloads:授予安全的文件访问权限。
- Custom:通过 webhooks 触发您自己的 entitlement 逻辑。
变体和定价选项
不要在一个产品下创建变体,而是为每个定价选项创建单独的产品(例如 Monthly 和 Yearly)。然后将它们归入 Product Collection,在一个结账页面中展示所有选项,并在 Customer Portal 中启用计划切换。
为什么采用这种方式?
- 清晰的定价模式:每个产品都有单一且定义明确的定价模式(一次性、订阅或按用量计费)。
- 可预测的 API:无需处理嵌套的变体逻辑,集成更加简单。
- 更轻松的报告:无需汇总变体,即可按产品跟踪收入和指标。
- 灵活的结账流程:并排展示多个产品,让客户进行比较和选择。
Product Collection 的工作方式
- 创建产品:为每个计划设置单独的产品(例如 Starter Monthly、Starter Annual、Pro Monthly、Pro Annual)。
- 归入集合:将相关产品添加到 Product Collection。
- 统一结账:客户可以在一个结账页面中看到所有选项,并选择首选计划。
- 计划切换:客户可以通过 Customer Portal 在同一集合中的产品之间升级或降级。
Product Collections
将相关产品归组,以实现统一的结账体验和升级/降级路径。
管理产品
您可以通过控制面板管理产品,也可以通过 API 以编程方式管理。API 提供对产品创建、更新、检索、图片上传和归档的完整控制。控制面板管理
- Update:随时编辑名称、描述、图片、价格、字段和权益(定价模式不可变)。
- Archive:将产品从新购买中隐藏,同时不影响现有客户。之后可以取消归档。
- Drafts:进行中的产品会保存为草稿,方便您稍后继续编辑。测试模式和实时模式分别保存草稿,因此一个模式中的未完成产品不会影响另一个模式。使用 Clear Draft 可丢弃草稿并重新开始。
API 管理
以下说明介绍如何创建、更新、管理和检索产品,包括上传图片。Creating a Product
Creating a Product
向
/products endpoint 发送 POST request,并提供名称、描述、价格、货币以及产品是否为 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 request。您可以更新名称、价格和描述等属性,同时保留其他详细信息不变。请确保 endpoint 中的 product_id 与现有产品匹配。Update Product API
请在 Update Product API 文档中查看详细的请求和响应结构。
Retrieving Products
Retrieving Products
使用
GET request 向 /products endpoint 获取账户中存储的产品列表。这样可以获取包括有效产品和已归档产品在内的产品详细信息。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 request,将产品从新购买中隐藏,同时不永久删除该产品。Archive Product API
请在 Archive Product API 文档中查看详细的请求和响应结构。
Unarchiving a Product
Unarchiving a Product
向
/products/{product_id}/unarchive endpoint 发送 POST request,即可恢复已归档的产品。这会重新激活产品,使其再次可用。Unarchive Product API
请在 Unarchive Product API 文档中查看详细的请求和响应结构。
Checkout and Fulfillment
Checkout and Fulfillment
从产品创建支付或订阅流程,并通过权益和 webhooks 自动完成履约。
Checkout Sessions
为一次性购买或订阅购买创建结账会话。
Payment Webhooks
响应支付生命周期事件。
Subscription Webhooks
处理订阅创建、续订和取消事件。
最佳实践
- 从清晰度入手:为每个定价选项分别创建产品(Monthly 和 Yearly)。
- 合理使用试用期:将试用期与引导流程结合,促进用户激活。
- 自动化履约:使用权益和 webhooks 即时交付。
- 使用 metadata 添加标签:存储您的系统 ID,以便对账。
相关内容
Product Analytics
跟踪每个产品的收入、客户、留存、订阅者和 MRR。
Localized Pricing
在产品上设置按货币或国家/地区分别固定的价格,而不是依赖实时汇率。