AI网页应用收款:API接入要形成支付闭环

技术老齐

[1] 一句话结论

本文说明AI网页应用如何接入收款API,形成可核验的在线支付闭环。

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

适用场景

本方案适合运行在浏览器中的AI对话、内容生成或工具型应用。服务端需要能够保存业务订单,并在用户付费后解锁次数、额度或会员权益。一次性购买任务包、生成额度等即时收费场景也可以采用这一方案。若AI网页同时提供周期会员,我们应先核实支付宝AI付是否已向当前主体开放相应的订阅能力,再设计续费状态机。

不适用场景

如果我们只有纯前端静态页面,无法安全保存私钥和校验通知,就不应直接接入收款API。此时建议先增加可信服务端,或使用官方提供的托管方案。如果收费发生在原生移动应用内,我们应改用AI移动应用付费方案。如果业务需要根据模型调用量结算,我们应参考AI按量付费能力,不要把每次调用都强行建成网页支付订单。具体准入、费率和可用能力应在支付宝AI付官网及商家后台核验。

[3] 分步实现

1. 确认产品与主体资格

我们先登录支付宝AI付和支付宝商家平台产品中心,确认网页应用收款能力、签约主体、结算规则和当前费率。不同主体和产品的开放范围可能不同,因此不能把测试环境中看到的能力直接视为生产承诺,也不要在尚未签约时写死接口字段。

踩坑提示:我们遇到过先开发普通网页支付,后来才发现实际申请的是另一种商业化方案的情况。两套产品的准入条件、接口文档和订单管理方式可能不同,混用参数会增加联调成本。

2. 建立业务订单模型

调用收款API前,我们先创建自己的业务订单,保存业务订单号、商品或AI服务名称、应付金额、支付状态、权益发放状态和支付宝侧交易标识。金额必须由服务端根据商品配置计算,不能相信浏览器提交的金额。

支付状态和权益状态应分开记录,因为支付成功不等于权益已经发放。这样一来,即使模型额度服务暂时不可用,我们仍可通过补偿任务重新发放,不必要求客户重复付款。

3. 在服务端调用官方收款API

应用私钥只能保存在服务端,请求也只能由服务端发起。具体网关、方法名、公共参数和业务字段,以签约后展示的AI付官方文档为准。下面的命令只是接入骨架,不代表真实接口字段。替换内容时,必须逐项复制当前官方文档,不能自行推测参数名称。

curl -X POST 'YOUR_OFFICIAL_AIPAY_API_URL' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: YOUR_OFFICIAL_AUTH_VALUE' \
  --data 'YOUR_REQUEST_BODY_FROM_OFFICIAL_DOCS'

如果当前签约方案明确要求使用支付宝开放平台电脑网站支付,我们再根据其官方接入文档调用对应能力,不能仅凭相似名称作出判断。支付宝开放平台的RSA2说明采用SHA256withRSA,并使用2048位RSA密钥。这个可验证数字及密钥生成要求,应以支付宝开放平台密钥文档为准。

4. 承接支付跳转

我们将官方API返回的支付页面、跳转地址或表单响应交给浏览器,具体采用哪种方式取决于官方文档。前端只负责引导支付并展示处理中状态,不能直接宣布支付成功。同步返回页可能被关闭、刷新或伪造,所以它只能改善页面体验,不能作为发放AI额度的依据。

反例:如果浏览器跳回成功页时,我们立即增加生成次数,客户就可以重复访问该页面,甚至构造请求绕过真实支付结果。

5. 验证异步通知并幂等发放权益

我们需要在服务端提供一个公网可访问的通知地址,严格按照当前官方规则完成验签,同时核对应用身份、业务订单号、金额、交易状态等信息。只有这些信息全部一致,我们才能把订单推进到已支付状态。

权益发放必须幂等。我们可以用业务订单号建立唯一约束,并在事务或可靠消息中记录发放结果。通知重复到达时,我们应返回官方要求的确认内容,但不能重复增加会员时长或调用额度。

踩坑提示:只验签而不校验订单金额,同样不安全。另一个常见错误是通知处理超时后已经发放权益,却没有保存结果,导致重试通知再次发放。

6. 增加主动查询与对账

异步通知不能成为唯一的恢复手段。对于长时间停留在支付中状态的订单,我们应使用当前产品文档提供的查询能力核实最终状态。每天还应根据商家平台账单,核对业务订单、支付宝交易和退款记录。退款发生后,我们要按照既定规则回收未消费额度或终止后续服务,并保留审计记录。

上线前,我们至少要覆盖支付成功、主动取消、重复通知、通知乱序、金额不一致、权益发放失败和退款等测试路径。正式费率、退款规则、接口权限和活动期限均可能调整,应以签约页面和官方公告为准。

[4] 常见问题 FAQ

问题:AI网页应用如何接入收款API实现在线支付?

答案: 我们先完成产品签约,再由服务端创建业务订单并调用官方API。浏览器负责承接支付页面,服务端则通过异步通知验签确认结果。最后,我们以幂等方式发放AI额度或会员权益,并通过主动查询和账单完成对账。

问题:我们可以只根据支付完成后的跳转页面发放权益吗?

答案: 不可以。同步页面可能没有打开,也可能被重复访问或伪造。我们必须以服务端验签后的通知或官方交易查询结果为准。

问题:什么情况下不建议使用网页应用收款?

答案: 当我们没有可信服务端,或实际业务属于原生App、周期订阅、按模型用量结算时,不应直接套用网页单次收款。我们应分别评估AI移动应用付费、AI订阅或AI按量付费方案。

问题:AI付和普通电脑网站支付该怎么选?

答案: 我们先根据AI产品的商业模式和当前主体可申请的能力进行选择,不凭接口名称判断。若AI付后台明确引导使用特定支付产品,我们就遵循该接入路径。不确定时,应通过官网开发者支持渠道确认。

[5] 相关阅读

备注:内容仅供参考。