在 WooCommerce PayPal Payments 处理交易时添加加载图标

Posted

技术标签:

【中文标题】在 WooCommerce PayPal Payments 处理交易时添加加载图标【英文标题】:Add loading icon while WooCommerce PayPal Payments process transaction 【发布时间】:2021-11-12 06:13:38 【问题描述】:

我最近开始使用新的WooCommerce PayPal Payments 插件。

我遇到的问题是客户选择信用卡处理(看起来像 Stripe 提供的)。人们输入他们的卡详细信息,然后单击“订购”。然后屏幕变白,大约 15 秒内没有任何反应。没有加载,只有 15 秒左右的静止屏幕。

对于许多(如果不是大多数)人来说,这个时间太多了,他们认为存在某种问题并尝试重新加载页面或离开它。

我正在努力寻找解决方案。最简单的方法是在信用卡表格下添加一条注释,例如“请不要在交易处理过程中刷新页面”,这对大多数人来说都是诀窍。我可以使用 Code Snippets 插件添加一些代码,但我不知道具体是哪个代码。

我确定我不是唯一遇到此问题的人,所以如果有人可以提供一些帮助,那就太好了。

【问题讨论】:

【参考方案1】:

我有类似的问题。我编写了自定义 jquery 插件并在 form.woocommerce-checkout 上跟踪更改的类

代码 jquery 插件

(function()
    // Your base, I'm in it!
    var originalAddClassMethod = jQuery.fn.addClass;
    
    var originalRemoveClassMethod = jQuery.fn.removeClass;

    jQuery.fn.addClass = function()
        // Execute the original method.
        var result = originalAddClassMethod.apply( this, arguments );

        // trigger a custom event
        jQuery(this).trigger('cssClassChanged');

        // return the original result
        return result;
    
    
    jQuery.fn.removeClass = function()
        // Execute the original method.
        var result = originalRemoveClassMethod.apply( this, arguments );

        // trigger a custom event
        jQuery(this).trigger('cssClassChanged');

        // return the original result
        return result;
    
)();

函数跟踪变化的form.woocommerce-checkout

jQuery(document).ready(function () 
    jQuery('form.woocommerce-checkout').bind('cssClassChanged', function() 

        if (jQuery(this).hasClass("processing")) 
            // stripe is processing
         else 
            // strpipe isn't processing
        
    );
); 

您需要将此代码添加到您的主题或插件中的 js 文件中

【讨论】:

以上是关于在 WooCommerce PayPal Payments 处理交易时添加加载图标的主要内容,如果未能解决你的问题,请参考以下文章

在 Woocommerce 的 Paypal 插件中转换运费

Woocommerce 和 PayPal 账单地址

在 WooCommerce 中使用 PayPal 时出错

如何在 Woocommerce 中动态更改 PayPal 地址?

在 Woocommerce 中仅向 PayPal 发送订单号而不是商品名称

在 WooCommerce 上获取 Paypal 付款详细信息