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

Автор:vkuzyomko

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

Краткий ответ: если WooCommerce не оформляет заказ, чаще всего проблема находится на странице checkout: не работает кнопка “Оформить заказ”, ошибка оплаты, не выбран способ доставки, конфликт плагина, кеширует checkout, JavaScript-ошибка, admin-ajax.php или REST API возвращает 403/500, тема переопределяет шаблон, платёжный шлюз настроен неверно или в логах WooCommerce есть fatal error.

Причина

Оформление заказа в WooCommerce зависит сразу от нескольких частей: корзины, checkout-страницы, сессии покупателя, способов доставки, способов оплаты, темы, JavaScript, AJAX/REST API, платёжного шлюза, email-уведомлений и базы данных.

Поэтому ошибка может выглядеть по-разному:

  • кнопка “Оформить заказ” не нажимается;
  • кнопка крутится бесконечно;
  • после нажатия ничего не происходит;
  • страница checkout перезагружается без создания заказа;
  • показывается ошибка оплаты;
  • покупателя не перенаправляет на оплату;
  • заказ создаётся, но получает статус “Ожидает оплаты” или “Не удался”;
  • checkout работает в тестовом режиме, но не работает в live-режиме;
  • не отображаются способы доставки;
  • не отображаются способы оплаты;
  • WooCommerce пишет, что корзина пуста;
  • после оплаты заказ не появляется в админке.

Если перед проблемой вы обновляли WooCommerce, тему, платёжный плагин или кеш, сначала проверьте общий порядок действий в статье Конфликт плагинов WordPress: как найти причину и исправить сайт.

Частые причины

  • checkout-страница кешируется;
  • кешируется корзина или сессия покупателя;
  • JavaScript-ошибка блокирует кнопку оформления заказа;
  • admin-ajax.php или REST API возвращает ошибку;
  • плагин оплаты настроен неправильно;
  • неверные API keys в платёжном шлюзе;
  • режим test/live перепутан;
  • не настроены способы доставки для зоны покупателя;
  • тема переопределяет устаревшие шаблоны WooCommerce;
  • плагин оптимизации откладывает нужные скрипты checkout;
  • security-плагин или WAF блокирует AJAX-запрос;
  • не работает SSL на странице оплаты;
  • ошибка PHP в плагине, теме или кастомном коде;
  • не хватает PHP memory limit;
  • сессии WooCommerce не сохраняются;
  • после переноса сайта остались старые URL или кеш;
  • конфликт классического checkout и checkout blocks.

Диагностика

Сначала нужно понять, на каком шаге ломается заказ: корзина, checkout, доставка, оплата, создание заказа, редирект на платёжный шлюз или возврат после оплаты.

Симптом Вероятная причина Что проверить
Кнопка “Оформить заказ” не нажимается JavaScript-ошибка, тема, плагин оптимизации, checkout blocks Console, Network, тема, кеш, JS defer/delay
Кнопка крутится бесконечно AJAX-запрос зависает или получает 403/500 Network, admin-ajax.php, wc-ajax, REST API, WAF
Пишет “нет доступных способов доставки” не настроена зона доставки или условия метода Shipping zones, адрес покупателя, класс доставки
Не отображаются способы оплаты платёжный метод отключён, валюта/страна не поддерживается Payments, страна, валюта, условия шлюза
Заказ создаётся со статусом Failed ошибка платёжного шлюза, API, 3D Secure, webhook WooCommerce Logs, payment logs, gateway settings
Заказ создаётся, но письма не приходят проблема email-отправки, SMTP, статус заказа WooCommerce emails, SMTP, wp_mail, логи
Checkout работает только без кеша кешируются cart/checkout/session fragments исключения кеша, CDN, object cache
Ошибка появилась после обновления конфликт плагина, темы или шаблона debug.log, Woo logs, templates, staging

Что проверить первым

  • создаётся ли заказ в WooCommerce → Заказы;
  • какой статус получает заказ;
  • есть ли ошибка в WooCommerce → Status → Logs;
  • есть ли fatal-errors в логах WooCommerce;
  • есть ли ошибки в Console браузера;
  • какой ответ возвращает checkout-запрос во вкладке Network;
  • не кешируются ли Cart, Checkout и My Account;
  • отображаются ли способы доставки;
  • отображаются ли способы оплаты;
  • совпадает ли режим test/live в платёжном шлюзе;
  • актуальны ли шаблоны WooCommerce в теме;
  • работает ли checkout на стандартной теме.

Решение

Исправлять checkout нужно аккуратно. Нельзя на рабочем магазине массово отключать оплату, кеш, доставку и плагины без backup, потому что это может повлиять на реальные заказы покупателей.

1. Сделайте резервную копию

Перед диагностикой сохраните файлы и базу данных. Для интернет-магазина важно учитывать, что между backup и восстановлением могут появиться новые заказы. Поэтому старый backup нельзя просто накатывать поверх рабочей базы без проверки.

Минимально сохраните:

  • базу данных;
  • папку wp-content;
  • wp-config.php;
  • .htaccess;
  • список активных плагинов;
  • настройки платёжного шлюза без раскрытия секретных ключей;
  • логи WooCommerce;
  • логи PHP и сервера.

2. Проверьте WooCommerce Logs

Откройте WooCommerce → Status → Logs. Там могут быть логи платёжных шлюзов, fatal-errors, place-order, webhook, shipping, email и другие записи.

Ищите ошибки по времени, когда вы тестировали заказ:

  • payment failed;
  • invalid API key;
  • authentication failed;
  • webhook failed;
  • fatal error;
  • undefined function;
  • nonce verification failed;
  • cURL error;
  • REST API error;
  • permission denied.

3. Проверьте Console и Network

Откройте checkout в браузере, нажмите F12 и проверьте:

  • Console — JavaScript-ошибки;
  • Network — запросы checkout, wc-ajax, admin-ajax.php, wp-json;
  • Status code — 200, 302, 400, 403, 404, 500;
  • Response — текст ошибки от WooCommerce или платёжного шлюза;
  • Timing — зависает ли запрос по времени.

Если при клике на кнопку ничего не происходит, почти всегда нужно начинать с Console и Network.

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

Страницы корзины и оформления заказа нельзя кешировать как обычные страницы. Для WooCommerce обычно нужно исключить:

  • /cart/
  • /checkout/
  • /my-account/
  • параметры ?wc-ajax=
  • cookies WooCommerce;
  • cart fragments;
  • страницы оплаты и возврата после оплаты.

Если магазин стал ломаться после оптимизации, проверьте инструкцию Как ускорить WooCommerce: практическое руководство для магазина WordPress. Важно ускорять магазин так, чтобы не ломались корзина, checkout и оплата.

5. Проверьте способы доставки

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

Проверьте:

  • WooCommerce → Настройки → Доставка → Зоны доставки;
  • есть ли метод доставки для страны/региона покупателя;
  • правильно ли настроены классы доставки;
  • не стоит ли минимальная сумма заказа;
  • не конфликтует ли бесплатная доставка с платной;
  • не скрывает ли плагин доставки все методы;
  • правильно ли заполнены вес и габариты товара, если метод зависит от них.

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

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

Важно проверить:

  • включён ли метод оплаты;
  • поддерживает ли он валюту магазина;
  • поддерживает ли он страну покупателя;
  • правильные ли API keys;
  • не перепутаны ли test/live ключи;
  • настроен ли webhook;
  • работает ли SSL;
  • нет ли ограничений по сумме заказа;
  • не блокирует ли security-плагин запросы шлюза;
  • есть ли ошибки в логах платёжного плагина.

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

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

Проверьте:

  • WooCommerce → Status → Templates;
  • есть ли outdated templates;
  • файлы в папке темы /woocommerce/checkout/;
  • checkout/form-checkout.php;
  • checkout/payment.php;
  • review-order.php;
  • совместимость темы с текущей версией WooCommerce.

8. Проверьте checkout shortcode и checkout blocks

В WooCommerce могут использоваться разные варианты checkout: классический shortcode и блоки Checkout. Некоторые платёжные плагины, темы и кастомные доработки работают только с одним вариантом.

Классическая checkout-страница обычно содержит:

[woocommerce_checkout]

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

9. Проверьте конфликт плагинов

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

Особенно часто checkout ломают:

  • кеш-плагины;
  • плагины оптимизации JavaScript;
  • security-плагины;
  • плагины полей checkout;
  • плагины доставки;
  • плагины оплаты;
  • плагины мультиязычности;
  • плагины валют;
  • page builders;
  • кастомные сниппеты в functions.php.

10. Проверьте email после заказа

Иногда заказ оформляется, но владелец магазина думает, что он не оформился, потому что не пришло письмо. Проверьте список заказов в админке. Если заказ есть, а email нет, это отдельная проблема отправки писем.

Для диагностики используйте статью Не отправляются письма WordPress: причины и как исправить.

Код

Важно: код ниже может повлиять на checkout, заказы, оплату, сессии, кеш и диагностику ошибок WooCommerce. Перед добавлением сделайте backup. Не используйте временные диагностические сниппеты постоянно на рабочем магазине.

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

Куда вставлять: wp-config.php, перед строкой /* That’s all, stop editing! Happy publishing. */.

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);

После теста checkout проверьте:

/wp-content/debug.log

Проверить активные плагины через WP-CLI

Куда запускать: SSH в корневой папке WordPress.

wp plugin list --status=active

Отключить все плагины кроме WooCommerce для теста

Используйте только на staging-копии или во время технического окна.

wp plugin deactivate --all
wp plugin activate woocommerce

Проверить страницы WooCommerce

Куда запускать: SSH через WP-CLI.

wp option get woocommerce_cart_page_id
wp option get woocommerce_checkout_page_id
wp option get woocommerce_myaccount_page_id
wp option get woocommerce_terms_page_id

Проверить, есть ли checkout shortcode на странице

Замените ID на ID checkout-страницы.

wp post get 123 --field=post_content

Очистить истёкшие транзиенты

Перед массовой очисткой сделайте backup. Не запускайте во время активных заказов и нагрузочных операций.

wp transient delete --expired

Очистить WooCommerce transients через WP-CLI

Если команда доступна в вашей версии WooCommerce:

wp wc tool run clear_transients --user=1

Проверить cron-задачи WooCommerce

wp cron event list | grep woocommerce

Логировать ошибки валидации checkout

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

add_action('woocommerce_after_checkout_validation', function ($data, $errors) {
    if (!is_wp_error($errors)) {
        return;
    }

    $error_messages = $errors->get_error_messages();

    if (empty($error_messages)) {
        return;
    }

    error_log('WooCommerce checkout validation errors: ' . implode(' | ', $error_messages));
}, 10, 2);

Запретить кеширование checkout через PHP-заголовки

Куда вставлять: functions.php дочерней темы или отдельный мини-плагин. Это страховка, но основное исключение checkout нужно делать в настройках кеш-плагина, сервера и CDN.

add_action('send_headers', function () {
    if (!function_exists('is_checkout') || !is_checkout()) {
        return;
    }

    nocache_headers();
});

Результат

После правильной диагностики нужно получить не просто рабочую кнопку “Оформить заказ”, а понятную причину сбоя.

Хороший результат выглядит так:

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

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

Проверить SSL

Страница checkout должна открываться по HTTPS. Если SSL настроен неправильно, платёжные шлюзы могут не работать, браузер может блокировать запросы, а покупатели увидят предупреждения безопасности.

Проверьте:

  • checkout открывается через https://;
  • нет mixed content;
  • сертификат действителен;
  • адрес сайта в WordPress указан с HTTPS;
  • платёжный шлюз видит корректный callback/webhook URL.

Проверить webhook платёжного шлюза

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

Проверьте:

  • правильный webhook URL;
  • секрет webhook;
  • доступность URL без блокировки WAF;
  • логи платёжного сервиса;
  • логи WooCommerce;
  • не блокирует ли security-плагин внешние POST-запросы.

Проверить checkout поля

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

Проверьте:

  • обязательные поля;
  • скрытые поля;
  • маски телефона;
  • валидацию email;
  • кастомные поля доставки;
  • ошибки JavaScript при заполнении.

Проверить географию доставки и оплаты

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

Проверить сессии и cookies

WooCommerce использует сессии и cookies для корзины. Если cookies блокируются, кешируются или очищаются, покупатель может видеть пустую корзину или не сможет завершить checkout.

Проверьте:

  • cookies WooCommerce;
  • настройки cookie consent-плагина;
  • CDN-кеш;
  • server cache;
  • object cache;
  • мультиязычные URL;
  • редиректы с www на non-www или наоборот.

Проверить HPOS и совместимость плагинов

Если на сайте включён High-Performance Order Storage, убедитесь, что плагины оплаты, доставки, экспорта, CRM и отчётов совместимы с текущей схемой хранения заказов.

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

Кешировать checkout

Checkout нельзя кешировать как обычную страницу. Это одна из самых частых причин пустой корзины, зависания кнопки и ошибок оплаты.

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

Так можно остановить продажи. Лучше тестировать на staging-копии или в техническое окно.

Игнорировать WooCommerce Logs

В логах часто уже есть точная причина: ошибка API, webhook, fatal error, cURL, неверный ключ, отклонённый платёж или проблема с доставкой.

Проверять только админку

Ошибка checkout часто видна только глазами покупателя: в браузере, Console, Network, cookies и сценарии оплаты.

Смешивать test и live режимы

Если ключи test вставлены в live-режим или наоборот, оплата может не проходить, хотя визуально метод оплаты отображается.

Удалять заказы при диагностике

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

Не проверять тему

Устаревшие шаблоны checkout в теме могут ломать оформление заказа даже при правильно настроенном WooCommerce.

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

Кнопка “Оформить заказ” не работает

  • Откройте Console и проверьте JavaScript-ошибки.
  • Проверьте Network-запрос после клика.
  • Отключите defer/delay JS для checkout.
  • Проверьте тему на стандартной теме WordPress.
  • Проверьте конфликт плагинов.
  • Проверьте checkout blocks или shortcode.

Checkout крутится бесконечно

  • Проверьте admin-ajax.php и wc-ajax в Network.
  • Проверьте код ответа 403/500.
  • Проверьте security-плагин и WAF.
  • Проверьте WooCommerce Logs.
  • Проверьте debug.log.
  • Отключите кеш checkout.

Не отображается доставка

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

Не отображается оплата

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

Заказ создаётся со статусом Failed

  • Откройте заметки заказа.
  • Проверьте WooCommerce Logs.
  • Проверьте логи платёжного шлюза.
  • Проверьте API keys.
  • Проверьте webhook.
  • Проверьте 3D Secure или подтверждение платежа.

Заказ оформился, но письмо не пришло

  • Проверьте WooCommerce → Настройки → Emails.
  • Проверьте статус заказа.
  • Проверьте SMTP.
  • Проверьте папку “Спам”.
  • Проверьте wp_mail_failed.
  • Проверьте логи отправки писем.

Checkout сломался после обновления

  • Проверьте, что именно обновлялось.
  • Проверьте WooCommerce Status.
  • Проверьте outdated templates.
  • Проверьте debug.log.
  • Отключите обновлённый плагин на staging.
  • Проверьте совместимость с PHP и WooCommerce.

Краткие AI-friendly ответы

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

Чаще всего из-за кеша checkout, JavaScript-ошибки, проблем admin-ajax.php/REST API, неправильной настройки оплаты или доставки, конфликта плагинов, устаревших шаблонов темы или ошибки в логах WooCommerce.

Что делать, если кнопка “Оформить заказ” не работает?

Проверьте Console и Network в браузере, отключите оптимизацию JS для checkout, исключите checkout из кеша, проверьте тему, плагины, WooCommerce Logs и платёжный шлюз.

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

Причина обычно в платёжном шлюзе: неверные API keys, test/live режим, webhook, 3D Secure, SSL, валюта, страна покупателя или ошибка на стороне платёжного сервиса.

Почему WooCommerce пишет, что нет способов доставки?

Для адреса покупателя не настроена зона доставки, метод доставки скрыт условиями, товар имеет неподходящий класс доставки, не заполнены вес/габариты или плагин доставки возвращает ошибку.

FAQ

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

Чаще всего кнопку блокирует JavaScript-ошибка, кеш, security-плагин, ошибка AJAX/REST API, платёжный шлюз или устаревший шаблон checkout в теме.

Где смотреть ошибки WooCommerce checkout?

Проверьте WooCommerce → Status → Logs, заметки проблемного заказа, debug.log, Console и Network в браузере, а также логи платёжного сервиса.

Можно ли кешировать страницу checkout?

Нет. Checkout, корзина и личный кабинет должны быть исключены из page cache и CDN-кеша. Иначе могут ломаться сессии, корзина, доставка и оплата.

Почему checkout работает в тестовом режиме, но не работает в live?

Обычно причина в live API keys, webhook, SSL, настройках платёжного аккаунта, ограничениях страны/валюты, 3D Secure или блокировке запросов security-плагином.

Что делать, если не приходят письма о заказе?

Сначала проверьте, создаётся ли заказ в админке. Если заказ есть, проблема не в checkout, а в email-отправке WooCommerce, SMTP или статусе заказа.

Почему не отображается кнопка “Оформить заказ”?

Кнопку может скрывать тема, кастомный CSS, устаревший шаблон payment.php, конфликт checkout blocks, плагин оплаты или ошибка JavaScript.

Что лучше использовать: checkout shortcode или checkout block?

Если платёжный шлюз, тема или кастомная доработка не поддерживает Checkout Block, лучше временно использовать классический shortcode [woocommerce_checkout] и протестировать оформление заказа.

Нужно ли отключать все плагины для диагностики?

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

Нужна помощь?

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

Вывод

Если WooCommerce не оформляет заказ, причина почти всегда находится в одной из точек checkout-цепочки: кеш, JavaScript, AJAX/REST API, доставка, оплата, платёжный шлюз, тема, шаблоны, плагины или серверные ошибки. Правильный порядок — backup, проверка WooCommerce Logs, Console, Network, исключение checkout из кеша, проверка доставки и оплаты, тест на стандартной теме и поиск конфликтов. Так можно восстановить оформление заказа без риска потерять реальные продажи.

Об авторе

vkuzyomko administrator