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 后显示付款未完成错误

在 Apple Pay 流程之后,支付令牌变得未定义

银联 Apple Pay 支付集成

apple pay 集成

你好,微信支付 失败 错误信息 当前页面的URL未注册 帮解决下

iOS App集成Apple Pay教程(附示例代码)