ApplePayJS 无效访问错误

ApplePayJS InvalidAccessError

尝试将 ApplePayJS 集成到我的网站并收到这条烦人的消息::

InvalidAccessError Code 15

"The object does not support the operation or argument"

一切似乎都进行得很顺利,但现在什么都不管用了。

如果您遇到此错误,根据我的经验,Safari 现在对 ApplePayJS 无效,您必须先强制​​退出并重新打开它。

如果您将字符串而不是对象传递到 completeMerchantValidation.

,ApplePay API 就会完全崩溃

如果您从您的服务器 return 得到的不是 JSON 对象,而是一个字符串,那么您可以这样做:

session.completeMerchantValidation(JSON.parse(merchantSession));

或者更好 - 将您的服务器修复为 return 一个 JSON 对象而不是字符串。


4年后更新:

今天我又看到了一个真正的客户,而不是在我自己的测试中。在这种情况下,订单已成功,但客户认为订单失败,因此尝试再次执行该过程。

奇怪的是,这次调用出现了同样的错误“该对象不支持该操作或参数。”

applePayTokenize.session.completePayment(ApplePaySession.STATUS_SUCCESS);

由于付款成功,我更改了我的逻辑以忽略异常(仅限 STATUS_SUCCESS)并继续到最后一页。我什至不知道 ApplePay sheet 是否仍然开放,但即使它至少在取消时也会出现在收据页面上。

我也遇到过这个问题,但原因不同

您在会话中的域名需要与您浏览器的域名相同。您在 initiativeContext

中在后端设置域名

https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/requesting_an_apple_pay_payment_session