# 结账动态定价：面向 SaaS 的随心付及更多应用

> 使用动态定价结账，在单个产品上支持随心付、程序设置金额和基于报价的交易。了解实现模式与常见陷阱。
- **Author**: Ayush Agarwal
- **Published**: 2026-05-16
- **Category**: Checkout, Pricing
- **URL**: https://dodopayments.com/blogs/zh/dynamic-pricing-checkout-saas

---

大多数结账流程都假设价格在买家到达之前就已经确定。产品有一个价格，购物车有一个总额，表单只需收取这笔金额即可。但对于数量惊人的真实业务流程来说，这种模式并不适用。随心付定价、捐赠、自定义报价、动态加购，以及在最后一刻才选择座位数量的多座席购买，都需要在创建结账时设置价格，而不是在创建产品时设置价格。

动态定价结账通过让单个产品承载一个在创建结账时设置的可变金额来解决这个问题，也可以选择设置金额范围。本文将介绍动态定价在这一场景中的实际含义、它在哪些情况下最有价值，以及如何实现它而不给自己带来支持难题。当盒子内容和价格随周期变化时，像[订阅盒计费](https://dodopayments.com/blogs/subscription-box-billing)这样的周期性模式也依赖同样的理念。

## 动态定价结账到底是什么

传统模式下，每个产品都带有一个固定价格。如果你有三个价格档位，就需要三个产品。如果买家可以从十个金额中任选其一，你可能需要十个产品，或者把选择交给应用，再让应用每次调用不同的价格。无论采用哪种方式，目录都会迅速膨胀，管理起来也越来越痛苦。

动态定价结账则完全相反。你可以将单个产品配置为接受可变金额。产品包含元数据、税务类别、名称、描述等信息，但不包含固定价格。创建结账会话时，你可以通过程序传入金额，也可以让买家在结账过程中自行选择。可选的最小值和最大值可以将买家的选择限制在合理范围内。

这是一个产品对应多个价格的关系。一个产品配置就能处理多个价格档位，无需为每个档位创建新产品。合规和税务处理仍然绑定在产品上，而价格则可以在此基础上变化。

一个常见模式是随心付。产品配置会设置最小金额，也可以设置最大金额和建议金额。买家在结账时输入自己的价格。平台会根据设定范围进行验证并处理付款。这种模式最初受到独立创作者和数字产品卖家的欢迎，如今也出现在许多 SaaS 细分领域中。

## 动态定价适合哪些场景

有几类场景会促使团队采用动态定价结账。识别自己的产品是否属于这些模式，可以避免你构建各种变通方案。

### 基于报价或销售协助的购买

销售人员会与潜在客户协商价格。交易金额是一个具体数值，不会显示在公开定价页面上。你需要向买家发送一个对应具体金额的结账链接，却不想为每笔交易都创建新产品。动态定价可以简洁地处理这种情况。销售人员用协商好的金额生成结账会话，发送链接，买家完成付款即可。

### 自定义套餐和配置

买家在配置步骤中选择十二个座席和三个附加项。总额由你的应用计算。与其将每种可能的组合映射到不同产品，不如创建一个启用动态定价的基础产品，在代码中计算总额，并在创建结账时将其作为金额传入。

### 随心付和捐赠模式

独立卖家、业余项目和某些 SaaS 细分领域会将随心付作为营销或社区定价策略。买家在卖家设定的范围内输入金额并完成付款。让买家输入金额的动态定价可以直接支持这种模式。

### 可变金额的充值包

用户购买预付额度或容量，套餐大小由用户自行选择。与其将五种固定套餐作为五个独立产品，不如使用一个支持动态定价的预付额度产品来处理任意大小的套餐。

### 非标准折扣的优惠码

大多数优惠码流程都会按百分比或固定金额降低固定价格，并由平台完成计算。但有些折扣计划更加复杂，最终价格取决于由你的代码评估的客户属性。动态定价可以让你的代码计算最终金额，并直接传入该金额。

### 小费罐和支持者

有些产品会附加一个小费罐，让用户支付额外金额来支持创作者。这是一种由买家选择金额的微型购买，动态定价可以将其简化为一个产品，而不是维护一长串产品。

这些场景的共同点是：金额按交易决定，而不是按产品决定。如果你的应用中有任何符合这种模式的流程，动态定价结账就是最简洁的实现方式。

## 动态定价在 Dodo Payments 中的实际运作方式

整个流程分为三步：配置产品、决定金额的确定方式，以及创建结账会话。

### 配置产品

你可以在控制台中创建一个一次性产品，并启用随心付定价。你需要设置最小金额，这一项是必需的，可以避免零金额或负金额付款。你也可以设置最大金额，用于限制买家的选择，防止意外支付过高金额。还可以设置建议金额，它会作为推荐价格展示给买家，并且通常会影响买家的选择。

目前动态定价不支持订阅。该模式适用于一次性付款产品。如果你需要支持可变金额的周期性付款，正确的模式是按需订阅：周期性价格保持固定，可变部分则通过临时扣款收取。

### 决定金额如何设置

有两种模式可供选择。在程序设置模式下，你的代码会在创建结账会话时传入金额，买家会在结账页面看到该金额。在买家选择模式下，你的代码不传入金额，买家会在结账页面中根据你配置的范围自行输入金额。

程序设置模式适用于销售报价、计算得出的总额，以及由应用决定价格的其他场景。买家选择模式适用于随心付等由买家自行决定金额的流程。

### 创建结账会话

创建结账会话时，需要传入产品标识符，可选的产品购物车金额、客户信息和成功跳转 URL。平台会生成结账 URL 或内嵌会话，买家完成付款后，平台会在成功时触发 webhook。webhook 负载包含实际支付金额，你可以在应用中将其记录到对应买家名下。

创建调用的完整参考请参阅[动态定价结账指南](https://docs.dodopayments.com/developer-resources/dynamic-pricing-checkout)。本文介绍相关思路和模式，文档则提供请求和响应的数据结构。

## 实用的实现模式

以下几种实现模式可以让动态定价在生产环境中更加可靠。

### 创建会话前始终在代码中验证金额

尽管平台会强制执行最小值和最大值，你的代码也应该进行验证。这样可以尽早发现错误，并为买家和运营人员提供更清晰的错误信息。如果计算出的金额超出预期范围，应中止操作并记录日志，而不是继续传入该金额。

### 使用幂等键

销售人员可能会双击按钮，应用程序错误也可能导致重试。如果没有幂等键，同一笔逻辑购买可能会创建多个结账会话，让所有人都感到困惑。请为每次逻辑会话尝试传入一个稳定的键。

### 向买家清晰展示金额

如果金额是通过程序设置的，买家应该在付款前于结账页面看到该金额。托管式和内嵌式结账界面会自动处理这一点，但如果你有任何包装结账流程的自定义流程，请确保金额清晰可见。意外金额是发起退款请求的首要原因。

### 为随心付谨慎选择建议金额

如果你允许买家自行选择，建议金额会强烈影响他们的决定。较高的建议金额通常会提高平均订单金额，但设置得过高会降低转化率。可以测试几个数值，选择能最大化每位访客收入的金额，而不是最高金额或最让人安心的金额。

### 设置最大金额，防止意外支付过高金额

如果不设置最大金额，让买家自行输入金额，就可能偶尔遇到有人误输入多几个零的情况。之后处理退款会很尴尬。合理的最大金额可以避免这种问题。

### 在数据模型中记录实际支付金额

由于金额按交易变化，你的客户记录需要捕获每次结账的实际支付金额。如果你根据产品假设金额固定，结果就会出错。webhook 负载会告诉你实际金额，它才是事实来源。

## 应避免的模式

动态定价的实现中经常会出现以下几种错误。

将最小金额设置为零或非常低的数值。零金额结账没有实际价值，而且在某些配置下甚至不被允许。最小金额不应低于一美元、一卢比，或你所在货币的等值金额，但即使如此，这通常也不是正确选择。请选择能够反映你实际销售底线的最小金额。

在客户端计算金额并传入。客户端代码可能被篡改。金额应在服务器端计算、验证，然后从服务器端传入创建结账会话的调用中。否则，坚定的买家就可能支付任意金额。

将动态定价用于本应采用订阅的产品。如果客户关系是周期性的，动态定价就不是正确工具。请使用固定价格的订阅产品，再通过按需扣款收取可变部分。试图将周期性付款塞进动态定价的一次性产品，只会带来更多问题。

买家自行选择金额时跳过建议金额。没有锚点，买家通常会选择最小金额，或选择低于最小金额的整数金额，然后不情愿地将其调高。有了锚点，买家通常会支付更接近目标的金额。锚点确实发挥着作用，跳过它就等于放弃收入。

将金额视为创建后仍可变。结账会话创建后，金额就会被锁定。如果你的代码之后发现金额应该不同，请创建新会话。系统不支持修改现有会话，这样做也不会得到预期结果。

## 动态定价在计费体系中的定位

动态定价是一项结账级能力。它不会改变你的订阅产品、按用量计费产品、税务处理或退款流程，只是让一个产品可以承载可变金额。

在典型的 SaaS 或 AI 产品中，动态定价通常会出现在几个具体位置：为协商交易发送结账链接的销售工具；让用户以任意金额购买预付额度的充值流程；面向早期用户或社区支持者的随心付优惠；以及在买家进入结账前由应用计算总额的自定义配置流程。

你的大部分计费体系仍然可以使用固定价格产品和订阅。动态定价只在确实需要可变金额的场景中发挥价值。

## Dodo Payments 如何适配

Dodo Payments 原生支持动态定价结账，可将其配置在一次性产品上。平台会根据你设置的最小值和最大值进行验证，按实际支付金额计算税费，完成结算，并通过 webhook 发送最终金额。作为 MoR（名义商户），平台还会负责相关合规事项，并为买家最终支付的金额完成全球税费代缴。

集成方式与标准结账相同。唯一的区别是：在产品配置中启用随心付，并在创建会话时根据需要传入金额。实现参考请参阅[动态定价结账指南](https://docs.dodopayments.com/developer-resources/dynamic-pricing-checkout)，创建会话的调用请参阅[结账会话参考](https://docs.dodopayments.com/developer-resources/checkout-session)。

## 最后的思考

动态定价结账属于那种在真正需要之前很少被提及，但一旦需要，替代方案就会变得非常痛苦的功能。创建十个或一百个产品来代表十个或一百个价格，在应用中构建一套并行的定价系统，或者通过行项目变通处理，这些方案都可以实现，但成本高昂。一个承载可变金额的产品，再配合可选范围和可选的买家选择，就能将整个复杂面简化为易于维护的结构。

如果你的产品存在按交易而不是按产品决定金额的流程，这就是正确的工具。如果你的产品始终采用固定价格，则可以忽略它。将动态定价纳入工具箱的成本基本为零，而在需要时却没有它，代价是真实存在的。

## 常见问题

### 我可以将动态定价用于订阅吗？

不可以。随心付和动态定价结账目前仅适用于一次性付款产品。如果你需要支持可变金额的周期性计费，正确的模式是按需订阅：周期性部分采用固定价格，可变部分则通过针对同一订阅发起临时扣款来收取。

### 如何防止买家支付过低的金额？

依靠你配置的最小金额。产品创建时必须设置最小金额，平台会拒绝低于该金额的结账会话。请将最小金额设置为能够保护单位经济效益的底线。对于 SaaS 和数字产品来说，较高的最小金额通常没有问题。最小金额过低则容易被滥用。

### 创建结账会话后可以更改金额吗？

不可以。金额会在创建会话时固定。如果你的代码需要更新金额，请创建新会话并弃用旧会话。系统不支持修改会话。

### 动态定价下如何计算税费？

税费会根据实际支付金额计算。如果买家支付五十美元，适用税率为百分之二十，平台就会在五十美元的基础上计算十美元税费。作为 MoR（名义商户），平台还会代缴税费。你无需像处理固定价格产品那样采取不同操作。

可以将动态定价与内嵌式结账结合使用吗？

可以。动态定价属于产品配置，而不是结账界面功能。内嵌式和托管式结账都支持该功能。无论采用哪种方式，金额的设置方式都相同：在创建会话时传入金额，或让买家在结账时自行选择。

### 我可以在嵌入式结账中使用动态定价吗？

可以。动态定价属于产品配置，而不是结账界面。嵌入式结账和托管式结账都支持动态定价。无论采用哪种方式，金额的设置方式都相同：在创建会话时传入金额，或让买家在结账时自行选择。
---
- [More Checkout articles](https://dodopayments.com/blogs/category/checkout)
- [All articles](https://dodopayments.com/blogs)