支付
支付系统概览
使用 Creem 的订阅计费和历史一次性积分兼容。
概述
InvoiceToTable 使用 Creem 进行支付处理。
公开售卖目前聚焦两个订阅方案:
- Pro —
$19.9/month,每月500页 - Ultra —
$29.9/month,每月800页
历史一次性积分包仅保留给旧账单、旧 webhook 和旧账本记录兼容,不再作为公开购买入口。
订阅计划
在 constants/billing.ts 中配置:
| 计划 | 价格 | 积分 |
|---|---|---|
| Pro 月付 | $19.9/月 | 500/月 |
| Ultra 月付 | $29.9/月 | 800/月 |
支付流程
- 用户点击购买 → 前端调用
/api/payments/creem/checkout - 创建 Checkout Session → Creem API 返回支付链接
- 用户完成支付 → Creem 发送 webhook 到
/api/payments/creem/webhook - Webhook 处理:
- 签名验证(HMAC-SHA256)
- 幂等性检查(防止重复处理)
- 插入支付记录
- 创建/更新订阅记录
- 发放积分
- 发送确认邮件
历史一次性积分包
历史 one_time_pack 记录仍然在后端兼容:
- 旧支付记录仍可读
- 旧 webhook 仍可解析
- 公开 pricing 页面不再创建一次性 checkout
测试
在 .env 中设置 CREEM_SIMULATE="true" 可跳过真实支付,方便开发测试。