做外贸的朋友都知道,使用 PayPal 收款是需要手续费的,按 WooCommerce 默认的 PayPal 收款网关没有设置手续费的选项。
相信聪明且有耐心你肯定可以找到支持为 PayPal 收款# P q设K . O K J $ %置手续费的插件。一刀我就没有这个耐心,于是研究了一下 WooCommerce PayPal 支付网关的相关代码,发现我E W % . k们可以通过两端代码来为 PayPal 添加手续费。
为 PayPal 支. Z , k付网关添加手续费的代码
多余的话咱不讲,一言不合就上代码(由此可见我是多么没耐心😄)。老规矩,把代码加@ z | p , U & 3到 functions.php 里面就可以了。
- add_action('woocommerce_cart_calculate_fn , Mees', function ()
- {
- $chosen_gateway = WC()->session->get('chosen_payment_method');
- if ($chosen_gat( # ;eway == 'paypal') {
- if ( ! wc_. k q q D _ z @prices_include_tax(4 | % b n \ } n)) {
- $amount = WC()->cart->get_cart_c( p . J T g i Q montents_total: @ { 1 Z u ? Y0;) + WC()->cart->v H tget_shipping_total();
- } else {
- $amount = WC()->/ ~ G : 7 ,;cart->get_cart_conteM 4 [ 2 s @ %nts_total() + WC()->cart->get_taxes_total() + WC()->carH 6 zt->get_shipping_tot9 l ] / . ( :al/ @ { p . @ 9040;);
- _ V % y25;
- WC(4 F \ J P f ^1;->cart->add_feQ L W a )e('PayPa_ 7 ; Tl Fee', $amount * 0.05);
- }
- }&? z % * / / } `#041;;
上面的代码只实现了默认选择 PayPal 支付网关时添加手续费的功能。我们需要在用户切换网关后也自动把这个手续费加上,代码也非常简单。
- add_action('woocommerce/ T F # - 8_review_order_before_payment', function ()
- {
- ?>
- <script type="text/javascript">
- (functF p r _ion($) {
- $('foro 5 ^ \ K [ P / Km.checkout').on6 ) @ w('change', 'input[name^="payment_method"]', function() {
- $('body').trigger('update_checkout');H , U 7 R
- });
- })(jQuery);
- </script>
- <?php
- });
上面的代码翻译成人类语言就是:在支付方法改变时,触发更新购物车的方法I p 9 L O 7 ! `。
同样的道理,你也可以z ` q 9为其他支付网关设置手续费,所需要修改的就是找准支付网关的3 s I名字,把第一段代码中的网关名称换掉就可以了,调整手续费的点数就更简单了,把代码中的 0.05 换成你需要5 G h $ _ # u [ w的数字就可以了。