管理后台定价管理功能
前置步骤
开始使用定价管理前,请确认已经完成以下前置步骤:
列表页介绍
提示
- 定价管理的前端代码位于
app/[locale]/(protected)/dashboard/(admin)/prices
文件夹- 定价管理的后端代码位于
actions/prices
文件夹
完成前置步骤后,管理员定价管理页面就有了初始化数据。你可以在 /dashboard/prices
页面查看列表,也可以在落地页看到定价卡片的展示效果。
列表页提供了各种功能的入口:
- 模糊查询定价计划、根据所属环境过滤定价计划
- 右侧的「Columns Visibility」可以选择展示的列
- 右侧的「Create New Plan」支持创建新的定价计划
- 表格 Actions 列支持 Edit(编辑)、Duplicate(复制)和 Delete(删除)定价计划

落地页会展示当前环境(Live
或 Test
)对应的定价计划:

创建/复制/编辑定价计划
创建、复制、编辑定价计划共用一个表单组件,它们的功能区别在于:
- 创建:打开一个空白的表单,从头开始创建全新的定价计划
- 复制:复制已存在的定价计划,会进入创建页面,但会获取源数据并填充到表单,你只需要少量更改即可创建新的定价计划
- 编辑:打开编辑页面,可以更新现有的定价计划
表单组件介绍
以下介绍以复制 Test
环境的定价计划创建 Live
计划为例。
复制后进入表单,除了「Stripe Integration」板块被置为空值外,其他信息都与源数据一致。
Core Information

在「Core Information」板块,需要选择所属环境、填写定价计划标题和描述。
其中所属环境需要与「Stripe Integration」里填写的 price_id
匹配,还需要与环境变量的 STRIPE_SECRET_KEY
和 STRIPE_PUBLISHABLE_KEY
所属的环境匹配。这一步看似略显繁琐,但能够确保不会因为错误操作把测试环境的定价计划设置到生产环境。
右侧的「Settings」,可以设置当前定价卡片的展示顺序、是否激活。下方的预览区域采用所见即所得的设计,样式与最终用户看到的样式完全一致,你应该在发布定价计划前检查卡片在不同语言下都能正确展示信息。
Stripe Integration

只需要在 Stripe 产品信息里复制 price_id
并粘贴到「Stripe Integration」,点击「Verify & Fetch」即可自动填充 Stripe 上设置的定价信息。
Display & Content


这个板块用于设置卡片上的展示信息,包括:
- 显示的价格
- 定价计划包含的权益列表,其中「included」勾选表示包含,预览卡片会展示✅,没有勾选则表示不包含,预览卡片会展示❌
- 选择是否将卡片高亮展示,高亮容易吸引用户注意,适合设置给你最推荐用户购买的定价计划
- 如果选择了高亮,还需要填写高亮的文字
- 按钮文字
- 按钮链接,支持两种跳转行为:
- 当按钮用于进入 Stripe 付款流程时,不需要填写链接
- 当按钮用于外链跳转时,需要填写跳转链接,支持 https 链接和邮箱链接
提示
按钮链接支持的不同跳转行为,你可以在Nexty.dev 落地页体验
Multi-language Translations
这个板块用于设置定价卡片的多语言版本,有两种方式可以完成多语言配置:
- 点击「Generate Template」按钮,一键生成多语言 JSON 的模板,然后自己翻译或在其他平台翻译
- 点击「Translate by AI」按钮,一键生成多语言 JSON 的模板并自动翻译
一旦多语言 JSON 生成,定价计划的卡片内容将优先按照该 JSON 展示。如果你编辑定价计划卡片,修改了「Display & Content」的内容,应该同时更新多语言 JSON 的内容。

Benefits
这个板块用于自定义计划权益。它的使用方式和场景有3种:
-
如果「Benefits」留空或者是空对象,支付流程仍然可以正确运行
- 对于一次性支付,将在
orders
表生成订单信息; - 对于周期订阅,将在
orders
表生成订单信息和在subscriptions
表生成订阅信息。
- 对于一次性支付,将在
-
如果想给一次性付款和周期订阅提供积分(credits),可以直接利用
usage
表及其自带的one_time_credits_balance
和subscription_credits_balance
字段- 创建一次性支付的计划时,在「Benefits JSON」通过
one_time_credits
字段定义一次性付费的积分,例如:{ "one_time_credits": 500 }
- 创建周期订阅的计划时,在「Benefits JSON」通过
monthly_credits
字段定义周期订阅的月度积分,例如:{ "monthly_credits": 100 }
使用内置的逻辑你不需要修改代码,一切都已为你准备好了。用户付费后除了在
orders
和subscriptions
表生成数据,还会在usage
表生成数据,并记录对应的 credits 数值。提示
从 v1.1.4 开始,你可以在
/dashboard/credit-usage-example
页面测试内置的积分扣除流程。该页面仅在开发环境可以打开,无需担心生产环境会被滥用。 - 创建一次性支付的计划时,在「Benefits JSON」通过
-
如果你需要实现更复杂的权益,则需要在「Benefits JSON」自定义权益,并重新实现
lib/stripe/webhook-handlers.ts
里面的upgradeOneTimeCredits
和upgradeSubscriptionCredits
。相应地,你还需要扩展usage
表的字段,扩展方式也有两种:-
修改表结构,新增权益字段,并在重新实现的
upgradeOneTimeCredits
和upgradeSubscriptionCredits
里面为新字段赋值 -
在重新实现的
upgradeOneTimeCredits
和upgradeSubscriptionCredits
里面,往usage
表的balance_jsonb
写入权益信息
提示
如果你自己无法完成权益的重新设计,可以将
data
、lib/stripe
和app/api/stripe
三个文件夹下的代码一起发送给 AI,并描述你的需求,依次要求重新实现lib/stripe/webhook-handlers.ts
里的处理逻辑。关于「Benefits JSON」详细的用法和自定义实现,会在支付流程中详细介绍。
-
完成新的定价计划创建后,列表里即可看到新的数据。

删除定价计划
删除定价计划前,会有弹框提醒。
