iOS原生Apple Pay Token支付流程是否存在30秒超时限制?
Apple Pay Token支付流程的超时问题解答
嘿,针对你遇到的这个问题,我刚好有相关经验,给你明确说下:
- 确实存在超时时间,而且默认就是30秒。这是Apple在
PKPaymentAuthorizationViewController的支付授权流程里设定的系统级限制。
具体来说,当你通过Touch ID授权拿到支付令牌,把令牌发给支付服务商后,Apple Pay的表单会进入等待状态——它在等你调用授权回调里的完成handler(比如paymentAuthorizationViewController(_:didAuthorizePayment:handler:)中的PKPaymentAuthorizationHandler),来告知支付结果是成功、失败还是其他状态。如果超过30秒你都没触发这个回调,系统就会自动判定流程超时,弹出错误对话框。
如果你的服务器处理逻辑确实可能超过30秒,给你个可行的解决方案:
- 在拿到令牌并发起服务器请求的同时,先调用
handler(.deferred),这样Apple Pay界面会保持“processing”状态,不会触发超时机制; - 等服务器处理完成后,再调用
PKPaymentAuthorizationViewController的finishAuthorization(_:)方法,传入最终的支付结果(成功/失败),结束整个流程。
要注意的是,这个30秒的超时阈值是系统固定的,开发者没办法直接修改,只能通过上述延迟回调的方式来规避超时问题。
内容的提问来源于stack exchange,提问作者user9449050
相关产品推荐
相关产品推荐

