• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Не выводятся способы оплаты.

dvp

Новичок
День добрый.

Ситуация известная, но решения так и не нашёл.

При переходе из корзины к оформлению заказа, на страницу /checkout
возникает непонятная для мня ситуация.

1. Если я в системе авторизован, то на указанной странице появляется способ оплаты
screen1.png

Подчёркнуто красным доступность способа оплаты. И для Робокассы указано "yes"
Список вывожу отсюда: abstract-wc-payment-gateway.php

public function is_available() {
echo $this->title," ".$this->enabled." 1</br>";
$is_available = ( 'yes' === $this->enabled );

if ( WC()->cart && 0 < $this->get_order_total() && 0 < $this->max_amount && $this->max_amount < $this->get_order_total() ) {
$is_available = false;
}
return $is_available;
}

И дальше всё происходит гладко, оплата происходит.

2. Если я в системе НЕ авторизован, то на указанной странице появляется надпись : "Пожалуйста, введите детали выше, чтобы увидеть доступные методы оплаты".

screen2.png


Подчёркнуто красным доступность способа оплаты. И для Робокассы НЕ указано "yes"
При этом способ оплаты не выводится.


Что делать?
Есть мысли?
Я уже 3 день ломаю голову, решить проблему не могу
 

medvedev84

Новичок
У меня такая же проблема. Использовал вот этот плагин: https://wordpress.org/plugins/wc-robokassa
Причем если добавить другие методы оплаты, то они отображаются для анонимного пользователя.

На странице отзывов увидел, что такая проблема имеет место с 09.2016 и по сей день :(

robo.jpg
 

dvp

Новичок
Вот здесь: /wp-content/plugins/woocommerce/includes/abstracts/
в файле abstract-wc-payment-gateway.php

я просто изменил немного функцию
public function is_available() {

$is_available = ( 'yes' === $this->enabled );
if ( WC()->cart && 0 < $this->get_order_total() && 0 < $this->max_amount && $this->max_amount < $this->get_order_total() ) {
$is_available = false;
}
return $is_available;
}

на
public function is_available() {

if ($this->title == 'Робокасса') $this->enabled = 'yes';
$is_available = ( 'yes' === $this->enabled );

if ( WC()->cart && 0 < $this->get_order_total() && 0 < $this->max_amount && $this->max_amount < $this->get_order_total() ) {
$is_available = false;
}

return $is_available;
}

смешно :)

но это работает

главное, не обновлять woocommerce :)
 
Сверху Снизу