Собственный платежный шлюз не отображается на странице checkout, почему?

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

Всем привет, может кто знает?
Делаю платежный шлюз по этому мануалу Мишки
Т.е. все ок, в настройках платежей появляется новый вид оплаты, но, на странице checkout он почему-то не появляется...
Уже замучался...
WP чистый, последней версии.
Тема стандартная, от wordpress.
WOO чистый, последней версии.
Доп. плагинов нет.

Может этот мануал уже устарел, и не будет работать с новыми версиями? Тогда если кто знает, что поменялось?

Дополнительно:

Собственный платежный шлюз не отображается на странице checkout, почему?

в новой версии WP/woocomemrce чекаут сделан на блоках. если зайти на страницы в админке и открыть чекаут, то станет понятно. нужно удалить оттуда все и вставить шорткод [woocommerce_checkout] и тогда все заработает

  • Благодарю :)
    Эх, моя невнимательность...(
Нужно решить такую задачу?

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

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

Если платёжный шлюз появился в настройках WooCommerce, но не отображается на странице checkout, первая проверка — какой checkout используется. В новых WooCommerce страница оформления заказа может быть собрана блоком Checkout, а многие кастомные шлюзы, написанные по старым мануалам, работают только с классическим shortcode checkout.

Откройте страницу “Оформление заказа” в админке. Если там стоит блок WooCommerce Checkout, временно удалите его и вставьте shortcode:

[woocommerce_checkout]

[woocommerce_checkout]

После этого проверьте, появился ли Ваш метод оплаты. Если появился — проблема не в классе шлюза, а в несовместимости с WooCommerce Blocks. Для поддержки block checkout нужен отдельный JS/Blocks integration, и старые статьи по WC_Payment_Gateway этого не покрывают.

Также проверьте базовые условия, при которых WooCommerce скрывает метод оплаты:

  • метод включён в настройках;
  • валюта магазина поддерживается шлюзом;
  • страна/зона покупателя подходит;
  • корзина не пустая;
  • у товара нет условий, которые отключают gateway;
  • в классе шлюза нет ошибки в is_available().

В классе шлюза должен быть корректный id и enabled:

class WC_Gateway_Custom extends WC_Payment_Gateway {
    public function __construct() {
        $this->id = 'custom_gateway';
        $this->method_title = 'Custom Gateway';
        $this->has_fields = false;
        $this->init_form_fields();
        $this->init_settings();
        $this->enabled = $this->get_option('enabled');
        $this->title = $this->get_option('title');
    }
}

class WC_Gateway_Custom extends WC_Payment_Gateway { public function __construct() { $this->id = 'custom_gateway'; $this->method_title = 'Custom Gateway'; $this->has_fields = false; $this->init_form_fields(); $this->init_settings(); $this->enabled = $this->get_option('enabled'); $this->title = $this->get_option('title'); } }

И он должен добавляться в список gateways:

add_filter('woocommerce_payment_gateways', function ($gateways) {
    $gateways[] = 'WC_Gateway_Custom';
    return $gateways;
});

add_filter('woocommerce_payment_gateways', function ($gateways) { $gateways[] = 'WC_Gateway_Custom'; return $gateways; });

Итог: если на чистом WP/Woo метод виден в настройках, но не на checkout, почти наверняка это либо WooCommerce Blocks, либо условия доступности шлюза. Для быстрого решения используйте классический shortcode checkout. Для правильной современной реализации добавляйте поддержку WooCommerce Blocks отдельно.

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

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

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

комментарий

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

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