为什么Apple支付表单会两次弹出?Flutter IAP相关问题咨询
问题描述
我在90%的场景下都会遇到这个问题:
- 用户点击应用内的CTA按钮
- Apple支付按钮展示
- 用户完成订阅操作
- 此时看起来所有流程都运行正常
- 控制台无任何报错,也没有相关报错报告——没有任何异常提示
- 随后Apple支付按钮会再次弹出
- 如果我第二次不输入密码、不完成订阅操作,那么本次IAP就会失败。
我使用的是Flutter IAP插件flutter_inapp_purchase,也已经在对应仓库提交了Issue,但目前还没有人处理。
我想了解除了Flutter插件的问题外,这是否是近期很多用户都遇到的iOS系统层面的问题?
回答
该IAP订阅完成后重复弹出支付窗口的问题,不属于近期iOS系统的普遍故障,绝大多数同类问题都是交易队列处理逻辑异常导致的,可按照以下优先级排查:
- 首先校验业务流程中是否在交易闭环后正确调用
finishTransaction方法。苹果StoreKit的设计逻辑是,只要交易没有被手动标记为完成,就会在后续IAP服务唤醒时重试交付,进而重复弹出支付窗口,这是苹果用来避免漏单的默认机制,和系统版本无关。 - 检查是否存在重复注册IAP监听器的问题。如果多次添加交易回调监听,同一个成功交易可能会被多次触发处理逻辑,若处理逻辑中包含发起新支付的代码,就会导致二次弹窗。
- 确认使用的flutter_inapp_purchase插件版本,该插件的2.0.0~2.1.0版本存在已知的交易回调漏发、
finishTransaction调用不生效的问题,可尝试升级到最新稳定版验证,也可替换为官方维护的in_app_purchase插件做兼容性测试。
内容的提问来源于stack exchange,提问作者Tomas Baran
相关产品推荐
相关产品推荐

