Apple Pay,支付未完成 Web JS
Posted
技术标签:
【中文标题】Apple Pay,支付未完成 Web JS【英文标题】:Apple Pay, Payment Not Complete Web JS 【发布时间】:2021-09-09 06:21:29 【问题描述】:我已经关注了苹果网站上关于苹果支付的文档。
onValidateMerchant 和 completeMerchantValidation 可以完美运行,但之后会跳转到 oncancel。
我有消息在 onpaymentselected 和 onpaymentauthorized 内打印到屏幕上,但从未打印。
我添加了一个 try catch 来捕捉任何弹出的错误,结果是 onpaymentselect 和 onpaymentauthorized 在 onValidateMerchant 和 completeMerchantValidation 之前运行。
applePayButton.addEventListener("click", function()
const request =
countryCode: 'US',
currencyCode: 'USD',
merchantCapabilities: [
'supports3DS'
],
supportedNetworks: [
'visa',
'masterCard',
'amex',
'discover'
],
lineItems: [
label: 'Amount',
amount: 0.95,
,
label: 'Tax',
amount: 0.05,
],
total:
label: 'Total',
amount: 10,
;
var session = new ApplePaySession(10, request);
session.begin();
try
session.onvalidatemerchant = function(event)
printMessage("starting session.onvalidatemerchant" + JSON.stringify(event));
var promise = performValidation(event.validationURL);
promise.then(function(merchantSession)
printMessage("Merchant Session: "+ JSON.stringify(merchantSession));
session.completeMerchantValidation(merchantSession);
);
catch(error)
printMessage("On Validate Merchant Error: " + error)
try
printMessage("onpaymentmethodselected");
session.onpaymentmethodselected = function(event)
printMessage("In On Payment Method Selected");
//var myPaymentMethod = event.paymentMethod;
const update = ;
session.completePaymentMethodSelection(update);
;
catch(error)
printMessage("On Payment Method Selected Error: " + error)
try
printMessage("onpaymentauthorized");
session.onpaymentauthorized = function(event)
printMessage("starting session.onpaymentauthorized");
var applePaymentToken = event.payment.token;
printMessage("Token" + applePaymentToken);
// Define ApplePayPaymentAuthorizationResult
session.completePayment(session.STATUS_SUCCESS);
;
catch(error)
printMessage("On Payment Authorized Error: " + error)
try
session.oncancel = function(event)
printMessage("starting session.oncancel" + JSON.stringify(event));
// Payment cancelled by WebKit
;
catch(error)
printMessage("On Cancel Error: " + error)
);
这是付款未完成后的消息
会话: 第 1 步:applePay 工作
第 2 步:选择付款方式
第3步:onpaymentauthorized
第 4 步:启动 session.onvalidatemerchant"isTrusted":true
第 5 步:完成商家验证:
第 6 步:启动 session.oncancel"isTrusted":true
【问题讨论】:
【参考方案1】:我遇到了同样的问题,似乎当onvalidatemerchant
因"isTrusted":true
而失败时是因为:
fingerprint
,或者
您没有使用Safari
,或者
您在后端对validate
的调用有误
如果这些部分正常工作,那么您应该会看到 Apple Pay 模式并且应该能够让一切正常工作(希望如此)
【讨论】:
以上是关于Apple Pay,支付未完成 Web JS的主要内容,如果未能解决你的问题,请参考以下文章
Braintree Apple Sandbox Pay 扫描指纹 iOS 后显示付款未完成错误