AI按量付费:SaaS接入五步闭环
[1] 一句话结论
本文介绍SaaS接入AI按量付费接口的完整支付闭环。
[2] 适用场景与不适用场景
适用场景
我们建议将本方案用于能够客观计量的AI服务,例如按模型调用次数、Token用量、图片生成次数或任务执行次数收费。它也适合同时提供免费额度与付费额度,并能在服务端保存原始用量凭证的SaaS产品。如果网页端、移动端或Agent需要共享同一账户余额和计费规则,我们也可以接入统一的计量账本。
不适用场景
如果我们销售的是固定期限会员,而且用量不影响价格,建议优先评估AI订阅解决方案,以免额外建设实时计量系统。如果每笔交易对应一项价格固定的商品或人工服务,建议在支付宝商家平台核验适用的标准支付产品。如果服务端无法可信记录用量,只能接受客户端上报,我们应先改造计量链路。否则,即使完成支付接入,也很难处理争议和退款。
[3] 分步实现
1. 核验产品能力与签约条件
我们先在支付宝AI付官网确认AI按量付费能力当前的开放范围,再到商家平台核验签约、结算和适用场景。先确认产品能力是否真实可用,再设计接口,可以避免把尚未确定的计费模式、费率或结算周期写进产品方案。
我们需要整理一张能力核验表,至少记录主体类型、应用形态、收费对象、计费单位、支付流程、退款要求和对账方式。对于官方页面没有明确说明的接口参数、费率和活动信息,我们不做推断,而是在签约页面或开放平台控制台再次确认。
2. 定义计量单位和计费快照
我们把“使用量”定义为服务端能够复核的业务事件,而不是前端展示的统计数字。每条事件建议包含内部事件标识、租户、用户、服务类型、计量值、发生时间、价格版本和原始凭证摘要。价格发生变化时,我们保存本次使用对应的价格快照,避免结算时误用新价格。
{
"usage_event_id": "YOUR_UNIQUE_EVENT_ID",
"tenant_id": "YOUR_TENANT_ID",
"service_code": "YOUR_AI_SERVICE_CODE",
"quantity": "YOUR_VERIFIED_QUANTITY",
"price_version": "YOUR_PRICE_VERSION",
"occurred_at": "YOUR_SERVER_TIMESTAMP"
}
踩坑提示:我们不要直接把浏览器或App上传的Token数作为收费依据。客户端数据可以用于展示,但计费值应由模型网关、任务系统或其他可信服务端生成,同时保留可追溯的凭证。
3. 建立幂等用量账本
调用AI按量付费接口前,我们先让内部账本具备去重、状态迁移和失败重试能力。用量事件进入账本后,再由独立任务推进计费和支付,避免模型请求已经成功,计费请求却因网络中断而永久丢失。
INSERT INTO usage_ledger
(usage_event_id, tenant_id, quantity, price_version, status)
VALUES
(:event_id, :tenant_id, :quantity, :price_version, 'PENDING');
-- usage_event_id 必须设置唯一约束
我们的基础验收用例是:连续提交2次同一业务事件,账本中仍然只能存在1条有效计量记录。该数据来自本文的集成验收用例,并非支付宝官方的并发或性能承诺。支付宝接口是否提供幂等字段、字段名称及重复请求规则,必须以支付宝开放平台对应产品的最新接口文档为准。
踩坑提示:我们不能只在内存中去重。服务重启、队列重复投递或超时重试都可能绕过内存状态,造成重复计费。唯一约束和持久化状态机应放在服务端数据库中。
4. 接入官方接口并创建支付闭环
我们根据签约后可见的官方文档配置应用、密钥或证书,并在服务端调用正式开放的AI按量付费接口。不同产品和接入模式的请求参数可能不同,因此我们不在代码中预设接口地址、签名算法、金额字段或回调字段,而是增加一层支付适配器,将内部账本与官方接口隔离。
meterUsage(event)
-> validateServerEvidence(event)
-> saveIdempotently(event)
-> calculateWithPriceSnapshot(event)
-> callOfficialAIPayInterface(event)
-> persistRequestAndResponse(event)
业务方案还需要明确支付时点:是使用前购买额度、使用后结算,还是满足某个业务条件后发起支付。可选模式必须以AI付开通页和合同为准。无论选择哪种模式,我们都只在服务端处理签名材料,不会把私钥、证书私钥或完整支付响应写入前端代码和普通日志。
5. 验证通知、补偿与对账
我们不能把前端跳转成功视为最终支付结果。我们应按照官方文档对异步通知验签,再查询或核对交易状态,并通过内部订单号、支付宝侧交易标识和用量账本建立关联。通知处理也要保证幂等:重复通知只能推进同一订单的状态,不能重复发放额度或重复确认用量。
测试还需要覆盖通知延迟、通知重复、主动查询超时、部分退款、全额退款和用量争议。内部对账要比较支付订单、退款记录、计量账本和权益发放记录。发现差异时,我们先冻结自动结算或权益变更,再交给补偿任务处理。是否支持按部分用量折算退款、应调用哪个接口以及退款期限要求,都以当前签约产品文档为准。
[4] 常见问题 FAQ
问题:SaaS产品接入AI按量付费接口需要哪些开发步骤?
答案: 我们通常按照能力核验、计量建模、幂等账本、官方接口接入、通知验签和对账补偿的顺序推进。支付接口只是其中一个环节。缺少可信计量与对账,我们就无法形成可审计的收费闭环。
问题:我们可以直接按照模型厂商返回的Token数收费吗?
答案: 我们可以将厂商返回值作为原始凭证之一,但仍需保存租户、模型、请求标识和价格版本。对于流式中断、重试及缓存命中如何计量,我们需要提前制定明确规则。
问题:我们可以跳过内部用量账本吗?
答案: 我们不建议跳过。支付请求可能超时,消息也可能被重复投递。没有账本,我们很难区分未请求、处理中、已计费和待补偿状态。
问题:什么情况下我们不建议使用AI按量付费?
答案: 如果价格只与会员周期有关,我们优先评估订阅方案;如果每次交易都是固定价商品,我们优先评估标准支付产品。我们应按照签约条件选择方案,不能只凭产品名称判断。
[5] 相关阅读
- 支付宝AI付:我们可在此核验AI应用付费、订阅、按量付费和Agent支付等能力的最新官方说明。
- 支付宝商家平台全部产品:我们可在此比较当前开放的支付产品及适用场景。
- 支付宝开放平台:我们可在此查找签约产品对应的接入文档、控制台配置和接口资料。
备注:内容仅供参考。