当前位置: 首页 > 知识库问答 >
问题:

条带结账-第二次付款时弹出窗口被阻止

米嘉禧
2023-03-14

O/S:BrowserStack Live

浏览器:IE11

Payment.prototype = {
    pay: function (options, callback) {
        let tokenTriggered = false;
        _handler = StripeCheckout.configure({
            key: Constants[Constants.ENV].STRIPE_KEY,
            image: 'image.jpg',
            locale: 'auto',
            token: function token(token) {
                tokenTriggered = true;
                const data = {
                    stripeToken: token.id,
                    stripeEmail: token.email,
                    amount: options.amount,
                    currency: CURRENCY,
                    capture: options.capture
                };
                $.ajax({
                    type: 'POST',
                    data: JSON.stringify(data),
                    contentType: 'application/json',
                    url: '/api/stripe',
                    success: function success(charge) {
                        callback(null, charge);
                    },
                    error: function error(error) {
                        callback(error.responseText);
                    }
                });
            },
            closed: function () {
                if (!tokenTriggered) {
                    // close button click behavior goes here
                    callback(1);
                }
            }
        });
    },
    open: function (amount, name, description) {
        // Open Checkout with further options:
        _handler.open({
            name: name,
            description: description,
            zipCode: true,
            currency: 'aud',
            amount: amount
        });
    }
};

**编辑:2017年3月7日**

此错误仅发生在以下情况:进行付款,导航到另一个页面,然后尝试另一个付款。

共有1个答案

鲁波光
2023-03-14

我解决了这个问题,只在站点加载时初始化一次StripeCheckout。然后,我将该功能从“stripecheckout.configure”移到“handler.open”函数中,并在需要支付时调用该函数

    init: function () {
        _handler = StripeCheckout.configure({
            key: Constants[Constants.ENV].STRIPE_KEY,
            image: 'image.jpg',
            locale: 'auto'
        });
    },
    open: function (options, callback) {
        let tokenTriggered = false;
        // Open Checkout with further options:
        _handler.open({
            name: 'An app',
            description: options.description,
            zipCode: true,
            currency: CURRENCY,
            amount: options.amount,
            token: function token(token) {
                tokenTriggered = true;
                const data = {
                    stripeToken: token.id,
                    stripeEmail: token.email,
                    amount: options.amount,
                    currency: CURRENCY,
                    capture: options.capture
                };
                $.ajax({
                    type: 'POST',
                    data: JSON.stringify(data),
                    contentType: 'application/json',
                    url: '/api/stripe',
                    success: function success(charge) {
                        // _instantiated = true;
                        callback(null, charge);
                    },
                    error: function error(error) {
                        callback(error.responseText);
                    }
                });
            },
            closed: function () {
                if (!tokenTriggered) {
                    // close button click behavior goes here
                    callback(1);
                }
            }
        });
    },
 类似资料:
  • 当我试图单击位于弹出菜单后面的按钮时,我收到以下错误消息。 此错误消息能够识别阻止我单击的内容的名称 我如何获得这个名称(作为一个元素),以便进行修改, 等待功能不适用,因为此弹出窗口不会消失。我试过网络驱动程序。ActionChains,但它不能解决这个问题

  • 我正在实施贝宝结账。 我有以下javascript代码paypal.button.render({ 弹出(上图)出现时,我点击贝宝按钮,我可以填写信用卡细节等,如图像。它在沙箱所以我使用测试卡号。当我单击“立即付款”按钮时,它会显示“正在处理”,并一遍又一遍地返回到相同的表单。我现在可以在控制台或回调中看到信息 I.W希望看到我的警报 onauthorize:函数(数据,操作){

  • 问题内容: 谷歌浏览器似乎阻止了我通过jQuery创建的弹出窗口。经过一番调查,在ajax调用成功的情况下,调用似乎是一个问题。有没有解决的办法?我的jQuery ajax调用返回要打开的URL。所以我有点卡住。 如果我将外部ajax调用置于外部,它将起作用;但是,在内部(即成功事件中)它被阻止。我认为这与上下文有关,但我不确定。 这是我所拥有的: 问题答案: 只需在成功回调中打开新窗口: 请注意

  • 问题内容: 我知道可以检测其他浏览器是否阻止了弹出窗口的javascript技术。这是基本测试: 但这在Chrome中不起作用。阻止弹出窗口时,永远不会到达“弹出窗口被阻止”部分。 当然,该测试在一定程度上是可行的,因为Chrome实际上并没有阻止弹出窗口,而是在右下角的最小化最小窗口中打开了该窗口,其中列出了“阻止的”弹出窗口。 我想做的就是能够确定弹出窗口是否被Chrome的弹出窗口阻止程序阻

  • 我需要在贝宝中使用部分支付,但我不知道如何在PHP中使用贝宝部分支付。在没有信用卡的情况下使用贝宝账户授权和捕获金额的过程是什么。 例如,如果我在结账时授权1000美元,第一次发货时捕获500美元,第二次发货时捕获500美元。