---
url: /docs/billing/plans.md
---
# 套餐与定价

## 统一配置

套餐公开文案、价格和成员上限在 `packages/core/website.ts`。`packages/core/site.ts` 生成兼容视图，`apps/api/lib/plans.ts` 从该视图派生限制，认证插件和订阅查询共用。

当前 `free`、`starter`、`pro` 是固定代码标识。改显示名称不必改标识；增加新套餐要同步类型、插件配置、订阅识别、界面和测试，不能只加一张价格卡。

## Stripe 价格对象

在 Stripe 测试模式创建对应产品和循环价格，把价格 ID 写入环境。正式模式需要另外的价格 ID、密钥和回调签名，不能混用测试对象。

`STRIPE_STARTER_PRICE_ID` 和 `STRIPE_PRO_PRICE_ID` 是基础价格；可选年付价格使用 `STRIPE_PRO_ANNUAL_PRICE_ID`。当前年付界面是否完整应按实际购买入口验收，环境变量存在不保证用户已经能选择。

## 试用与权限

Pro 试用天数来自 `websiteConfig.payment.trialDays`，大于零才配置试用。当前订阅查询只在 `active` 的确认周期、`trialing` 的确认试用期仍有效时返回付费限制；截止还考虑提前取消 / 结束时间。周期或试用时间缺失、已到期、`past_due`、`unpaid`、`paused` 和未完成首付均不授予付费权限，当前没有宽限期。`subscriptionPlan` / `status` 仍保留原账单状态，不能将续费失败显示为没有订阅。预约取消在有效期内继续提供原方案，截止后停止；未结束记录优先于旧取消历史；检测到多笔 active / trialing 或未解决订阅进入查询错误，不能随意选一笔。

套餐里列出成员限制不代表所有业务入口已自动执行限制。增加组织成员、文件大小或任务额度限制时，要在对应服务端操作实施，界面只显示结果。

## 修改后的验证

检查展示金额、币种、周期与 Stripe 结账一致，试用结束和取消后的权限变化符合预期。不要把订阅价格直接当成积分扣费规则，一次性积分购买已有独立事件与账本衔接，见[支付与任务教程](../agentbuff-stack/billing-tasks)。

## 新购与继续结账

本站新购入口有服务端门禁：已有有效、试用、欠费、暂停或未确认订阅时不能新开 Checkout，方案调整使用现有门户。设置页可恢复同一请求的原方案和年付选项，不因刷新或超时重新生成付款。已知过期会话经供应商确认后才允许新请求，过期未知结果保持核查；当前管理员解除界面尚未交付。具体租约、归属和幂等规则见[支付与任务](../agentbuff-stack/billing-tasks#订阅结账保护与恢复)。
