У нас есть модуль редактора полей оформления заказа, который может прикрепить комиссию к полю опции, чтобы при выборе такого поля опции она добавляла комиссию в вашу корзину и обновляла сумму заказа.
У нас также есть пользовательский модуль платежного шлюза, который показывает клиенту, сколько нужно заплатить, и код для расчета общей суммы выглядит следующим образом:
$total_cart = (float)is_object( WC()->cart ) ? WC()->cart->cart_contents_total : '';
$total_shipping = (float)is_object( WC()->cart ) ? WC()->cart->shipping_total : '';
$total_tax = (float)is_object( WC()->cart ) ? WC()->cart->tax_total : '';
$total_shipping_tax = (float)is_object( WC()->cart ) ? WC()->cart->shipping_tax_total : '';
$total_fees = (float)is_object( WC()->cart ) ? WC()->cart->fee_total : '';
$total_amount = $total_cart+$total_shipping+$total_tax+$total_shipping_tax+$total_fees;
В то время как переменная $total_shipping
хорошо обновляется при выборе другого способа доставки переменная $total_fees
не обновляется до правильного значения при добавлении платы (остается нулевой), если браузер не обновляется. Мы также попытались вычислить его, используя вместо этого функцию get_fee_total()
, но это тот же результат.
Мы рассчитываем сумму, используя такой избыточный способ, что WC()->cart->total
или WC()->cart->get_total()
первоначально показывают правильное значение значение, но становится равным нулю после того, как пользователь выбирает что-либо в форме оформления заказа, что приводит к «1014 * refre sh» в корзину.