Apple Pay completeMerchantValidation取消会话

问题描述 投票:2回答:1

我的后端成功验证了商家并返回了会话,但是当我在浏览器上完成验证时,它立即取消了交易。 Apple Dev论坛上也有一些类似的投诉,但似乎都没有得到解决。我希望你们能提供帮助!

ApplePaymentSession对象中所有事件处理程序]中的所有对象,仅调用onvalidatemerchant,然后只要具有有效会话对象的completeMerchantValidation(请参见下面的有效负载),就会触发oncancel

会话配置(在浏览器上)

const session = new ApplePaySession(3, {
  currencyCode: 'GBP',
  countryCode: 'GB',
  merchantCapabilities: [ 'supports3DS' ],
  supportedNetworks: ['visa', 'masterCard', 'amex', 'discover' ],
  total: {
    type: 'final',
    label: 'My Product',
    amount: 9.99,
  },       
});

请求(在后端)

{
  merchantIdentifier: 'merchant.MY.FQDN',
  displayName: 'My Company Name',
  initiative: 'web',
  initiativeContext: 'MY.VERIFIED.FQDN',
}

响应(从Apple到后端,然后发送到completeMerchantValidation

{
  "epochTimestamp": 1552090296444,
  "expiresAt": 1552093896444,
  "merchantSessionIdentifier": "LONG_STRING",
  "nonce": "XXXX",
  "merchantIdentifier": "SAME_AS_IN_MY_MERCHANT_ID_CERT",
  "domainName": "MY.VERIFIED.FQDN",
  "signature": "XXXXXX-VERY-LONG-STRING-XXXXX"
}

我肯定会将响应作为JSON对象而不是字符串发送到completeMerchantValidation中,例如:

console.log('session is a', typeof(result), result); // says: object
session.completeMerchantValidation(result);

域名的全部来源(并托管在Firebase上)均已通过此商户ID进行了验证,后端或浏览器控制台中都没有出现任何错误,也没有引发异常,它只显示了Apple Pay托盘,然后说“付款未完成”,并很快隐藏了托盘。帮助!

UPDATE:

查看文档,看来startSession(由onvalidatemerchant返回)正在逐步淘汰,因此我尝试将其替换为paymentSession(例如https://apple-pay-gateway-nc-pod5.apple.com/paymentservices/paymentSession);但我仍然得到相同的响应和行为。

我的后端成功验证了商家并返回了会话,但是当我在浏览器上完成验证时,它立即取消了交易。有一些类似的投诉...

applepay applepayjs
1个回答
0
投票

此解决方案可能对您有用,也可能对您不起作用,但是我遇到了同样的问题,因为一旦调用session.completeMerchantValidation(),该会话就被取消了。

© www.soinside.com 2019 - 2024. All rights reserved.