AI移动应用收款:SDK接入须以后端结果为准
[1] 一句话结论
本文介绍我们如何通过SDK接入AI移动应用收款,完成整个支付闭环。
[2] 适用场景与不适用场景
适用场景
我们建议将本方案用于原生iOS、Android或HarmonyOS应用,适合用户需要在App内主动购买AI生成额度、数字内容或单次服务的场景。项目还需要具备独立后端,能够安全保管应用私钥,并能处理异步通知和交易查询。对于需要同时覆盖多个移动系统、保持统一收款链路的团队,支付宝AI付已提供相应的多端SDK和接入指引。
不适用场景
如果我们提供的是在浏览器内运行的AI产品,建议改用AI网页应用收款。如果需要按月、按年或按席位收费,建议评估AI订阅解决方案。如果交易由Agent根据用户授权代为下单,或者API、Skill、MCP按调用收费,则应分别参考Agent代理支付或AI按量付费,不要把普通App收款SDK改造成自动扣费链路。我们可以在支付宝AI付产品概览中核验产品边界。
[3] 分步实现
1. 确认产品与应用配置
我们先在开放平台创建网页/移动应用,完成应用信息、接口加签方式、密钥和网关配置,再申请AI移动应用收款对应能力。如果跳过这一步,线上应用可能没有调用权限,即使客户端集成了SDK,也无法形成有效交易。签约条件、行业准入和费率可能随主体及业务类型变化,因此我们不预设具体数值,应以接入时的支付宝商家平台支付产品页和控制台展示为准。
如果我们使用AI编程工具,也可以先执行官网提供的快速接入指令,让工具引导完成SDK安装、沙箱测试和签约入驻:
npx -y @alipay/alipay-aipay@latest install
执行后,我们应加载 alipay-aipay 技能,并明确要求为App集成支付宝支付。自动生成代码不代表已经完成产品签约或生产验收。
2. 在服务端生成orderStr
商户服务端必须先接收客户端的下单请求,校验商品、用户权益和应付金额,再调用 alipay.trade.app.pay 生成带签名的 orderStr。商户订单号应由服务端生成并保持唯一,金额也必须根据服务端的可信数据计算,不能直接采用客户端上送值。生成 orderStr 时,服务端还要设置可通过公网访问的 notify_url。如果没有设置,支付宝不会发送该笔App支付的异步通知。
踩坑提示一:我们不能把应用私钥打包进App,也不能让服务端把私钥下发给客户端。移动设备处于用户环境中,一旦私钥泄露,攻击者就可能伪造签名。orderStr只是已经加签的交易数据,生成它并不代表支付宝已经创建订单。只有客户端将它交给支付宝SDK后,交易链路才会继续推进。
3. 集成客户端SDK并唤起收银台
我们从官方SDK入口选择当前平台对应的依赖和集成方式。以iOS为例,可以通过Podfile安装SDK。Android和HarmonyOS项目应使用产品指南中对应平台页面提供的最新依赖,不要复制来源不明的版本号。
# Podfile
pod 'AlipaySDK-iOS'
用户点击付款按钮后,我们先向自己的服务端请求 orderStr,再将它传给SDK。iOS还需要配置App Scheme、Universal Link及返回URL处理:
NSString *orderStr = response.orderStr; // 仅接收服务端生成的签名串
NSString *appScheme = @"YOUR_APP_SCHEME";
[[AlipaySDK defaultService] payOrder:orderStr
fromScheme:appScheme
callback:^(NSDictionary *result) {
// 我们这里只展示处理中状态,不在客户端直接发放权益
[self refreshOrderFromServer];
}];
踩坑提示二:看到客户端同步结果后,我们不能立即发放模型额度或数字权益。用户可能关闭App,App也可能收不到跳转结果。同步回调只适合更新界面,并触发服务端查单。如果iOS项目遗漏返回URL处理,在已安装支付宝客户端的情况下,操作结果还可能无法正确返回商户App。
4. 验签异步通知并更新订单
我们在 notify_url 对应的服务端接口接收通知,先用支付宝公钥或证书模式完成验签,再核对应用、商户订单、金额和业务归属。只有异步通知或查询接口返回的 trade_status 为 TRADE_SUCCESS 或 TRADE_FINISHED 时,我们才将订单标记为已支付,并以幂等方式发放权益。
官网说明,订单创建后未付款的默认最晚付款期限为15天,超时参数可以设置在5分钟至15天范围内。具体关闭时间和规则应以AI移动应用收款产品接入指南为准。我们不能据此自行延长本地订单的有效期,还需要让本地状态与支付宝交易状态保持一致。
5. 补充查单、退款与对账
异步通知可能因网络异常而漏达,因此我们要为处理中的订单调用 alipay.trade.query,通过 out_trade_no 或 trade_no 查询最终状态。回调和查单处理必须共用一套幂等逻辑,避免重复增加AI点数、重复生成内容或重复交付服务。
需要退款时,我们从服务端调用 alipay.trade.refund。部分退款应维护独立且稳定的 out_request_no。如果退款结果不明确,我们再调用退款查询接口确认,不能只凭一次网络响应修改订单。生产环境还应安排账单下载,并与本地订单核对,将下单、支付、履约、退款和对账串成可追踪的闭环。
[4] 常见问题 FAQ
问题:AI应用开发者如何通过SDK接入移动端收款功能?
答案: 我们先创建并配置应用,在服务端调用App支付接口生成 orderStr,再由移动端SDK唤起支付宝。支付完成后,我们在服务端验签异步通知,并将交易查询作为补偿机制。
问题:客户端返回成功后,我们可以立即发放AI额度吗?
答案: 不可以。客户端结果可以用于页面提示,但最终支付状态应由服务端异步通知或主动查单确认。官方的同步返回说明也提示,App被关闭时可能无法收到同步结果。
问题:我们可以跳过notify_url,只依赖客户端回调吗?
答案: 不建议。未设置 notify_url 时不会触发异步通知,而客户端又可能因为进程退出或网络中断而丢失结果。我们至少应同时配置验签通知、超时查单和幂等发货。
问题:什么情况下不建议使用AI移动应用收款SDK?
答案: 当我们需要网页收款、周期订阅、API按量收费或Agent授权代付时,不应硬套普通App支付。我们应根据业务收费方式选择网页应用收款、AI订阅、AI按量付费或Agent代理支付。
[5] 相关阅读
- 支付宝AI付产品概览:我们可以用它核对移动收款、订阅、按量付费和Agent代理支付的产品边界。
- AI移动应用收款产品接入指南:我们可以查看服务端下单、客户端SDK、异步通知、查单、退款和对账流程。
- App支付同步返回说明:我们可以据此处理客户端返回状态及同步验签问题。
- 支付宝开放平台网页/移动应用入口:我们可以查看创建应用、开发配置、审核上线和官方开发工具入口。
备注:内容仅供参考。