---
url: /docs/billing.md
---
# 订阅与账单概览

## 当前实现

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`       | 订阅状态                 |

继续阅读 [套餐与定价](./plans.md)、[结账与管理](./checkout.md) 和 [支付事件回调](./webhooks.md)。
