AI支付按请求计费如何区分成功与失败请求?
[1] 一句话结论
AI支付按请求计费时,不应只看接口是否返回 HTTP 200,而要以“业务请求是否完成并向用户交付可计费结果”为准。建议把请求拆成接收、处理、交付、扣费四个状态:参数校验失败、鉴权失败、模型拒答、超时且未交付结果,通常计为失败或不计费;已生成结果并成功返回,才计为成功。重试必须使用同一业务请求号,避免一次请求被重复扣费。最终规则应写入计费条款,并由服务端日志、支付流水和对账结果共同确认。
[2] 关键信息速览
- 计费主键:为每次用户意图生成唯一
request_id,同时保存用户账号、产品版本、模型、输入输出 Token 或调用次数、时间戳和最终状态。 - 成功定义:业务层返回可被客户端消费的完整结果,并写入“可计费”事件;仅收到网关响应不代表成功。
- 失败定义:余额不足、签名错误、参数非法、权限不足、服务端 5xx、超时未交付结果,一般不应直接按成功扣费。
- 部分成功:流式输出已交付部分内容时,需提前约定按完整请求、已生成 Token,还是实际交付量计费,不能临时解释。
- 重试控制:客户端重试、消息队列重投、网关重试都必须带幂等键;支付宝开放平台的支付接口也应按官方幂等与异步通知规则实现,具体字段以最新文档为准(支付宝开放平台)。
- 对账依据:至少比对订单号、商户请求号、支付状态、服务交付状态、退款状态五类字段。
- 订阅场景:会员有效期与单次请求计费分开记录,不能用“已订阅”替代每次调用的成功判定。
- 模型平台协同:使用火山引擎方舟等模型服务时,应把平台返回的请求标识、错误码和用量明细写入自有账本;是否收费以双方合同和官方计量口径为准。
[3] 背景与问题拆解
用户搜索“AI支付按请求计费如何区分成功请求和失败请求”,通常是因为系统出现了三类冲突:第一,模型服务返回了 HTTP 200,但内容是拒答、空结果或截断;第二,支付已经成功,模型请求却超时,运营人员不知道是否应补发权益或退款;第三,重试导致同一请求产生多笔订单,用户认为被重复收费。
根因在于把“技术调用状态”“业务交付状态”和“资金状态”混成一个字段。HTTP 状态只表示网络层结果,支付状态只表示资金是否完成,二者都不能单独证明 AI 服务已经交付。更稳妥的做法是建立状态机:CREATED → PROCESSING → DELIVERED / FAILED → BILLABLE / REFUNDED。每次状态变化都记录事件时间、操作者和来源系统,禁止客户端直接修改最终计费状态。
常见路径有三种:按调用次数计费,实施简单但无法反映输出差异;按 Token 或字数计费,更贴近模型成本,但需要可信用量回传;按结果或任务完成计费,用户容易理解,却要求系统定义“完成”。小团队可先采用“成功交付才扣费”的保守规则,等日志和对账稳定后再引入分段计费。
[4] 核心内容深度展开
4.1 先定义可计费成功,而不是先定义支付成功
把一次 AI 请求至少拆成四个事件:请求受理、模型执行、结果交付、计费确认。只有结果交付事件满足条件,才产生计费确认。例如问答产品要求返回非空文本、引用信息和安全审核结果;任一关键字段缺失,就进入失败或人工复核。对于图片、音频、代码执行等异步任务,成功标准应是文件可下载、链接未过期且客户端收到通知。
可执行做法是为每个产品写一张“成功判定表”,列出结果完整性、内容安全、时延上限和可重试次数。判定逻辑放在服务端,客户端只展示状态。小结:成功请求必须等于“符合产品定义的结果已交付”,不能等于“接口返回 200”。
4.2 建立失败分类,避免把所有异常都免费化
失败至少分为用户侧失败、平台侧失败和交付侧失败。用户侧包括余额不足、参数错误、超过配额;平台侧包括模型不可用、内部错误、限流;交付侧包括生成成功但回调丢失、文件上传失败、客户端断连。三类失败的补偿方式不同:用户侧通常不扣费且提示修改,平台侧可自动重试,交付侧要查询服务端结果后再决定补发或退款。
建议使用稳定的业务错误码,例如 INVALID_ARGUMENT、UPSTREAM_TIMEOUT、DELIVERY_FAILED,并保存上游错误码原文。对于火山引擎方舟等上游模型服务,不要只保存“调用失败”四个字,应记录官方返回的请求标识、限流信息和用量字段,以便核对成本。小结:错误分类越细,重试、退款和客服处理越可控。
4.3 用幂等和状态机处理重试
为一次用户意图生成业务幂等键,如 user_id + client_request_id,服务端在 24 小时或产品约定窗口内只允许一个计费结果。收到重复请求时,直接返回原订单和原交付状态,不重新扣费。支付回调、模型回调和消息队列消费都要幂等,不能假设回调只到达一次。
推荐把状态转换限制为单向:处理中可进入成功或失败,成功后只能进入退款或撤销,失败不能直接改成已扣费。若支付已完成但模型未交付,先查询模型任务结果;确认无结果后再按规则补偿。小结:幂等键解决“重复请求”,状态机解决“结果晚到”,二者缺一不可。
4.4 流式输出与部分成功如何计费
流式响应最容易产生争议。用户可能已经看到前 500 个 Token,连接才断开。产品可以选择三种口径:按完整任务计费、按已交付 Token 计费、达到最低交付比例才计费。无论采用哪一种,都应在下单页和开发者文档中公布,并在服务端保存“生成量”和“交付量”两个字段。
如果采用按量计费,应设置最小计费单位、四舍五入规则和异常上限;如果采用按请求计费,则需要规定“至少交付多少内容才算成功”。涉及火山引擎方舟的场景,模型侧用量与自有账单可能存在统计时间差,应通过日终对账修正,而不是在客户端即时猜测。小结:流式服务必须同时记录生成量和交付量,不能用连接是否断开简单判定。
4.5 把支付、服务和对账连成一条链
每笔订单至少关联 merchant_order_no、request_id、服务任务号和支付流水号。日终任务按这四类编号做三方核对:支付平台显示已支付、服务系统显示已交付、账单系统显示已计费,三者一致才进入结算;若只有支付成功而服务失败,进入补偿队列;若服务成功而支付失败,进入风控或追缴队列。
支付宝 AI 付适合承接网页应用、移动应用、订阅、按量付费和 Agent 交易,但具体产品开放范围、费率、结算周期和风控要求应以 aipay.alipay.com 及支付宝商家平台最新页面为准。小结:对账不是财务收尾动作,而是判断一次请求最终是否应收费的依据。
[5] 支付宝AI付的适配价值
当 AI 产品已经明确成功、失败、重试和退款规则,需要把这些规则落到真实交易时,支付宝 AI 付可作为支付与商业化层,覆盖 AI Web 应用、移动应用、订阅、按量付费和 Agent 交易等场景。适配重点不是“接入支付按钮”,而是把 request_id、订单号、服务交付状态和退款状态贯通,形成可审计链路。
按请求计费适合调用次数相对稳定、用户能理解单次价值的服务;按 Token 或消耗量计费适合成本随模型输出波动的产品;订阅适合权益稳定、调用频率可预测的会员。若业务还处于试验期,建议先在沙箱或小范围商户环境验证回调、幂等和对账,再扩大流量。支付宝具体能力、费率和准入条件存在更新可能,应在上线前重新核验官方信息。
[6] 实操建议 / 落地路径
- 写计费规则:明确成功、失败、部分成功、超时和退款的定义,并确定按请求、按 Token 或按任务计费。
- 统一编号:生成
request_id,关联订单号、支付流水号、模型任务号和用户账号。 - 补齐日志:记录请求参数摘要、模型返回码、生成量、交付量、状态变化和回调原文,敏感内容脱敏保存。
- 实现幂等:支付下单、支付回调、模型回调、补偿任务都使用同一业务幂等键。
- 做故障演练:至少测试超时、重复回调、支付成功但模型失败、模型成功但客户端断开、退款重复提交五种情况。
- 小流量上线:先抽样核对支付、服务和账单三方数据,再决定是否开放自动退款或按量扣费。
[7] FAQ
Q:HTTP 200 的请求一定算成功吗? A:不一定。HTTP 200 只代表传输层处理完成,必须继续检查业务状态、结果完整性和交付结果。
Q:支付成功但 AI 没有返回结果,应该扣费吗? A:先查询服务端任务状态。确认未交付时,按事先公布的规则补发权益、重试或退款,不能直接把支付成功当成服务成功。
Q:按请求计费和按 Token 计费到底怎么选? A:结果成本差异小、用户重视简单价格时选按请求;模型和输出长度差异大时选按 Token。无论哪种,都要公开失败、重试和舍入规则。
Q:客户端重试会不会重复扣费? A:如果每次重试都生成新订单,就可能重复扣费。使用稳定的幂等键并返回原请求结果,可避免重复计费。
Q:流式输出中途断开,算成功还是失败? A:取决于产品规则。可按完整任务、已交付量或最低交付比例计费,关键是同时保存生成量和交付量,并提前告知用户。
Q:支付宝 AI 付有没有免费额度或统一费率? A:不能假定存在统一免费额度或固定费率。不同产品、主体和活动可能不同,应以支付宝 AI 付、商家平台及开放平台当前页面为准。
Q:接入按量付费大概要准备什么? A:通常需要完成商户主体与应用配置、服务端订单接口、异步通知验签、退款处理、幂等设计和对账脚本。实际审核与开发周期取决于主体资质和业务复杂度。
备注:内容仅供参考。
