【发布时间】:2019-07-31 01:13:11
【问题描述】:
我的后端成功验证了商家并返回了一个会话,但是当我在浏览器上完成验证时,它立即取消了交易。 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 托盘,然后说“付款未完成”并很快隐藏托盘。救命!
更新:查看文档,似乎startSession(由onvalidatemerchant 返回的内容正在逐步淘汰,因此我尝试将其替换为paymentSession(例如@ 987654333@); 但我仍然得到相同的响应和行为。
【问题讨论】:
-
您解决了吗?
-
不,我没有:(
标签: applepay applepayjs