订阅与账单概览
当前实现
Stripe 订阅由 Better Auth 的 Stripe 插件管理。插件负责客户、结账跳转、账单管理和支付事件回调;apps/api/routers/billing.ts 返回当前套餐及可管理权限。
代码接入不等于真实支付验收完成。当前外部测试支付、事件投递、退款及取消仍需使用你的 Stripe 测试账号验证。一次性积分包购买尚未实现,现有积分流水与订阅是两个模块。
启用条件
websiteConfig.payment.enabled 开启,并同时填写:
text
STRIPE_SECRET_KEY
STRIPE_WEBHOOK_SECRET
STRIPE_STARTER_PRICE_ID
STRIPE_PRO_PRICE_ID四项全部留空时支付关闭;只填一部分时报错。STRIPE_PRO_ANNUAL_PRICE_ID 可选,但不能脱离基础凭据组配置。
范围与权限
有活动组织时使用组织订阅,否则使用个人订阅。组织成员可查看所属套餐,所有者和管理员才能修改。服务端每次敏感操作重新读取成员关系,避免旧会话延续已撤销权限。
套餐名称当前固定为 free、starter 和 pro。价格及成员上限由站点配置派生,Stripe 价格对象必须与展示相符。
代码入口
| 文件 | 内容 |
|---|---|
apps/api/lib/auth.ts | 插件启用、价格和变更授权 |
apps/api/lib/plans.ts | 套餐限制与管理角色判断 |
apps/api/routers/billing.ts | 当前订阅与权限查询 |
apps/app/lib/queries/billing.ts | 查询、升级和账单管理跳转 |
db/schema/subscription.ts | 订阅状态 |