簡體   English   中英

PayPal API 上下文結帳的錯誤

[英]Bug with PayPal API context checkout

我對 PayPal Express Checkout 集成有問題: https : //developer.paypal.com/docs/classic/express-checkout/in-context/javascript_advanced_settings/#color

如果我在彈出窗口完全加載之前關閉它,在我刷新之前,彈出窗口將不再顯示!

這確實發生在所有瀏覽器上。 Chrome 控制台上的錯誤是:

ppxo_paypal_legacy_gettoken_initxo Object
print @ logger.js:65

這是我的代碼:

window.paypalCheckoutReady = function() {
            paypal.checkout.setup("{$PayPal_in_context_checkout_merchant_id}", {
                environment: {if $PAYPAL_SANDBOX}"sandbox"{else}"production"{/if},
                click: function(event) {
                    event.preventDefault();

                    paypal.checkout.initXO();
                    updateFormDatas();
                    var str = '';
                    if($('.paypal_payment_form input[name="id_product"]').length > 0)
                        str += '&id_product='+$('.paypal_payment_form input[name="id_product"]').val();
                    if($('.paypal_payment_form input[name="quantity"]').length > 0)
                        str += '&quantity='+$('.paypal_payment_form input[name="quantity"]').val();
                    if($('.paypal_payment_form input[name="id_p_attr"]').length > 0)
                        str += '&id_p_attr='+$('.paypal_payment_form input[name="id_p_attr"]').val();

                    $.support.cors = true;
                    $.ajax({
                        url: "{$base_dir_ssl}modules/paypal/express_checkout/payment.php",
                        type: "GET",
                        data: '&ajax=1&onlytoken=1&express_checkout='+$('input[name="express_checkout"]').val()+'&current_shop_url='+$('input[name="current_shop_url"]').val()+'&bn='+$('input[name="bn"]').val()+str,   
                        async: true,
                        crossDomain: true,


                        success: function (token) {
                            var url = paypal.checkout.urlPrefix +token;

                            paypal.checkout.startFlow(url);
                        },
                        error: function (responseData, textStatus, errorThrown) {
                            alert("Error in ajax post"+responseData.statusText);

                            paypal.checkout.closeFlow();
                        }
                    });
                },

                buttons: [
  {
    container: 'paypal_process_payment',
    type: 'checkout',
    color: 'blue',
    size: 'small',
    shape: 'pill'
  },
  {
    container: 'payment_paypal_express_checkout',
    type: 'checkout',
    color: 'gold',
    size: 'small',
    shape: 'pill'
  }
]
            });
        };

我遇到了同樣的問題,

查看源代碼后,發現當paypal.checkout.initXO(); paypal.checkout.startFlow函數被包裹在一個函數中,這意味着你只能調用 startFlow 一次。 並且paypal.checkout.initXO被覆蓋以在控制台中顯示警告。

在內部, paypal.checkout.closeFlow有一個對paypal.checkout.reset的調用,這對於重置這些功能很重要。

問題發生在用戶過早點擊關閉按鈕時,startFlow 承諾沒有得到解決(這意味着當用戶關閉模式時,它將重定向到取消的 url),也沒有paypal.checkout.closeFlow catch 是'也沒有被擊中。

我能夠解決這個問題,通過跟蹤用戶點擊按鈕的次數,如果它不止一次,我在paypal.checkout.initXO();之前調用了paypal.checkout.closeFlow (它將重置paypal.checkout.initXO();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM