gpt4 book ai didi

javascript - iOS 13 Apple Pay 按钮点击抛出错误 : "Must create a new ApplePaySession from a user gesture handler."

转载 作者:行者123 更新时间:2023-11-30 10:59:55 38 4
gpt4 key购买 nike

在一个已与 Apple Pay 集成的网站上工作了大约一年,现在没有任何问题。我们注意到,我们现在仅针对 iOS 13 设备总是出现错误。 iOS 12 及以下版本均按预期工作。

前端点击处理程序:

<div class="btn btn-apple">
<div class="apple-pay-button apple-pay-button-white" lang="en" data-bind="click: intializeApplePaySession"></div>
</div>

JS 点击处理程序:

self.intializeApplePaySession = function() {
new RestClient(RestClient.POST, "/rest/model/someController", {},
//Success
function(data, textStatus, jqXHR) {

var session = new ApplePaySession(3,data.applePayPaymentRequest);
initializeCallbacks(session);
session.begin();
},
...

“必须从用户手势处理程序创建一个新的 ApplePaySession。”总是被扔在

var session = new ApplePaySession(3,data.applePayPaymentRequest);

适用于所有 iOS 13 设备。 iOS 12 及更低版本使用相同的代码可以正常工作。

从我的调试中我可以看到正在处理的事件是一个对我有意义的 MouseEvent。关于为什么抛出这个的任何想法?

最佳答案

我们正在逐步摆脱让网站在没有用户输入的情况下进行跨域调用的做法。

这已被锁定一段时间的方法之一是您无法触发,例如,表单的提交按钮......除非您从 click() 处理程序中执行。因此,您可以在页面上放置一个 Shiny 的“立即购买”大图片,然后通过单击该图片提交表单,但您不能只执行 setTimeout(form.submit(), 100)

我想你在这里也有同样的东西。 REST 调用在点击处理程序中,但 apple pay 调用在 REST 调用的回调中,因此并不真正在 click() 处理程序中。

当然,您正在使用 REST 调用来生成要传递给 Apple 的数据。您可能必须推测性地生成该数据。但在进行基础设施工作之前,我会试验一下您的点击处理程序的异步版本是否通过了他们的健全性检查。

关于javascript - iOS 13 Apple Pay 按钮点击抛出错误 : "Must create a new ApplePaySession from a user gesture handler.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242537/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com