Дополнительная плата на странице оформления заказа WooCommerce не добавлена ​​к промежуточному итогу

Мне нужно добавить плату за обработку на странице оформления заказа для некоторого штата. Для этого я использую опцию woocommerce add_fee. Но моя проблема заключается в том, что на странице оформления заказа плата за обработку отображается, но не добавляется к промежуточному итогу. Вот мой код

add_action( 'woocommerce_cart_calculate_fees','xa_custom_surcharge' );
function xa_custom_surcharge() {
    global $woocommerce;
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $state= array('MH');
    $surcharge  = 10;

    if ( in_array( WC()->customer->shipping_state, $state ) ) {
        $woocommerce->cart->add_fee( 'Additional Charge', $surcharge, true, '' );
    }
}

Кто-нибудь может мне помочь, пожалуйста.


person Soumyadip    schedule 27.04.2019    source источник


Ответы (1)


Ваш код устарел с WooCommerce 3:

  • Свойства больше не могут быть недоступны для объектов CRUD, поэтому вы должны использовать вместо этого такие методы, как get_shipping_state() в вашем случае.
  • global $woocommerce и $woocommerce->cart устарели и заменены непосредственно на WC()->cart
  • Переменная WC_Cart Object $cart доступна в перехваченной функции в качестве аргумента.

Правильный код:

add_action( 'woocommerce_cart_calculate_fees','add_custom_surcharge', 10, 1 );
function add_custom_surcharge( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $state = array('MH');
    $surcharge  = 10;

    if ( in_array( WC()->customer->get_shipping_state(), $state ) ) {
        $cart->add_fee( 'Additional Charge', $surcharge, true );
    }
}

Теперь при использовании Fee API сумма комиссии отображается как общая сумма и добавляется к общей сумме в гранах в конце, но НЕ к промежуточной сумме. :

введите здесь описание изображения

Промежуточный итог в WooCommerce создается только из промежуточных итогов товаров в корзине…

person LoicTheAztec    schedule 27.04.2019