与 Stripe 合作,我实现了他们的 3D 安全身份验证流程 -
https://docs.stripe.com/ payments/3d-secure/authentication-flow#handle-redirect
我遇到的问题特别是在 iPhone 上完成 3d 安全 iframe 后处理重定向,文档提到使用 iframe 中的
window.top.postMessage
来提醒父级 iframe 已完成,代码示例 -
家长-
window.addEventListener('message', function(ev) {
if (ev.data === '3DS-authentication-complete') {
on3DSComplete();
}
}, false);
iframe -
window.top.postMessage('3DS-authentication-complete');
总体而言,该解决方案有效,但似乎在过去的几天里,我们的许多 iPhone 客户都在中途崩溃了,在调试问题时,我们发现消息事件侦听器在我们手动触发的事件之前接收到了大约 90k 个事件上面的代码示例。 如此大量的请求会导致浏览器失败并有时刷新页面。 与 Android/Desktop 相比,在我们之前只有大约 2-3 个事件。
我不确定过去几天 iPhone 是什么原因导致触发大量消息事件,我们尝试重构它以使用 customevents/hashchange,但这些解决方案都不适用于跨域请求(如 iframe与父代不是同源)。
还有其他人遇到过这个问题吗?有什么解决方法吗?
谢谢
您是否收到了 90k 个相同的“3DS 验证完成”事件?这听起来确实是一个奇怪的问题,但我从未遇到过。我建议您联系Stripe 支持,并提供详细的复制步骤。