WooCommerce не оформляет заказ: причины и как исправить checkout

Автор:vkuzyomko

WooCommerce не оформляет заказ: причины и как исправить checkout

Краткий ответ: если WooCommerce не оформляет заказ, проблема чаще всего находится в checkout-странице, оплате, доставке, кешировании, JavaScript, AJAX-запросе wc-ajax=checkout, сессиях, cookies, теме или конфликте плагинов. Исправлять нужно не “наугад”, а по симптомам: кнопка не нажимается, бесконечная загрузка, ошибка оплаты, пустой checkout, не создаётся заказ или не открывается страница “Заказ принят”.

Причина

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

Чаще всего проблема выглядит так:

  • кнопка Оформить заказ не реагирует;
  • после клика крутится бесконечный loader;
  • заказ не появляется в админке WooCommerce;
  • платёж не переходит на страницу банка или платёжной системы;
  • появляется ошибка “There was an error processing your order”;
  • доставка или оплата не отображаются на checkout;
  • страница заказа открывается пустой или с ошибкой;
  • покупателя возвращает обратно в корзину;
  • после оплаты не меняется статус заказа;
  • заказ создаётся, но письма покупателю и админу не отправляются.

В реальных проектах чаще всего виноваты не сами настройки WooCommerce, а конфликт: кеш плагина, оптимизация JavaScript, платёжный модуль, тема, кастомный код, устаревший шаблон checkout или проблема на стороне хостинга.

Диагностика

Сначала нужно понять, на каком этапе ломается оформление заказа. Это экономит время и не даёт сломать рабочие части магазина.

Симптом Вероятная причина Что проверить
Кнопка оформления не нажимается JavaScript-ошибка, конфликт темы, оптимизация JS Console в браузере, отключение defer/delay JS
Бесконечная загрузка после клика Ошибка AJAX, PHP fatal error, проблема оплаты Network, debug.log, WooCommerce Logs
Нет способов оплаты SSL, валюта, страна, настройки платёжного шлюза WooCommerce → Настройки → Платежи
Нет доставки Зоны доставки, методы, адрес покупателя WooCommerce → Настройки → Доставка
Заказ создаётся, но статус не меняется Webhook платёжной системы, кеш, callback URL Логи Stripe/PayPal/LiqPay/WayForPay
После оплаты нет письма SMTP, wp_mail, статус заказа Почтовые логи и SMTP
Checkout пустой Неверная страница checkout или блок/шорткод WooCommerce → Настройки → Дополнительно

Если проблема связана не только с checkout, а весь магазин работает медленно, отдельно проверьте причины в статье WooCommerce долго оформляет заказ.

Нужно быстро решить проблему на сайте?

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

Оставить заявку

Решение

Начинать нужно с простых проверок, которые не меняют логику магазина.

1. Проверьте страницу оформления заказа

Откройте WooCommerce → Настройки → Дополнительно и проверьте, какая страница выбрана как checkout.

На странице оформления должен быть один из вариантов:

  • Checkout Block WooCommerce;
  • шорткод [woocommerce_checkout].

Не должно быть ситуации, когда корзина, checkout и личный кабинет назначены на одну и ту же страницу. Это ломает редиректы, endpoints и работу платёжных шлюзов.

2. Исключите checkout из кеша

Страницы корзины, оформления заказа и личного кабинета нельзя кешировать как обычные страницы. Там работают сессии, cookies, AJAX и индивидуальные данные покупателя.

В кеш-плагине и CDN нужно исключить:

  • /cart/
  • /checkout/
  • /my-account/
  • ?wc-ajax=checkout
  • ?wc-ajax=update_order_review
  • callback/webhook URL платёжной системы

Если кеш настроен неправильно, WooCommerce может показывать устаревшие данные корзины, не пересчитывать доставку или возвращать HTML там, где платёжный шлюз ожидает технический ответ.

3. Отключите оптимизацию JavaScript для checkout

Многие поломки появляются после включения функций:

  • Delay JavaScript;
  • Defer JS;
  • объединение JS-файлов;
  • минификация JS;
  • отложенная загрузка jQuery;
  • удаление “лишних” WooCommerce scripts.

Для checkout лучше не оптимизировать скрипты WooCommerce, платёжного шлюза и темы, если вы точно не проверили оформление тестового заказа.

4. Проверьте способы оплаты

Если кнопка оформления работает, но заказ не завершается, проверьте платёжный метод.

Что проверить:

  • включён ли способ оплаты;
  • поддерживает ли он текущую валюту;
  • доступен ли он для страны покупателя;
  • правильно ли настроены API keys;
  • включён ли SSL;
  • работают ли webhooks/callbacks;
  • нет ли ошибок в логах платёжного модуля.

Для теста можно временно включить стандартный способ оплаты Оплата при доставке. Если с ним заказ создаётся, значит проблема ближе к платёжному шлюзу, а не к checkout в целом.

5. Проверьте доставку

WooCommerce может не дать оформить заказ, если для адреса покупателя нет доступного способа доставки.

Проверьте:

  • созданы ли зоны доставки;
  • есть ли методы доставки внутри зоны;
  • совпадает ли страна/город/индекс покупателя с зоной;
  • не конфликтуют ли плагины Новой почты, Укрпочты, доставки по городу;
  • не скрывает ли кастомный код все методы доставки.

6. Проверьте обязательные поля checkout

Если поле стало обязательным, но не выводится на странице, заказ не будет оформлен. Такое часто бывает после доработки checkout-полей или установки плагинов Checkout Field Editor.

Проверьте, нет ли обязательных полей, которые:

  • удалены из HTML;
  • скрыты через CSS;
  • не заполняются скриптом доставки;
  • имеют неправильный ключ поля;
  • добавлены кастомным кодом без валидации.

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

Код

Важно: код ниже предназначен для диагностики. Не оставляйте включённый debug на рабочем сайте надолго. Перед изменениями сделайте резервную копию файлов и базы данных.

Включить debug.log в wp-config.php

Куда вставлять: файл wp-config.php, выше строки /* That's all, stop editing! */.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'SCRIPT_DEBUG', true );

@ini_set( 'display_errors', 0 );

После повторения ошибки проверьте файл:

/wp-content/debug.log

Ищите ошибки, связанные с:

  • WC_Checkout
  • WC_AJAX
  • process_checkout
  • payment gateway
  • fatal error
  • uncaught error
  • session

Логирование checkout-процесса в WooCommerce

Куда вставлять: в отдельный мини-плагин или functions.php дочерней темы. Лучше использовать отдельный плагин, чтобы код не пропал при смене темы.

add_action( 'woocommerce_before_checkout_process', 'sc_log_before_checkout_process' );

function sc_log_before_checkout_process() {
    if ( ! function_exists( 'wc_get_logger' ) ) {
        return;
    }

    $logger = wc_get_logger();

    $logger->info(
        'Checkout process started. User ID: ' . get_current_user_id(),
        array(
            'source' => 'sc-checkout-debug',
        )
    );
}

После теста откройте WooCommerce → Статус → Журналы и выберите лог sc-checkout-debug. Если запись появляется после клика по кнопке, значит запрос до WooCommerce доходит. Если записи нет, проблема может быть в JavaScript, кешировании, блокировке AJAX или WAF.

Проверка AJAX checkout в браузере

Откройте checkout, нажмите F12 → Network, затем оформите тестовый заказ.

Нужно найти запрос:

?wc-ajax=checkout

Проверьте:

  • статус ответа: 200, 403, 404, 500;
  • есть ли JSON-ответ;
  • не возвращается ли HTML вместо технического ответа;
  • нет ли ошибки сервера;
  • не блокирует ли запрос Cloudflare, ModSecurity или другой WAF.

Результат

После правильной диагностики должно быть понятно, где именно ломается оформление заказа: на frontend, в AJAX, на PHP, в оплате, доставке, сессиях или после оплаты.

Рабочий результат выглядит так:

  • кнопка оформления отправляет AJAX-запрос;
  • WooCommerce создаёт заказ;
  • платёжный шлюз принимает оплату или корректно возвращает ошибку;
  • покупатель попадает на страницу “Заказ принят”;
  • статус заказа меняется правильно;
  • письма WooCommerce отправляются;
  • в логах нет fatal error и повторяющихся ошибок checkout.

Если заказы создаются, но письма не приходят, проблема уже не в checkout. Тогда нужно отдельно проверять SMTP и wp_mail. Подробно это разобрано в статье WooCommerce не отправляет письма.

Дополнительные способы

Отключить плагины без риска для посетителей

Не стоит отключать плагины на рабочем магазине в момент продаж. Лучше сделать копию сайта на staging и повторить проблему там.

Порядок проверки:

  • оставить активными WordPress, WooCommerce и платёжный модуль;
  • переключиться на стандартную тему Storefront или Twenty Twenty-Four;
  • проверить тестовый заказ;
  • включать плагины по одному;
  • после каждого включения повторять оформление заказа.

Так можно найти конфликт без случайного отключения важной функции магазина.

Проверить шаблоны WooCommerce в теме

Если тема содержит старые файлы WooCommerce templates, checkout может работать нестабильно после обновления WooCommerce.

Проверьте:

  • WooCommerce → Статус → Состояние системы;
  • раздел с переопределёнными шаблонами;
  • файлы в папке /wp-content/themes/your-theme/woocommerce/;
  • устаревшие шаблоны checkout и cart.

Проверить PHP-версию и лимиты хостинга

Checkout может падать из-за ограничений сервера. Особенно если магазин использует тяжёлую тему, много плагинов доставки, CRM-интеграцию, Telegram-уведомления и платёжные шлюзы.

Проверьте:

  • PHP version;
  • memory_limit;
  • max_execution_time;
  • ошибки в server error log;
  • медленные запросы к базе данных;
  • cron-задачи, которые запускаются во время оформления заказа.

Проверить блокировку WAF или Cloudflare

Если запрос ?wc-ajax=checkout получает 403, проблема может быть не в WooCommerce. Его может блокировать firewall, Cloudflare, ModSecurity или security-плагин.

Признаки:

  • оформление не работает только у части покупателей;
  • ошибка появляется после заполнения адреса или телефона;
  • в Network виден статус 403;
  • в логах безопасности есть блокировки checkout-запросов;
  • проблема появляется после включения защиты от ботов.

Частые ошибки

Очищать кеш и считать, что проблема решена

Очистка кеша может временно помочь, но не исправляет причину. Если checkout снова ломается через несколько часов, нужно искать конфликт кеширования, JS-оптимизации или сессий.

Отключать все плагины на рабочем сайте

Так можно остановить оплату, доставку, CRM, аналитику, письма и интеграции. Безопаснее делать проверку на staging-копии.

Игнорировать консоль браузера

Если кнопка “Оформить заказ” не реагирует, Console и Network часто показывают причину быстрее, чем логи WooCommerce.

Не проверять платёжный кабинет

Stripe, PayPal, LiqPay, WayForPay и другие шлюзы могут отклонять платёж на своей стороне. Иногда WooCommerce показывает общую ошибку, а реальная причина видна только в кабинете платёжной системы.

Кешировать webhook платёжной системы

Если callback или webhook попадает в кеш, платёж может пройти, но WooCommerce не получит корректный ответ. В итоге заказ останется в неправильном статусе.

Диагностика проблем

Если кнопка “Оформить заказ” ничего не делает

  • Откройте Console в браузере.
  • Проверьте JavaScript errors.
  • Отключите delay/defer JS для checkout.
  • Проверьте, не отключён ли jQuery.
  • Временно отключите плагины оптимизации на staging.

Если крутится бесконечная загрузка

  • Откройте Network.
  • Найдите ?wc-ajax=checkout.
  • Проверьте статус ответа.
  • Если 500 — смотрите debug.log.
  • Если 403 — проверяйте firewall/WAF.
  • Если ответ HTML вместо JSON — проверяйте кеш и редиректы.

Если заказ создаётся, но оплаты нет

  • Проверьте настройки платёжного шлюза.
  • Проверьте API keys.
  • Проверьте webhook URL.
  • Проверьте SSL.
  • Проверьте логи платёжного кабинета.

Если оплата прошла, но заказ не завершён

  • Проверьте callback/webhook.
  • Исключите webhook URL из кеша.
  • Проверьте server log.
  • Проверьте, не блокирует ли запрос Cloudflare.
  • Проверьте статус заказа в WooCommerce.

Если checkout ломается только у некоторых покупателей

  • Проверьте страну, регион и способ доставки.
  • Проверьте браузер и устройство.
  • Проверьте cookies и session.
  • Проверьте WAF-блокировки по IP.
  • Проверьте кастомные поля checkout.

FAQ

Почему WooCommerce не оформляет заказ после нажатия кнопки?

Чаще всего кнопку блокирует JavaScript-ошибка, кеш, конфликт плагинов, проблема платёжного шлюза или ошибка AJAX-запроса wc-ajax=checkout. Начните с проверки Console и Network в браузере.

Почему на checkout крутится бесконечная загрузка?

Бесконечная загрузка обычно означает, что WooCommerce отправил запрос, но не получил корректный ответ. Причина может быть в PHP-ошибке, блокировке firewall, платёжном модуле, кешировании или неправильном JSON-ответе.

Почему WooCommerce не показывает способы оплаты?

Проверьте, включены ли платёжные методы, поддерживают ли они валюту магазина, страну покупателя и SSL. Также проверьте, не скрывает ли их кастомный код или плагин условий оплаты.

Почему WooCommerce не показывает доставку?

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

Можно ли просто отключить кеш для всего сайта?

Можно для теста, но это не лучшее постоянное решение. Правильнее исключить из кеша корзину, checkout, личный кабинет, AJAX-запросы WooCommerce и webhook URL платёжных систем.

Нужно ли менять тему, если checkout не работает?

Не сразу. Сначала проверьте ошибку в Console, Network и debug.log. Переключение на стандартную тему нужно для диагностики на staging-копии, чтобы понять, виновата тема или нет.

Почему заказ создаётся, но письмо не приходит?

Это уже проблема почты, а не самого оформления заказа. Проверьте SMTP, DNS-записи SPF/DKIM/DMARC, статус заказа и настройки WooCommerce Email.

Почему после оплаты покупатель не видит страницу “Заказ принят”?

Причина может быть в endpoints, постоянных ссылках, редиректах, кеше или шаблоне темы. Сохраните настройки постоянных ссылок, проверьте WooCommerce endpoints и исключите страницу order-received из кеша.

Вывод

Если WooCommerce не оформляет заказ, нельзя ограничиваться очисткой кеша или случайным отключением плагинов. Checkout — это связка страницы, AJAX, сессий, доставки, оплаты, темы, PHP и сервера. Правильный путь: определить симптом, проверить Console и Network, включить debug.log, посмотреть WooCommerce Logs, протестировать оплату и доставку, затем уже исправлять конкретную причину.

В большинстве случаев проблему можно найти за один цикл диагностики: тестовый заказ, проверка wc-ajax=checkout, анализ логов и отключение конфликтующей оптимизации или плагина на staging-копии.

Об авторе

vkuzyomko administrator