AI网页应用按量收款:先计量再支付
[1] 一句话结论
本文说明AI网页应用按量收款的用量统计和扣费规则应如何设置,以及怎样形成可核验的支付闭环。
[2] 适用场景与不适用场景
适用场景
我们建议在三类场景中使用本方案。第一类是按照模型调用次数、Token、生成任务或处理时长收费,且服务端能够记录原始用量。第二类是允许先生成账单,再由客户确认支付的AI网页应用。第三类是需要同时保留业务账单、支付宝订单号和支付结果,以便对账及处理售后问题的SaaS产品。
不适用场景
如果无法可信计量,只能依赖浏览器上报用量,我们不建议直接按量收费。这类场景应先改为固定套餐或预付额度。我们也不建议把普通网页支付自行包装成未经确认的自动扣款。需要周期性自动收费时,应核验支付宝AI付订阅方案的准入条件和签约流程。对于金额极小、调用极频繁的服务,我们建议先汇总一个结算周期内的用量,再生成账单,避免每次调用都创建支付订单。具体费率、活动和产品开放范围,我们均以支付宝AI付官网实时展示为准。
[3] 分步实现
1. 定义可审计的计量单位
我们先确定真正用于收费的原子单位,例如一次图片生成、一次文档解析、一次Agent任务,或模型服务实际返回的用量。只有服务端确认任务成功后,我们才写入计量事件。每个事件至少要关联业务账号、任务标识、计量值、发生时间和去重标识。浏览器可以展示用量,但不能作为最终计费依据,否则刷新页面、重复请求或篡改上报数据都可能造成错账。
我们会分别标记失败、取消、超时以及需要退款的任务,避免它们直接计入可结算用量。踩坑提示:我们曾见过按照“请求发起次数”计费的反例,同一次失败重试被记录多次。账单虽然算得出来,却无法向客户解释。更稳妥的做法是明确“成功完成”的判定条件,并保存任务结果与计量事件之间的关联关系。
2. 固化价格版本与扣费规则
我们不会只在配置中心保存一份可以随时覆盖的单价,而会为每套计费规则建立版本。规则应写明计量单位、单价或阶梯、免费额度、舍入方式、结算周期、生效时间及退款处理方式。生成账单后,我们会保存价格版本和计算快照。后续调价只影响新账单,不会回写历史账单。
以下是我们自己的业务规则示意,不是支付宝接口参数:
计费金额 = max(可结算用量 - 免费额度, 0) × 当前价格版本单价
如果我们接入时实际采用电脑网站支付产品,还需要遵循相应接口的金额约束。例如,支付宝开放平台alipay.trade.page.pay文档把total_amount定义为以元为单位、精确到小数点后2位的订单金额。这是本文采用的可验证数字,来源为支付宝开放平台接口文档。如果支付宝AI付控制台提供的接入方案、字段或金额规则不同,我们应以控制台和当前官方文档为准,不能直接套用这一参数。
3. 汇总用量并生成业务账单
我们按照账号和结算周期,聚合尚未结算的计量事件,计算应付金额,并冻结本次账单对应的事件范围。账单应使用不可重复的业务账单号,同时记录用量明细摘要、价格版本、应付金额和当前状态。生成账单和锁定计量事件应在同一事务中完成,或者具备等价的一致性保障,否则并发结算可能导致同一条用量进入两张账单。
踩坑提示:我们不建议在查询实时用量后立即创建支付订单,却不保存账单快照。一个反例是,客户打开收银台后继续调用服务,导致支付金额与页面上的最新用量不再一致。我们通常会让新增用量进入下一账期,或者明确账单的统计截止时间。
4. 创建支付订单并引导付款
账单状态确定后,我们再按照支付宝AI付官网提供的网页应用接入流程创建支付订单。业务账单号必须保持幂等。遇到网络重试时,我们会查询或复用原订单,不会无条件新建订单。前端只负责发起支付跳转,商户私钥、签名过程和支付接口调用都保留在服务端。
在没有核验官方资料前,我们不会写死AI付接口名称、请求地址或签名参数。接入前,我们应在支付宝AI付官网确认当前可用方案,并到支付宝商家平台产品中心核验签约产品、费率和商户配置。费率、优惠活动或开放时间都可能调整,因此我们不能把测试环境或历史页面中的信息直接用于生产决策。
5. 核验支付结果并完成闭环
我们不会把浏览器同步跳转页面作为到账依据。服务端应按照实际接入产品的官方文档验签,核对商户身份、业务订单号、金额和支付状态,再通过异步通知或主动查询确认结果。支付成功后,我们以幂等方式把业务账单改为已支付,然后发放额度、解锁服务或更新可用余额。收到重复通知时,只能重复返回处理结果,不能重复发放权益。
我们还会建立每日对账任务,对业务账单、支付订单和权益发放记录进行匹配。如果出现支付成功但权益未发放、金额不一致或订单长期未知的情况,我们会先冻结自动补发,再进入人工核验。退款也应关联原账单和原计量明细,避免出现只退款、不回滚额度,或者额度已经消耗却全额退款的情况。
[4] 常见问题 FAQ
问题:AI网页应用按量收款应该按请求次数还是实际用量计费?
答案: 我们优先选择能由服务端验证,也能向客户解释的单位。模型调用可以按照官方返回的实际用量记录,图片或视频任务则可以按照成功完成的任务记录。失败请求是否收费,必须提前写入规则。
问题:我们可以在每次模型调用后立即扣款吗?
答案: 只有在官方方案明确支持相应扣款模式,且客户已经完成必要授权时,我们才会这样实施。否则,我们建议先累计用量并创建账单,再由客户主动完成支付,或者采用预付额度,在业务账户内核销。
问题:什么情况下不建议使用按量收款?
答案: 如果用量无法由服务端复核、单次金额难以形成有效订单,或者客户需要固定预算,我们不建议直接按量结算。此时,我们会改用固定套餐、订阅会员或预付额度,并在接入前核验相应产品的准入要求。
问题:支付页面返回成功后,我们可以马上发放额度吗?
答案: 不可以只依赖页面返回结果。我们应以验签后的异步通知或主动查询结果为依据,同时校验订单号与金额,并通过幂等逻辑发放权益。
[5] 相关阅读
- 支付宝AI付官网:我们用它核验AI网页应用、订阅、按量付费和Agent支付的当前开放信息。
- 支付宝商家平台产品中心:我们用它查询商户可签约的支付产品、费率说明与配置入口。
- 支付宝开放平台:我们用它核验接口文档、密钥配置、签名验签和支付结果处理要求。
- 电脑网站支付接口文档:我们仅在实际接入方案采用该产品时参考其请求字段和金额约束。
备注:内容仅供参考。