@berikonel

Как сделать чтоб при выборе формы оплаты, например клиент выбрал paypal, то сумма заказа увеличивалась на 14%?

Нашел вот такой код, только он для конкретной страны увеличивает сумму заказа, а я не знаю как достать способ оплаты которую выбрал клиент, и потом можно сделать сравнение, если paуpal, то увеличивается сумма заказа на 14%, а если к примеру наложенным платежом, то сумма остается прежней, помогите пожалуйста

add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );

function woocommerce_custom_surcharge() {

global $woocommerce;



if ( is_admin() && ! defined( 'DOING_AJAX' ) )

return;



$county = array('US');

$percentage = 0.01;



if ( in_array( $woocommerce->customer->get_shipping_country(), $county ) ) :

$surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;

$woocommerce->cart->add_fee( 'Surcharge', $surcharge, true, '' );

endif;

}
  • Вопрос задан
  • 793 просмотра
Решения вопроса 1
kalbac
@kalbac
Wordpress Developer Full-Stack
Автор, данная функция делает подсчёт только в корзине. Для того что бы получить выбранный метод оплаты нужно цепляться к хукам относящиеся к оформлению заказа (т.е. checkout).
Как вариант можно использовать этот хук woocommerce_after_calculate_totals
Пример использования такой:

add_action( 'woocommerce_after_calculate_totals', 'custom_fee_for_paypal' );

function custom_fee_for_paypal( $cart ) {
//проверяем это страница оформления заказа или нет
 if ( is_checkout() || defined('WOOCOMMERCE_CHECKOUT') ) {
  //получаем выбранный метод оплаты
  $patment_method = WC()->session->get( 'chosen_payment_method' );
  //Если выбранный метод равен paypal то идём дальше
   if( $patment_method == 'paypal' ) {
    $percentage = 0.14;
    //Получаем значение суммы надбавки за пайпел
    $surcharge = ( $cart->cart_contents_total + $cart->shipping_total ) * $percentage;
    //Добавляем надбавку
     $cart->add_fee( 'Комиссия за PayPal ', $surcharge, true, '' );
  }
 }
}


Я этот код написал только что "на коленке", так что он не претендует на истину. Если что то не будет работать в этом коде, то подумайте почему.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы