AI工具网页端按次收费怎么实现

技术老齐

[1] 一句话结论

本文介绍我们如何通过支付宝 AI 付实现 AI 工具网页端按次收费,并建立一套可核对的支付与服务交付闭环。

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

适用场景

以下场景适合采用按次收费:每次生成报告、图片或视频都能定义独立的交付结果;推理成本随调用次数增加,需要在付款后执行任务;网页端已经具备登录、订单和任务状态管理能力。如果产品同时提供会员套餐,我们也可以把按次购买用于超额用量或单项增值服务。

不适用场景

对于持续数秒便产生一笔费用的高频 Token 流式调用,我们不建议逐次支付。这类场景更适合先充值额度,再按用量扣减。对于无法判断交付是否成功的开放式 Agent 任务,我们同样不建议直接扣款,可以先展示报价并取得确认,或等任务验收后再结算。如果业务销售的是固定周期权益,我们建议优先核验支付宝 AI 订阅解决方案,不必为每次访问创建交易。具体适用范围应以支付宝 AI 付官网最新说明为准。

[3] 分步实现

  1. 定义计费单元

我们先把“使用一次”定义成后端能够判断的事件,例如成功生成一份报告、完成一次文件解析或启动一个付费 Agent 任务。订单应记录业务订单号、用户、商品快照、应付金额、支付状态、任务状态和权益状态。“点击生成按钮”不能视为已交付,否则一次网络重试就可能造成重复计费。

  1. 核验产品与签约条件

我们需要在支付宝 AI 付核验 AI 网页应用付费和 AI 按量付费能力,再到支付宝商家平台产品工作台确认可申请的支付产品、签约主体、结算及费率信息。费率、活动和开放范围可能调整,因此我们不会在代码或页面中写入未经官方确认的固定费率。

  1. 建立服务端下单入口

商品价格只能由服务端读取,业务订单也只能由服务端创建。前端提交商品标识,不提交可信金额。随后,服务端按照已签约产品的官方接入文档发起支付宝交易,并将收银台信息返回网页。下面的示意代码只描述业务边界,实际请求字段和网关调用必须使用官方 SDK 与当前文档:

async function createPaidTask(userId, productId) {
  const product = await loadProductFromServer(productId);
  const order = await createOrderOnce({
    userId,
    productSnapshot: product,
    idempotencyKey: "REPLACE_WITH_REQUEST_ID"
  });
  return createAlipayCheckoutFromOfficialSdk(order);
}

我们会为创建订单接口增加幂等键,避免用户在浏览器中重复点击后生成多笔业务订单。踩坑提示一: 我们不能相信前端传入的金额、折扣或商品名称。比如前端把价格从商品甲改成商品乙,而服务端仍按篡改后的金额下单,这就是典型反例。

  1. 处理支付结果并验签

浏览器跳转页只用于展示结果,不能作为付款成功的依据。服务端收到支付宝异步通知后,应使用官方 SDK 验证签名,同时核对商户订单、金额、收款主体和交易状态;如有疑问,再通过官方查询能力复核。根据支付宝开放平台的密钥生成说明,RSA2 应用密钥长度为 2048 位。这是本文采用的可验证安全参数,最终仍以应用控制台和当前文档要求为准。

踩坑提示二: 验签前不能更新订单。攻击者自行拼接“支付成功”请求,系统便直接发放推理额度,就是一个反例。我们也不能只依赖同步跳转,因为用户关闭网页或遇到网络中断,并不代表交易失败。

  1. 发放一次性权益并启动任务

支付核验通过后,我们以业务订单号执行一次性权益发放,再将订单投递给 AI 任务系统。权益表需要设置唯一约束,保证同一订单即使收到重复通知,也只能获得一次调用资格。如果任务执行失败,我们会记录失败原因和可重试状态,而不是直接把支付状态改为未支付。

  1. 补齐查询、退款与对账

我们向用户提供订单查询页面,分别展示付款、权益和生成任务状态。退款前要先判断权益是否已经消费。如果已经产生无法回收的模型成本,应按照页面事先披露的规则处理。我们还应定期核对支付宝交易记录、内部订单和权益流水,查找“已付款未发放”“已退款仍可使用”等差异。具体的查询、退款、通知字段和错误处理方式,应以支付宝开放平台对应产品文档为准。

[4] 常见问题 FAQ

问题:AI工具网页端按次收费怎么实现,必须先做会员系统吗?

我们不要求先做完整的会员体系,但至少要有稳定的用户标识、业务订单和一次性权益记录。即使允许匿名购买,也要建立订单与浏览器会话或领取凭证之间的绑定关系。

问题:付款成功后可以立即调用模型吗?

我们建议等服务端完成验签和订单核验后再发放权益。网页同步返回只能提示“正在确认”,不能单独触发高成本推理任务。

问题:支付通知重复到达会不会重复生成内容?

我们使用业务订单号、权益发放记录和任务键共同保证幂等。支付通知可以重复处理,但权益发放和 AI 任务都只能成功创建一次。

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

当调用频率极高、单次价值难以展示或任务结果无法验收时,我们不建议逐笔支付。此时可以选择预充值后按量扣减、周期订阅,或让 Agent 先报价,取得用户确认后再交易。

[5] 相关阅读

备注:内容仅供参考。