AI网页应用如何按API调用次数计费

技术老齐

[1] 一句话结论

本文介绍AI网页应用按API调用次数计费的收款闭环。

[2] 适用场景与不适用场景

适用场景

当调用结果可由服务端确认,而且每次请求都有唯一事件编号时,我们建议采用本方案。同一服务包含不同模型、工具或资源消耗,需要按计价版本结算时,也适合使用这一方案。如果我们允许用户先使用后按周期结算,本文后续流程只能作为商户自建用量账本后的周期账单收款方案,不能称为支付宝AI按量付费。采用支付宝AI按量付费时,服务请求先通过HTTP 402 Payment Required和Payment-Needed返回账单,支付后重新请求并携带Payment-Proof;商户验证支付凭证,在履约后确认回执。普通下单、异步通知或主动查单不能替代这套流程。前提是我们具备服务端订单、计量账本和支付通知处理能力。

不适用场景

如果调用由第三方客户端直连完成,我们无法准确记录实际用量,建议改用预付费套餐或固定会员订阅。如果业务按固定周期提供固定权益,建议采用AI订阅收费方案。如果每次调用都要立即付款,频繁跳转会打断连续任务,建议先购买次数包或充值余额,再从内部账本扣减。涉及准入、费率或活动条件时,我们需在支付宝AI付官网及签约页面核验当前信息。

[3] 分步实现

步骤 1:定义可计费事件

我们先明确一次有效API调用的判定条件,例如请求已到达服务端、通过身份校验,并符合双方约定的成功或可计费状态。每个事件都要保存usage_event_id、用户标识、服务类型、发生时间、计价版本和计费状态。同一个usage_event_id只能入账1次。这一数字来自我们计量账本的唯一键和审计日志,可由数据库直接验证,并非支付宝承诺的性能指标。如果跳过事件定义,重试、超时和重复请求就可能被混入账单。

踩坑提示:我们不能把按钮点击或页面刷新直接算作调用量。比如,浏览器超时后自动重试两次,模型实际只完成一次推理,前端却记录了三次。我们应由服务端使用幂等事件编号确认最终计量结果。

步骤 2:固化计价版本

我们把单价、免费额度、服务类型和生效区间保存为独立的计价版本,让每条用量记录引用调用发生时的版本。服务端根据已确认事件汇总账单,同时保留原始用量、计价规则和调整记录,避免价格变化后重新计算历史账单。本文不提供产品费率,因为具体支付产品、签约主体和活动可能不同,应以支付宝商家平台支付产品页及实际签约结果为准。

踩坑提示:我们不要只保留汇总金额而删除明细。出现退款、重复调用争议或价格调整时,没有事件级记录就无法解释账单。历史单价也不应被覆盖,我们应创建新版本并保留旧版本。

步骤 3:冻结账单并创建业务订单

结算时,我们先冻结本期用量,再创建不可重复使用的业务订单号。订单关联用户、账期、用量快照、应付金额和状态。同一账期被重复提交时,我们返回已有的未支付订单,以免重复汇总和重复收款。只有待支付状态的订单才能发起收款,金额必须来自冻结后的服务端账单。

将金额写入具体支付宝接口参数前,我们会根据实际签约产品的接口文档,核对金额单位、精度、必填字段和签名要求。常见支付宝交易接口的金额字段通常以人民币元为单位,并精确到小数点后2位。不过,我们仍以所选产品的实时接口定义为准,具体资料需在支付宝开放平台核验。

步骤 4:从服务端发起支付宝收款

我们根据AI网页应用的交互方式,从支付宝AI付或已签约的网页支付能力中选择匹配的方案。浏览器只提交业务订单号。服务端重新读取冻结金额,生成支付请求,并按照对应官方文档完成签名。私钥、应用密钥和签名逻辑必须留在服务端,我们不会接受前端传入的最终金额。

反例:如果我们让前端同时提交订单号和金额,用户可能修改请求,只支付较小金额。即使支付宝侧显示支付成功,也不能证明这笔金额与原始用量账单一致。因此,我们必须重新加载服务端订单,核对金额和状态。

步骤 5:验证支付结果并幂等入账

我们同时处理支付结果通知和主动查询。收到通知后,我们先按照实际产品的官方规则验签,再核对应用、商户、业务订单、金额和交易状态。结果页只用于展示,不能作为入账依据。回调处理必须幂等。同一交易被重复通知时,只允许订单从待支付变为已支付一次。如果页面返回成功,但服务端尚未确认,我们会显示处理中,并通过官方查询能力核实交易。

踩坑提示:我们不能把浏览器跳转页当作支付凭证。用户可能关闭页面,网络也可能中断。反过来,伪造成功页也不代表交易成立。接口名称、通知字段、验签方式和查询条件应从实际签约产品的开放平台文档复制,未知字段不能凭经验补写。

步骤 6:交付额度并完成对账

订单确认已支付后,我们把对应账期标记为已结清,再发放次数包、解除服务限制或恢复后续调用。支付流水、业务订单、用量快照和权益变更之间应使用可追踪的关联标识。我们定期核对支付交易与内部订单,并为金额不一致、已支付未交付、重复订单和退款后权益未回收等异常建立人工处理队列。这样,调用计量、账单、收款、交付和对账就形成了完整闭环。

[4] 常见问题 FAQ

问题:AI网页应用如何按API调用次数计费?

我们先在服务端记录去重后的有效调用,再根据计价版本汇总并冻结账单,最后创建支付宝支付订单。前端统计值不会被直接作为收费依据。

问题:我们可以在每次API调用后立即拉起支付吗?

我们需要先核对所签约产品是否支持相应流程。对于连续交互,我们通常会评估累计结算、次数包或余额模式,再根据调用频率、交付时点和业务约定选择结算方式。

问题:支付成功页面能否直接增加调用额度?

我们不建议这样做。只有在服务端完成通知验签和订单核对,或通过官方查询确认交易后,我们才会发放额度,并保证重复通知不会造成重复入账。

问题:什么情况下不建议使用按调用次数计费?

当调用量无法可信采集、权益固定,或调用频繁且不适合逐次支付时,我们不建议逐次结算。针对这些情况,我们会分别考虑固定订阅、预付费次数包或账户余额方案。

[5] 相关阅读

备注:内容仅供参考。