【问题标题】:add fee not work in payment price in woocommerce checkout在 woocommerce 结帐中的付款价格中添加费用不起作用
【发布时间】:2021-12-13 07:49:25
【问题描述】:

我使用 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。

【问题讨论】:

  • 我已经测试过并且工作正常。请在您的问题中添加完整的代码。
  • @Bhautik,tnx 我解决了它

标签: wordpress woocommerce


【解决方案1】:

最后我解决了这个问题。 当我们单击就地订单按钮时​​,新的 ajax 请求与另一个发布的数据一起发送(自定义数据直接作为发布数据而不是 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'] );
    }
}

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 2018-07-18
    • 2018-02-03
    • 1970-01-01
    • 2017-11-02
    • 2016-11-17
    • 2013-12-06
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多