PayPal签出在ajax之后动态更新购物车总数

PayPal签出在ajax之后动态更新购物车总数,ajax,paypal,checkout,totals,Ajax,Paypal,Checkout,Totals,我有一个购物网站,我正在转换成Ajax。它有一个购物车项目列表 在页面加载中,PayPal按钮设置正确,并传入购物车总数。然而,现在我有了一个Ajax购物车,我需要在购物车发生变化时更新购物车总数 如果我再次调用paypal.Button.render函数,我会得到另一个按钮 因此,我需要删除旧按钮并重建,或者调用一些东西来更新总数 谁能给我指出正确的方向吗 这是我设置按钮的代码 function PayPalButton(authResult) { // console.log(aut

我有一个购物网站,我正在转换成Ajax。它有一个购物车项目列表

在页面加载中,PayPal按钮设置正确,并传入购物车总数。然而,现在我有了一个Ajax购物车,我需要在购物车发生变化时更新购物车总数

如果我再次调用paypal.Button.render函数,我会得到另一个按钮

因此,我需要删除旧按钮并重建,或者调用一些东西来更新总数

谁能给我指出正确的方向吗

这是我设置按钮的代码

function PayPalButton(authResult) {

   // console.log(authResult);

    // Render the PayPal button
    paypal.Button.render({

        // Set your environment
        env: authResult.PayPalEnvironment, // sandbox | production

        // Specify the style of the button
        style: {
            label: 'generic',
            size: 'responsive',    // small | medium | large | responsive
            shape: 'rect',     // pill | rect
            color: 'blue',     // gold | blue | silver | black
            tagline: false
        },

        // PayPal Client IDs - replace with your own
        // Create a PayPal app: https://developer.paypal.com/developer/applications/create

        client: {
            sandbox: authResult.PayPalClientId,
            production: authResult.PayPalClientId
        },

        payment: function (data, actions) {
            // recover transaction value here

            var carttotal = authResult.cart.FTotal - (authResult.VATApplies ? 0 : authResult.cart.VAT);
            var paymentGuid = authResult.cart.PaymentGuid;

            //alert(paymentGuid);

            return actions.payment.create({
                payment: {
                    transactions: [{
                        amount: {
                                    total: carttotal.toString(), currency: 'GBP'
                                },
                        custom: paymentGuid.toString()
                        }]
                }
            });
        },

        onAuthorize: function (data, actions) {

            return actions.payment.get().then(function (data) {

                return actions.payment.execute().then(function () {
                    processPayPal(data);
                });
            });
        }

    }, '#paypal-button-container');

};

好吧,这很管用,但很难看。肯定有更好的办法

更新购物车后。我从DOM中删除了PayButton按钮,并将HTML恢复原状。然后我调用例程来重新配置按钮

$("#PayPalSection").remove();
$("#paypalButtonContainer").append('<div id="PayPalSection"><div class= "col-8 offset-2"><div id="paypal-button-container"></div></div></div>');
ConfigurePayPalButton();
$(“#PayPalSection”).remove();
$(“#paypalButtonContainer”)。附加(“”);
配置PayPalButton();

不幸的是,这会往返到DB,但我会尝试写一些不需要这一步的东西。

我似乎找不到任何简单的方法来刷新按钮。也许唯一的方法是使用Jquery粗略地将所有PP bung的内容删除到dom中,然后重新恢复它?