一个人做 SaaS,总得聊钱。这篇记录 SayCraft 从"免费玩具"到"收费产品"的过程——定价怎么定的,积分怎么算的,支付方式怎么选的,以及一个差点让免费档定错价的计费 bug。
三档定价:怎么来的
定价方案没怎么纠结,5 月底就拍了:
- Free:不进 Stripe,前端展示。给够用一次会议的积分
- Pro:$19/月,1900 积分
- Max:$49/月,7999 积分
汇率是我直接定的:1 美元 = 100 积分。Pro 严格按这个比例($19 = 1900),Max 给了额外 bonus——$49 本应 4900 积分,实际给 7999,溢价约 63%,用来激励高档位。
年付、试用期、一次性积分包?都推迟了。"再说后面会做的"——先把最简单的跑通。
差点定错价的计费 Bug
Free 档给多少积分?我的思路是按真实成本倒推:"算一次会议花多少钱,Free 档就给这个数,数字好听点。"
AI 用脚本算出每场会议成本中位数是 $0.007。我当时就觉得不对——一场会议调了那么多 AI,怎么可能只花七厘钱?起码得一两块。
审计之后发现了一个严重的计费 bug:系统里有五条计费路径(协调器、分类器、编码器、审查器、图片填充器),但前台常驻的 Claude Code 进程——占了约 95% 的算力消耗——完全没被计入。
根因是一次架构改造后,新的前台编码路径漏了 recordMeetingCost 调用。数据库里的 total_cost_usd 严重低估,差了两个数量级。
修复后实际每场会议成本在 $0.5-$2,跟我的直觉吻合。
如果我没有质疑那个数字,Free 档可能会给出远高于实际承受能力的积分。直觉有时候比脚本靠谱——尤其是当脚本可能有 bug 的时候。
积分系统的设计
积分本质上是 LLM token 消耗的货币化抽象。每次 AI 调用按模型的真实 token 单价累加美元成本,再按 1:100 的比例扣积分。
几个关键规则:
- 积分不结转,月末清零——我不想做积分囤积和跨月计算的复杂逻辑
- 升级补差价当期生效,降级下期生效——这是 SaaS 行业的通行做法
- 取消订阅当期失效——不给退款(积分已发放)
并发扣费安全靠原子 SQL:UPDATE ... SET total_cost_usd = total_cost_usd + ?,不需要应用层加锁。零积分时的竞态条件用 FOR UPDATE 行锁处理——审计发现如果行不存在锁不住,但两边都读到 0 都会拒绝,没有资金风险。
支付方式:想得美,砍得狠
我一开始想支持五种支付方式:信用卡、Apple Pay、Google Pay、支付宝、微信。
调研之后砍掉了两个:
- 支付宝订阅是 invite-only 的,需要单独向 Stripe 申请白名单。作为一个新产品,这条路短期走不通
- 微信支付只支持
send_invoice模式(每月手动续费),不是真正的自动订阅。而且结账时要填真实姓名——我看到这个就说"删掉得了"
最终 v1 只保留了信用卡 + Apple Pay + Google Pay,都走 Stripe Payment Element。
另一个决定:只在海外站(saycraft.ai)收费,国内站不收费。Stripe 账户注册在香港(我没有中国大陆的 Stripe 资格),面向海外用户。
自建 UI 还是用 Stripe Checkout?
Stripe 提供了两种集成方式:用他们的托管结账页(Stripe Checkout),或者自建 UI 嵌入 Payment Element。
我选了自建。原因很简单:我参考了 Manus 和 Cursor 的付费界面,觉得"要做就做个完整全套的东西",不想跳转到第三方页面。
代价是要自己处理 3DS 二次认证回调、升降级 proration 弹窗、Settings 页积分展示……每一个都是不难但烦的工作。
有个小插曲:初版做完后,点"切换套餐"直接就切了,没有确认窗。Pro 用户不小心点了 Max,卡直接被扣了 $30 差价。后来加了确认弹窗:"将从你绑定的卡里扣 $X 差价,确认?"
安全与密钥
调试 Stripe 的时候,我在聊天窗口里直接贴了生产环境的 sk_live_ 密钥。AI 三次提醒我去 Stripe Dashboard 滚动密钥,我都拒绝了——"就我一个人在做。"
这是不对的。一个人做也不意味着可以无视密钥安全。但当时在赶进度,这种事就被搁置了。记在这里算个自我提醒。
回头看
定价这件事,最难的不是选数字——Pro $19 还是 $29、积分比例 1:100 还是 1:50,这些后面都能调。最难的是理清楚计费的完整链路:哪些地方在花钱、花了多少、怎么计入、并发怎么处理、积分清零怎么实现。
如果计费 bug 没被发现,我可能会在免费档烧掉远超预期的钱,还以为自己"成本控制得很好"。
一个人做 SaaS 的好处是拍板快,坏处是没人帮你 double check。所以每个数字都得有来源,每个来源都得验证。
产品在这:saycraft.ai