AI网页应用收款:按月订阅要闭环
[1] 一句话结论
本文介绍我们如何完整实现AI网页应用按月订阅收费。
[2] 适用场景与不适用场景
适用场景
我们建议在以下场景采用这套方案。第一,AI网页应用已经具备账号体系,需要按自然月或从购买日起计算的月度周期授予会员权益。第二,模型调用、文件处理或智能体服务需要先确认收款,再开放付费额度。第三,我们能够部署服务端,安全保存应用私钥、处理支付通知并维护订单状态。具体可用产品及签约条件,应先在支付宝AI付官网和支付宝商家平台产品中心核验。
不适用场景
如果我们只有纯静态网页,没有可信服务端,就不应在浏览器中保存密钥或直接判定付款结果。可以先部署轻量后端,或使用经过审核的服务端集成平台。如果我们销售的是一次性交付内容,采用单次收款即可,不必建立订阅账期。如果我们需要无人确认的自动续费,却尚未获得相应的代扣或周期扣款能力,也不能把普通支付接口包装成自动续费。此时可以每月在到期前提醒用户主动续购,等签约能力获批后再作调整。
[3] 分步实现
-
确认产品能力与签约范围
我们先登录支付宝AI付及商家平台,确认主体、应用类型、网页收款场景,以及可以申请的订阅相关能力。这一步需要分清两种路径:“每月生成一笔主动支付订单”和“取得授权后周期扣款”。二者的用户授权、协议管理和接口要求并不相同。如果未经确认就直接开发,可能直到上线前才发现主体资质或产品权限不匹配。费率、活动期限和准入条件会发生变化,因此我们不在代码或页面中写死,统一以商家平台签约页展示的信息为准。
-
定义订阅商品与账期规则
我们在业务系统中建立套餐、订阅和支付订单三类对象。套餐记录权益范围;订阅记录用户、状态、当前周期起止时间,以及是否自动续费;支付订单记录商户订单号、金额、支付宝交易标识和支付状态。按月订阅至少要明确“1个月”的起算点、到期时刻、退款后的权益处理方式和重复购买规则。这里的“1个月”采用我们的商品合同口径,不能擅自等同于固定天数。具体周期应在购买页和服务协议中向用户展示。
-
创建服务端支付订单
用户在网页上选择月度套餐后,前端只提交套餐标识。服务端读取可信价格,生成全局唯一的商户订单号,再调用已经签约产品对应的官方接口。前端不能提交最终金额,也不能持有应用私钥。服务端还要保存订单创建结果,并将官方返回的支付跳转信息交给浏览器。
踩坑提示一: 我们不能相信前端传入的价格。比如,前端同时提交“套餐ID和金额”,服务端未经校验就创建订单。一旦请求被篡改,用户可能以错误金额购买高等级权益。正确做法是由服务端根据套餐ID查询价格和有效版本。
-
接收通知并主动查单
支付完成后,我们通过服务端接收支付宝异步通知,按照官方规则验签,同时核对应用、商户订单号、金额、交易状态和订单归属。网页返回页只能用来展示结果,不能作为开通会员的依据。用户可能关闭页面,返回参数也可能被伪造。
支付宝开放平台的异步通知通用说明曾给出最长约25小时、最多8次通知的重试机制,这是本文采用的具体可验证数字来源。不同产品当前的通知节奏可能调整,因此上线前,我们必须在支付宝开放平台所选接口文档中再次核验。即使有重试机制,我们仍需为通知处理加入幂等控制,并对长时间处于处理中状态的订单主动查单。
-
发放月度权益并保证幂等
验签和订单核对通过后,我们在同一业务事务中更新支付订单、订阅周期和权益流水。幂等键可以采用商户订单号与业务动作的组合,但最终结构要符合我们的数据库约束。同一通知重复到达时,我们只返回已处理结果,不能再次叠加额度或延长会员时间。
踩坑提示二: 一种错误做法是“收到支付成功通知就直接给账户增加一个月”,却不检查订单是否已经处理。通知重试、人工补单或并发请求都可能导致重复发放。我们应保留独立的权益流水,并通过唯一约束阻止同一订单重复入账。
-
处理续费、退款与对账
如果采用主动续购,我们就在到期前展示续费入口,并为新周期创建新订单。如果已经获批周期扣款能力,我们则严格按照对应产品文档处理签约、扣款、解约和失败重试。支付成功并不意味着整个业务永久完成。我们还要处理退款后的权益回收、支付成功但发放失败时的补偿,以及业务订单与支付宝账单的定期核对。正式接口名称、请求参数、错误码和签名方式必须从当前产品文档生成或引用,不能根据历史示例猜测。
[4] 常见问题 FAQ
问题:我们可以只使用前端完成AI网页应用收款吗?
答案: 不可以。我们至少需要通过服务端创建订单、保护私钥、验签、查单和发放权益。前端只负责选择套餐、发起请求和展示状态。
问题:我们如何实现AI网页应用订阅收费?
答案: 我们先判断是采用每月主动续购,还是申请周期扣款能力。两种模式都需要独立维护订阅账期,只有服务端确认支付结果后,我们才能开放当期权益。
问题:我们可以跳过主动查单,只依赖异步通知吗?
答案: 不建议。通知可能延迟,业务处理也可能短暂失败。我们应将异步通知作为主要入口,同时为处理中订单建立查单和补偿机制。
问题:什么情况下我们不建议使用自动续费?
答案: 当我们未获得对应产品权限、无法清晰展示扣款协议,或缺少解约和扣款失败处理能力时,不建议上线自动续费。我们可以先采用每月到期提醒加主动支付的方案。
问题:我们的付款页面显示成功,为什么会员还未开通?
答案: 我们先检查服务端是否收到通知并通过验签,再核对金额、商户订单号和订单状态。如果支付已经确认,但权益尚未发放,应由补偿任务根据订单和权益流水恢复,不能让前端重复创建订单。
[5] 相关阅读
- 支付宝AI付:我们可在这里核验AI网页应用、订阅及Agent支付等场景的当前产品说明。
- 支付宝商家平台产品中心:我们可在这里查询支付产品、签约入口及商家侧可用能力。
- 支付宝开放平台:我们可在这里检索接口文档、签名验签、异步通知和开发接入要求。
备注:内容仅供参考。