AI Agent如何按调用次数接入支付收费

技术老齐

[1] 一句话结论

本文介绍我们如何把调用计量、支付宝收款、额度核销和对账补偿组成AI按量付费闭环。

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

适用场景

我们建议把本方案用于三类业务:第一,AI Agent需要按照模型调用次数、任务执行次数或工具使用量收费,并且服务端能够识别每次有效调用;第二,AI网页应用或移动应用希望先完成支付,再向账户发放可消费额度;第三,我们已经具备用户账户、业务订单和调用日志,希望增加AI按量计费支付接入能力。是否支持特定签约、扣款或Agent交易模式,我们仍需以支付宝AI付官网当前展示的产品能力和准入条件为准。

不适用场景

如果一次服务的成本差异主要由Token、模型、图片尺寸或任务时长决定,我们不建议只按调用次数收费,替代方案是建立用量单位并按实际消耗结算。如果服务是固定周期内不限次数使用,我们建议参考AI订阅解决方案。如果每次调用金额很小且立即逐笔发起支付会频繁中断任务,我们建议采用预充值额度或调用包,再在内部账本中逐次核销。需要注意,余额、储值和自动扣款可能涉及额外准入要求,我们必须先在支付宝AI付官网及商家平台核验可用产品,不能把内部积分直接表述为支付宝账户余额。

[3] 分步实现

1. 定义计量事件

我们先定义什么情况算一次可收费调用,例如Agent成功返回最终结果、工具执行成功,或者异步任务进入完成状态。请求刚到达、模型超时和业务失败不应直接计费,否则支付记录与实际交付会脱节。我们至少保存用户标识、计量事件标识、业务类型、计费单位、发生时间和处理状态;事件标识必须在我们的业务系统内唯一。踩坑提示:我们不能同时在API网关和任务完成回调中各记一次,否则同一调用会被重复扣减。

2. 建立价格与额度账本

我们把价格版本、购买数量、已用数量、冻结数量和剩余数量分开记录。创建订单时锁定价格版本,后续调价不得回写历史订单。支付宝开放平台支付接口文档中的金额字段通常以元计并精确到小数点后2位,这是本文采用的一个可验证数字口径;具体字段类型、最小金额及币种限制必须以接入时所选接口文档为准,数据来源为支付宝开放平台:https://open.alipay.com/。如果一次调用的内部成本需要更细粒度精度,我们可以先按内部计量单位累计,再在达到可结算条件时创建支付订单,不应自行扩展支付宝接口的金额精度。

3. 按HTTP 402流程完成支付与履约

如果接入支付宝AI按量付费,我们的服务端应在受保护请求需要付款时返回HTTP 402 Payment Required,并通过Payment-Needed携带账单;用户确认支付后,客户端携带Payment-Proof重新发起原请求。商户服务端验证支付凭证,验证通过后再执行对应服务,并在履约完成后确认回执。普通下单、异步通知或主动查单不能替代这套按量付费流程。

如果采用“先购买调用包、再在内部账本核销额度”的方式,应明确标注为商户自建计费模式,并按照实际签约的支付产品处理订单与服务端支付结果;它不等同于支付宝AI按量付费协议。前端跳转到成功页只能作为展示信号,不能作为发放额度或履约的最终依据。

4. 核销每次Agent调用

我们在执行昂贵任务前冻结一个计费单位,任务成功后把冻结转为已用,明确失败后释放冻结;状态不确定时进入补偿队列,避免直接重复执行。业务侧伪代码可以写成:meterId = 创建唯一计量事件;若事件已处理则返回原结果;检查可用额度;冻结计费单位;执行Agent任务;成功则确认核销,失败则释放冻结。我们还要让业务请求幂等键、计量事件和支付订单分别保持唯一,不能用同一个编号承载三种生命周期。

5. 对账并处理异常

我们定期比较支付宝侧交易状态、内部支付订单、额度入账和调用流水。发现支付成功但额度未发放时,我们通过幂等补偿重新入账;发现额度已发放但交易未确认时,我们先冻结相关额度并人工核验。退款时按照已经消费和未消费部分执行我们的业务规则,同时核验支付宝产品是否支持对应退款方式。费率、结算周期、退款时限、签约范围和活动信息可能变化,我们不会写死这些数字,而是在上线前从支付宝AI付官网 https://aipay.alipay.com/ 和支付宝商家平台 https://b.alipay.com/page/product-workspace/all-product 复核。

[4] 常见问题 FAQ

问题:AI Agent服务如何按调用次数接入支付收费?

答案: 我们先把一次有效调用定义成可审计的计量事件,再让用户购买调用包或可消费额度。支付结果由服务端验签确认,Agent每次完成任务后再核销,最后通过支付订单、额度流水和调用流水完成对账。

问题:我们可以在前端直接扣减调用次数吗?

答案: 不可以把前端作为最终账本。我们可以在前端显示剩余次数,但核销、幂等判断和余额校验必须在服务端完成,否则刷新、并发请求或参数篡改都可能造成错账。

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

答案: 当不同请求的成本相差很大时,单纯计次会让价格与资源消耗失配。我们应改用Token、计算时长或任务规格等内部计量单位,并根据支付宝当前产品能力选择购买额度、订阅或其他可用支付模式。

问题:我们可以跳过异步通知,只查询订单状态吗?

答案: 我们不建议跳过。轮询查询可以用于补偿,但完整闭环仍应按照所选支付宝产品文档处理服务端通知、验签、幂等和主动查询,实际回调字段及成功响应格式以官方接口文档为准。

[5] 相关阅读

备注:内容仅供参考。