Как сделать наценку за вид оплаты в Woocommerce?

Ссылка скопирована
1 ответ

Здравствуйте, я только начинаю потихоньку делать сайты на Wordpress и я хотел бы узнать, как можно добавить наценку к общей сумме чека на странице оплаты.

Есть 3 вида оплаты:

- Наличный расчёт
- Без НДС
- С НДС

У каждого товара есть 3 цены для каждого вида оплаты, но нужно сделать так, чтобы выбор оплаты менял сразу для всех товаров цену по своему прайсу

Допустим, товар "Уголь 1"
Наличный расчёт - 180₽
Без НДС - 200₽
С НДС - 240₽

Товар "Уголь 2"
Наличный расчёт - 100₽
Без НДС - 110₽
С НДС - 132₽

Заранее большое спасибо тому кто поможет!

Дополнительные вопросы

Ответы:

Использовать скидочные плагины с отрицательной скидкой

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
2
Есть ответ! Ответ

Наценку за вид оплаты в WooCommerce можно добавить через комиссию в корзине. Делается это хуком woocommerce_cart_calculate_fees, где проверяется выбранный метод оплаты и добавляется нужная сумма или процент.

Пример: добавить 3% при оплате конкретным способом:

add_action('woocommerce_cart_calculate_fees', function ($cart) {
    if (is_admin() && ! defined('DOING_AJAX')) {
        return;
    }
 
    $chosen = WC()->session ? WC()->session->get('chosen_payment_method') : '';
 
    if ($chosen === 'cod') {
        $fee = $cart->get_subtotal() * 0.03;
        $cart->add_fee('Комиссия за выбранный способ оплаты', $fee, true);
    }
});

add_action('woocommerce_cart_calculate_fees', function ($cart) { if (is_admin() && ! defined('DOING_AJAX')) { return; } $chosen = WC()->session ? WC()->session->get('chosen_payment_method') : ''; if ($chosen === 'cod') { $fee = $cart->get_subtotal() * 0.03; $cart->add_fee('Комиссия за выбранный способ оплаты', $fee, true); } });

Чтобы сумма пересчитывалась сразу при смене способа оплаты, на checkout обычно нужен стандартный JS-триггер WooCommerce. В большинстве тем он уже работает. Если нет, можно добавить обновление:

jQuery(function ($) {
  $('form.checkout').on('change', 'input[name="payment_method"]', function () {
    $('body').trigger('update_checkout');
  });
});

jQuery(function ($) { $('form.checkout').on('change', 'input[name="payment_method"]', function () { $('body').trigger('update_checkout'); }); });

Перед запуском проверьте юридическую сторону: в некоторых сценариях комиссия за способ оплаты должна быть явно показана клиенту до оформления заказа.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно