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

Я пытаюсь ограничить скидки или купоны, если клиент выбирает определенный способ оплаты. Для этого я использовал плагин под названием Расширенные возможности купона WooCommerce < / а>.

У меня есть 3 активных способа оплаты: чек, кредитная карта и PayPal в соответствующем порядке. Я установил купон, чтобы ограничить скидку, применяемую к заказу, если выбран способ оплаты «PayPal».

Однако на странице корзины, когда я добавляю купон в свой заказ, я получаю текущую ошибку.

Купон недействителен для текущего выбранного способа оплаты.

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

Я пробовал следующее:

  $available_gateways = $woocommerce->payment_gateways->get_available_payment_gateways();

  $available_gateways['cheque']->chosen = true;

Но это работает только для страницы оформления заказа.

Любые идеи?


person Dconsta    schedule 27.06.2016    source источник
comment
Это не так ясно… Насколько я понимаю, ваш купон работает только для метода оплаты Paypal, чтобы ограничить все остальные скидки для Paypal. Итак, если вы принудительно проверяете по умолчанию, это нормально, что вы получаете эту ошибку, не так ли? Затем обычно способы оплаты выбираются на странице оформления заказа, а не на странице корзины. Так что это довольно сложно. Может, придется переосмыслить это иначе ...   -  person LoicTheAztec    schedule 28.06.2016
comment
Извините. Я имел в виду, что у меня установлен купон, который можно использовать только для вариантов оплаты чеком и кредитной картой и не применять при выборе PayPal. На странице корзины кажется, что не выбран вариант оплаты по умолчанию. Надеюсь, это немного проясняет ситуацию   -  person Dconsta    schedule 28.06.2016
comment
Да, теперь это совершенно ясно… спасибо   -  person LoicTheAztec    schedule 28.06.2016


Ответы (1)


У меня была такая же проблема, и я решил так:

в woocommerce-auto-added-coupons / includes / WJECF_Controller.php найдите эту строку:

//============================
    //Test restricted payment methods

и добавьте этот код перед:

if (!isset( WC()->session->chosen_payment_method ) || WC()->session->chosen_payment_method == '' || !is_checkout()) {WC()->session->set('chosen_payment_method', 'paypal');}
person Cristian Mecozzi    schedule 21.06.2018
comment
Прочитав эти вопросы и ответы, я написал плагин: wordpress.org/plugins/ bh-wc-set-gateway-by-url - person BrianHenryIE; 20.05.2020