Woocommerce 结帐页面上的额外贝宝费用
Posted
技术标签:
【中文标题】Woocommerce 结帐页面上的额外贝宝费用【英文标题】:Additional paypal fee on Woocommerce checkout page 【发布时间】:2018-09-03 16:23:24 【问题描述】:在 Woocommerce 中,当通过 Paypal 支付网关购买时,我们会尝试为订单添加额外费用。
我们通过这种方式更改了发送到 Paypal 的价格:
add_filter('woocommerce_paypal_args', 'addition_pay');
function addition_pay($paypal_args)
$new_value=$paypal_args['amount_1']+10;
$paypal_args['amount_1']=$new_value;
return $paypal_args;
它可以工作,但问题是在付款过程之后,这笔额外费用不会反映在订单和电子邮件通知中。
这可以通过某种方式解决吗?任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:您最好根据支付网关(此处为您的 Paypal)添加费用,如下所示:
// Add a fee of 10.00 when Paypal is chosen
add_action( 'woocommerce_cart_calculate_fees', 'custom_paypal_additional_fee', 20, 1 );
function custom_paypal_additional_fee( $cart )
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if( WC()->session->get( 'chosen_payment_method' ) == 'paypal' )
$cart->add_fee( __( 'Paypal fee', 'woocommerce' ), 10.00 );
// Add the information on checkout paypal text gateways section
add_filter('woocommerce_gateway_icon', 'custom_paypal_gateway_text', 20, 2 );
function custom_paypal_gateway_text( $html, $gateway_id )
if( $gateway_id == 'paypal' )
$html .= ' <small class="paypal-fee">(+ '.wc_price(10.00).')</small>';
return $html;
// Enable ajax update checkout event when choosing a gateway to refresh the fee
add_action('wp_footer', 'payment_gateways_update_checkout_event' );
function payment_gateways_update_checkout_event()
?>
<script type="text/javascript">
(function($)
$('form.checkout').on( 'change', 'input[name^="payment_method"]', function()
var t = updateTimer: !1, dirtyInput: !1,
reset_update_checkout_timer: function()
clearTimeout(t.updateTimer)
, trigger_update_checkout: function()
t.reset_update_checkout_timer(), t.dirtyInput = !1,
$(document.body).trigger("update_checkout")
;
$(document.body).trigger('update_checkout')
);
)(jQuery);
</script>
<?php
代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试和工作。
【讨论】:
以上是关于Woocommerce 结帐页面上的额外贝宝费用的主要内容,如果未能解决你的问题,请参考以下文章
当用户选择贝宝付款方式时,在结帐表单中禁用 WooCommerce 中的帐单地址
在 Woocommerce 结帐页面中显示一个添加费用的复选框
WooCommerce - 增加运费并为贝宝网关增加额外费用