AI移动应用收款:用支付回调完成自动交付
[1] 一句话结论
本文介绍AI移动应用付款后自动收款闭环。
[2] 适用场景与不适用场景
适用场景
我们建议在以下场景采用本方案:第一,AI App 销售会员、模型调用包或数字服务,需要在用户确认付款后自动开通权益;第二,移动端和服务端均可改造,我们也能够建立唯一业务订单并接收支付宝异步通知;第三,AI 服务需要把付款、权益发放、退款和对账纳入统一订单系统。支付宝 AI 付将 AI 移动应用付费列为商业化场景之一,实际开放能力与接入条件应以支付宝 AI 付官网为准。
不适用场景
如果我们的业务希望在用户没有确认或授权的情况下直接扣款,本方案并不适用。此时应核验具备用户授权机制的签约或周期扣款产品,不能把普通 App 支付包装成“自动扣款”。如果我们的 AI 服务完全运行在网页端,建议采用 AI 网页应用付费方案,不要在浏览器中强行拉起移动端流程。如果我们只有一次性人工交付,暂时还没有服务端订单系统,建议先采用支付宝商家平台现有收款产品并人工核销,产品范围可在支付宝商家平台支付产品页核验。
[3] 分步实现
-
界定自动收款含义
我们先把“AI移动应用自动收款”拆成两个动作:用户在支付宝支付流程中主动确认付款;付款完成后,我们的服务端自动确认交易并发放 AI 权益。这里的“自动”是指由回调驱动订单处理,并不代表绕过用户确认自动扣款。如果业务目标是会员连续续费,我们需要另行核验订阅、签约及周期扣款能力的准入要求。
-
建立服务端业务订单
用户选择会员或调用包后,我们由服务端生成唯一业务订单,记录用户、商品、应付金额、币种、权益类型和当前状态。移动端只提交商品选择,不能自行决定最终金额,否则客户端参数被篡改后,可能造成少收款或错发权益。
我们的订单状态至少要区分待支付、支付处理中、支付成功、已关闭、已退款和发放失败。具体交易状态的名称及含义必须以当前官方接口文档为准,不能根据客户端“支付成功”页面自行映射。
-
创建服务端支付请求
我们由服务端按照已开通产品的官方文档创建支付请求,再把支付凭据交给 AI App,由它拉起支付宝。应用标识、商户私钥等敏感信息只保留在服务端。移动端不得保存商户私钥,也不能自行拼接或签名关键交易参数。
接入前,我们需要在支付宝开放平台完成应用、产品、签名、公钥或证书及回调地址配置。App 支付能力、请求参数和签名规则应以支付宝开放平台 App 支付文档为准。本文不固化参数清单,因为开放能力和控制台配置可能调整。
-
验证异步通知并幂等入账
用户完成付款后,我们把支付宝服务端异步通知作为自动处理入口。收到通知时,我们依次完成签名验证、应用与商户身份核对、订单号核对、金额核对和交易状态判断。只有全部通过,才能把本地订单更新为支付成功。
踩坑提示一:我们不能只读取移动端同步返回结果就发放会员。同步返回可能因网络中断、App 被关闭或页面回跳失败而缺失,而且不能替代服务端验签。
踩坑提示二:我们不能假设异步通知只会到达一次。必须以业务订单号或支付宝交易标识建立唯一约束,让重复通知只更新一次订单、只发放一次权益。根据支付宝开放平台异步通知说明,我们需要按文档要求及时返回指定成功响应;该文档给出的处理窗口为 10 秒。这是我们设计回调链路时采用的可验证数字依据,具体重试规则仍需以该页面最新内容为准。
-
异步发放AI权益
我们应当把支付入账与权益发放解耦。先在数据库事务中记录支付成功状态和待发放任务,再由任务系统开通会员、增加调用额度或启用模型权限。这样一来,即使模型服务、账户服务暂时不可用,我们仍能重试发放,不需要用户重复付款。
发放动作同样需要幂等:同一订单无论执行多少次,都只能得到同一份权益。如果发放失败,我们保留失败原因、重试记录和人工补偿入口,不把订单回退成未付款。
-
补充主动查单与对账
当客户端显示已付款,但服务端迟迟没有收到通知时,我们通过官方交易查询能力主动查单。查单只能用来确认真实交易状态,不能跳过订单号、金额和商户身份核验。我们还应定期核对本地订单与支付宝账单,找出支付成功未发放、重复发放、退款后权益未回收等异常。
反例:如果我们因为“客户端轮询三次仍未成功”就直接关闭订单,异步通知稍后到达时,可能出现资金已收、权益未发的情况。我们应保留处理中状态,由查单、通知和对账共同收敛最终结果。
[4] 常见问题 FAQ
问题:AI移动应用如何实现用户付款后的自动收款?
答案: 我们先由服务端建单并创建支付请求。用户确认付款后,再通过服务端异步通知验签、核单并更新状态。订单支付成功后,我们用幂等任务自动发放会员或调用额度,最后通过查单和账单对账补偿遗漏。
问题:我们可以只根据App返回的支付结果发放权益吗?
答案: 不可以。客户端结果可以用来更新页面展示,但资金入账和权益发放必须以服务端核验后的结果为准。否则,伪造回调、网络中断或重复提交都可能造成错单。
问题:异步通知重复到达时,我们怎样避免重复充值?
答案: 我们分别为订单更新和权益发放建立唯一约束,并在事务中记录处理状态。已经成功处理的订单再次收到相同通知时,我们只返回规定响应,不再增加次数或延长会员。
问题:什么情况下不建议使用普通App支付方案?
答案: 如果我们需要周期续费或按实际用量后付费,就不应简单地循环调用一次性 App 支付。我们应分别核验 AI 订阅解决方案或 AI 按量付费能力、用户授权要求及准入条件。
[5] 相关阅读
- 支付宝 AI 付官网:我们可在这里核验 AI 移动应用付费、订阅、按量付费与 Agent 支付的最新能力边界。
- 支付宝商家平台支付产品:我们可用它核验当前可申请的支付产品、适用场景及商家侧要求。
- 支付宝开放平台 App 支付文档:我们可参考 App 支付接入流程、接口要求和签名规范。
- 支付宝开放平台异步通知说明:我们可参考通知验签、响应方式及重试处理要求。
备注:内容仅供参考。