Web应用集成Stripe后部分iOS15.7设备Apple Pay‘双击支付’按钮不显示
iOS15.7设备Stripe Apple Pay“双击支付”按钮不显示的排查方案
设备端设置检查
- 确认设备已绑定有效且支持当前交易币种/地区的银行卡,可在「设置-钱包与Apple Pay」中核实卡片状态
- 检查「设置-钱包与Apple Pay」里的「双击侧边按钮支付」功能是否开启
- 关闭设备的「专注模式」或其他可能限制支付交互的系统设置
Stripe配置与代码调整
验证PaymentRequest参数正确性
- 确保创建PaymentRequest时,
country和currency参数与用户卡片的发行地区/币种完全匹配,iOS15.7对地区适配要求严格 - 检查
total对象的label和amount设置:amount必须为最小货币单位的整数(例如美元传100代表$1.00),不能使用小数或格式错误的数值
优化支付确认逻辑
iOS15.7对支付流程的时序要求与新版本iOS不同,可调整代码中ev.complete()的调用时机:
paymentRequest.on('paymentmethod', function(ev) { stripe.confirmCardPayment( clientSecret, {payment_method: ev.paymentMethod.id} // 移除{handleActions: false},让Stripe默认处理后续动作 ).then(function(confirmResult) { if (confirmResult.error) { ev.complete('fail'); // 错误处理逻辑 } else { if (confirmResult.paymentIntent.status === "requires_action") { stripe.confirmCardPayment(clientSecret).then(function(result) { if (result.error) { ev.complete('fail'); } else { ev.complete('success'); // 支付成功后续逻辑 } }); } else { ev.complete('success'); // 支付成功后续逻辑 } } }); });
- 移除
{handleActions: false}参数,避免手动干预导致的流程中断,让Stripe SDK自动处理支付动作
升级Stripe.js版本
确保使用最新稳定版的Stripe.js,旧版本可能存在iOS15.7的兼容性bug,可通过替换CDN链接或包管理工具更新
调试与日志排查
- 在问题设备上开启Safari开发者工具,查看控制台是否有Stripe初始化或支付请求相关的错误信息
- 登录Stripe Dashboard查看事件日志,定位这些设备发起的支付请求状态,确认是否存在未触发的流程节点
内容的提问来源于stack exchange,提问作者Imtiaz Ali
相关产品推荐
相关产品推荐

