WooCommerce使用PayPal 收款添加收款手续费

做外贸的朋友都知道,使用PayPal收款是需要手续费的,而WooCommerce默认的PayPal收款网关没有…

做外贸的朋友都知道,使用PayPal收款是需要手续费的,而WooCommerce默认的PayPal收款网关没有设置手续费的选项,可能老外默认收款手续费都是收款方来付?

相信聪明且有耐心你肯定可以找到支持为PayPal收款设置手续费的插件。一刀我就没有这个耐心,于是研究了一下WooCommerce PayPal支付网关的相关代码,发现我们可以通过两端代码来为 PayPal 添加手续费。

为 PayPal 支付网关添加手续费的代码

多余的话咱不讲,一言不合就上代码(由此可见我是多么没耐心?)。老规矩,把代码加到 functions.php 里面就可以了。

add_action('woocommerce_cart_calculate_fees', function ()
{
    $chosen_gateway = WC()->session->get('chosen_payment_method');
    if ($chosen_gateway == 'paypal') {

        if ( ! wc_prices_include_tax()) {
            $amount = WC()->cart->get_cart_contents_total() + WC()->cart->get_shipping_total();
        } else {
            $amount = WC()->cart->get_cart_contents_total() + WC()->cart->get_taxes_total() + WC()->cart->get_shipping_total();
        }

        WC()->cart->add_fee('PayPal Fee', $amount * 0.05);
    }
});

上面的代码只实现了默认选择 PayPal 支付网关时添加手续费的功能。我们需要在用户切换网关后也自动把这个手续费加上。代码也非常简单。

add_action('woocommerce_review_order_before_payment', function ()
{
    ?>
    <script type="text/javascript">
        (function($) {
            $('form.checkout').on('change', 'input[name^="payment_method"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
});

上面的代码翻译成人类语言就是:在支付方法改变时,触发更新购物车的方法。

同样的道理,你也可以为其他支付网关设置手续费,所需要修改的就是找准支付网关的名字,把第一段代码中的网关名称换掉就可以了,调整手续费的点数就更简单了,把代码中的 0.05 换成你需要的数字就可以了。

类别:WordPress 教程精选

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册