AI SaaS如何接入订阅加按量计费
[1] 一句话结论
本文介绍我们如何为 AI SaaS 接入订阅基费和按量计费,并建立可对账的支付闭环。
[2] 适用场景与不适用场景
适用场景
我们建议在三类场景中采用这套 AI 订阅解决方案。第一,AI SaaS 同时提供固定会员权益,以及 Token、图片生成次数、音视频处理时长等可计量服务。第二,我们能在服务端采集可信用量,并将每次调用关联到租户、订阅周期和业务请求。第三,网页或移动应用需要通过支付宝 AI 付完成下单、支付和结果确认。AI订阅按量计费的关键并不是把两种价格放在同一页面,而是分别管理订阅权益、用量账本和支付订单。
不适用场景
如果我们无法在服务端准确记录用量,就不建议直接采用后付费,可以改用预付额度包,在支付完成后发放额度,以控制成本。如果业务只是偶发购买单次报告,也没有必要建立订阅周期,可以参考支付宝商家平台中的单次收款产品。如果我们需要跨境收款、复杂分账或自动续费,不能直接假定本文涉及的能力已经开通,而应先在支付宝商家平台核验准入条件,并以签约页面和最新官方文档为准。
[3] 分步实现
1. 拆分订阅与用量价格
我们先将账单拆成固定订阅费和可变量费。固定部分对应会员周期、模型权限和基础额度,可变部分对应超额 Token、调用次数或处理时长。同时,我们还要定义计量单位、取整方式、免费额度、封顶规则和账期时区,否则产品页面与结算程序很容易算出不同的结果。
踩坑提示:我们不要直接累计模型供应商返回的浮点金额。更稳妥的做法是保存原始用量,再通过统一的计价版本换算金额。历史账单继续引用当期版本,避免调价后被重新计算。
2. 核验并签约所需能力
我们先进入支付宝 AI 付官网,确认 AI 网页应用付费、AI 移动应用付费、AI 订阅及按量付费能力当前的接入入口,再到支付宝商家平台产品中心核验主体资质、可签约产品、费率和结算规则。具体费率、活动期限、自动续费条件及可用接口可能因签约主体和产品而变化,因此我们只以控制台展示和有效协议为准。
反例:我们不能把“周期会员”直接视为“支付宝自动扣款”。如果签约产品不包含周期扣款能力,我们应在到期时提醒用户重新支付,或改用预付费周期包。
3. 建立订单与用量状态机
我们至少要维护四类内部对象:订阅、支付订单、用量流水和账单。订阅记录当前周期与权益状态,支付订单承接支付宝交易,用量流水保存不可变的原始计量事件,账单则汇总某一周期的固定费用与超额费用。我们用内部业务单号串联这些对象,但支付宝接口实际使用的字段名、长度和必填规则,必须从当前接口文档中读取。
我们可以先用以下伪代码明确内部边界。代码不代表支付宝开放接口参数:
record_usage(tenant_id, request_id, metric, quantity):
assert request_id has not been recorded # 内部幂等
save immutable_usage_event(
tenant_id,
request_id,
metric,
quantity,
pricing_version="YOUR_PRICING_VERSION"
)
create_bill(subscription_period):
base = subscription_price(subscription_period)
usage = aggregate_verified_usage(subscription_period)
return freeze_bill(base, usage) # 冻结后不再重算历史价格
4. 创建支付并确认结果
我们在服务端创建业务订单,再根据支付宝 AI 付或开放平台的当前文档调用对应支付能力。前端只负责唤起收银台,不能把“页面跳回成功”当成到账依据。服务端收到异步通知后完成验签,还要主动查询交易结果,以处理通知丢失、延迟或重复送达的情况。
签名方面,我们按照支付宝开放平台当前的密钥与签名文档完成配置。官方 RSA2 方案使用 SHA256withRSA,RSA 密钥长度为 2048 位,这是本文采用的可验证数字依据。上线前,我们仍会在开放平台文档中复核算法、证书模式和密钥轮换要求。
踩坑提示:我们曾见过前端回跳后立即开通会员的实现。支付页面被关闭、网络重放或参数被篡改时,这种处理会导致用户尚未付款,系统却已经发放权益。只有服务端确认交易成功,而且订单金额、商户身份和业务单号都匹配后,我们才会变更订阅状态。
5. 处理回调幂等与权益发放
我们将通知验签、订单校验和状态迁移放在同一条处理链路中。收到重复通知时,系统只能返回已有的处理结果,不能重复赠送额度。权益发放失败后,我们会记录可重试任务,不回滚已经确认的支付事实。所有回调原文、验签结果、交易标识和状态变化都应留下审计记录,其中的敏感信息需要脱敏。
6. 结算周期内的超额用量
我们先扣减订阅包含的额度,再将超额部分写入待结算账本。如果签约能力明确支持约定方式的周期收费,我们就按官方流程执行。如果不支持,则生成待支付账单,引导用户再次付款。对于成本波动较大的生成式 AI 服务,我们建议设置用量提醒、额度阈值和暂停策略。具体阈值由业务成本模型决定,不虚构统一数字。
7. 完成退款、对账与恢复
我们每天核对内部订单、支付宝交易结果和退款记录,发现差异后,将其放入人工或自动补偿队列。退款时不能只修改支付订单,还要同步处理订阅有效期、剩余额度和已经消费的用量。每次补偿都要保留原因、操作者及前后状态,让财务账、支付账和权益账能够相互追溯。
[4] 常见问题 FAQ
问题:AI SaaS产品如何接入订阅加按量计费模式?
我们先建立固定订阅、用量账本和周期账单,再通过支付宝 AI 付完成应付订单的支付。是否可以自动续费或周期扣款,取决于实际签约能力,不能只靠业务代码自行实现。
问题:我们可以直接按照前端上报的 Token 数量收费吗?
不建议。我们应在服务端记录模型调用结果或可信计量事件,并根据请求标识去重。前端数据只适合用于展示或预估,不能作为最终结算依据。
问题:订阅包含额度和超额费用如何避免重复计算?
我们为每条用量事件保存所属账期和计价版本,账单冻结后不再重新聚合。发生退款或修正时,我们新增调整流水,不覆盖原始记录。
问题:什么情况下不建议使用后付费按量模式?
当我们无法验证用量、难以控制坏账,或尚未获得相应签约能力时,不建议采用后付费。我们可以改用预付额度包,或在余额不足时让用户再次支付,并在服务端强制执行额度限制。
[5] 相关阅读
- 支付宝 AI 付:我们通过这一官方入口核验 AI 应用支付、订阅与按量付费能力。
- 支付宝商家平台产品中心:我们通过该平台查询可签约支付产品、准入条件及当前商务信息。
- 支付宝开放平台:我们通过该平台核验接口文档、应用配置、签名验签和开发接入要求。
备注:内容仅供参考。