添加费用在 woocommerce 结帐的付款价格中不起作用

add fee not work in payment price in woocommerce checkout

我使用 woocommerce_cart_calculate_fees 操作在 update_order_review 操作的 woocommerce 结帐页面中添加额外的自定义费用(自定义输入)。

add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' );
function prefix_add_discount_line( $cart ) 
    {
        parse_str($_POST['post_data'], $posted_data);
        if( isset($posted_data['isWallet']) )
        {
            WC()->cart->add_fee( 'wallet', -$posted_data['walletUsed'] );
        }
    }

它有效并改变了 woocommerce 结帐中的价格。 但是当我去支付网关时,添加的费用不会添加到总价中。 请帮助 tanx.

我终于解决了这个问题。 当我们点击就地订购按钮时,新的 ajax 请求发送另一个 posted 数据(自定义数据直接作为 post 数据发送,而不是 post_data 参数)。 我给它设置了一个条件并解决了:

add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' );
function prefix_add_discount_line( $cart ) 
{
   if(isset($_POST['post_data'])) 
   {
        parse_str($_POST['post_data'], $posted_data);
        if( isset($posted_data['isWallet']) )
        {
            WC()->cart->add_fee( 'wallet', -$posted_data['walletUsed'] );
        }
    }
        
    if(isset($_POST['isWallet'])) 
    {
        WC()->cart->add_fee( 'wallet', -$_POST['walletUsed'] );
    }
}