我正在将Apple Pay应用于我们的网站。我没有macOS设备,正在使用Windows Visual Studio / Mvcnet。我已经完成了所有商人ID和认证工作,并在Windows计算机上对其进行了配置。我正在使用Apple Pay JS,并在使用session.begin()打开付款表的步骤上。我使用ajax调用来检索mercerSession,我相信它会成功完成,因为session.completeMerchantValidation(merchantSession)使用的对象包含一个纪元数,到期时间和站点名称。但是,在completeMerchantValidation之后,立即触发了oncancel事件,并且我收到一个红色警报,提示“付款未完成”。
我需要有关如何从此处进行操作的帮助,我在网上某个地方读到,我要测试的域必须是注册商人域。例如,当我测试按钮的功能时,我需要在www.mySite.com上,在那里我已将mySite.com注册为域。有人可以确认这是否正确..因为我正在通过本地IP地址从我的iOS设备访问该网站。如果那不是真的,那么从我所在的地方获得的任何帮助都会有所帮助。
function StartPaySession() {
var lineItems = [
{
label: 'Shipping',
amount: '0.00',
}
];
var shippingMethods = [
{
label: 'Free Shipping',
amount: '0.00',
identifier: 'free',
detail: 'Delivers in five business days',
},
{
label: 'Express Shipping',
amount: '5.00',
identifier: 'express',
detail: 'Delivers in two business days',
}
];
var total = {
label: 'Apple Pay Example',
amount: '8.99',
};
var paymentData = {
countryCode: 'US',
currencyCode: 'USD',
shippingMethods: shippingMethods,
lineItems: lineItems,
total: total,
supportedNetworks: ['amex', 'discover', 'masterCard', 'visa'],
merchantCapabilities: ['supports3DS'],
requiredShippingContactFields: ['postalAddress', 'email'],
};
var paySession = new ApplePaySession(2, paymentData);
paySession.onvalidatemerchant = function (event) {
var validationData = { ValidationUrl: event.validationURL };
$.ajax({
url: '/orders/cart/startapplepaysession',
method: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(validationData)
}).then(function (merchantSession) {
paySession.completeMerchantValidation(merchantSession);
alert("end = " + window.location.host);
}, function (error) {
alert("merchant validation unsuccessful: " + JSON.stringify(error));
paySession.abort();
});
};
paySession.onpaymentmethodselected = function (event) {
alert("1");
paySession.completePaymentMethodSelection(total, lineItems);
};
paySession.onshippingcontactselected = function (event) {
alert("2");
paySession.completeShippingContactSelection(ApplePaySession.STATUS_SUCCESS, shippingMethods, total, lineItems);
};
paySession.onshippingmethodselected = function (event) {
alert("3");
paySession.completeShippingMethodSelection(ApplePaySession.STATUS_SUCCESS, total, lineItems);
}
paySession.onpaymentauthorized = function (event) {
var token = event.payment.token;
alert("payment authorization | token = " + token);
paySession.completePayment(ApplePaySession.STATUS_SUCCESS);
}
paySession.oncancel = function (event) {
alert("payment cancel error " + event);
}
paySession.begin();
};
答案 0 :(得分:0)
您在错误的位置创建了 Apple Pay会话。您需要从服务器端而不是 客户端创建它。
这些链接可能有助于requesting apple pay payment session,complete merchant validation
此处讨论了步骤:on validate merchant
答案 1 :(得分:0)
这是一个古老的问题,但是我认为我会在相关的情况下发表自己的经验。在我的本地服务器上进行测试时,我看到的行为与原始发布者所述的行为相同,但是能够使付款表交互正常工作。
对我有用的
在执行商家验证时将“ localhost”指定为域,例如:
{
"merchantIdentifier": "<your merchant ID>",
"displayName": "<your merchant display name>",
"initiative": "web",
"initiativeContext": "localhost"
}