Краткий ответ: если не работает оплата WooCommerce, сначала нужно понять, где именно ломается процесс: на checkout, при выборе способа оплаты, после нажатия кнопки “Оформить заказ”, при переходе на платёжную страницу, после успешной оплаты или при возврате статуса заказа. Чаще всего причина в настройках платёжного шлюза, webhook/callback, SSL, кешировании checkout, JavaScript-ошибке, WAF/ModSecurity, конфликте плагинов, валюте, статусах заказов, PHP-ошибке или блокировке AJAX-запросов.
Оплата WooCommerce может визуально “не работать” по-разному: кнопка не нажимается, способ оплаты не отображается, заказ не создаётся, клиент не переходит на платёжную страницу, банк списывает деньги, но заказ остаётся “В ожидании оплаты”, callback не приходит, webhook падает с ошибкой или checkout зависает на спиннере.
Главная ошибка — сразу менять платёжный плагин или отключать все плагины на рабочем магазине. Сначала нужно проверить checkout, логи WooCommerce, Network в браузере, настройки платёжной системы, callback/webhook URL, кеш, SSL, WAF и статус заказа. Если проблема связана с логикой магазина или платёжной интеграцией, чаще нужна точечная доработка WooCommerce, а не случайные правки.
Оплата в WooCommerce зависит сразу от нескольких частей: страницы checkout, корзины, сессий, JavaScript, платёжного шлюза, статусов заказа, email-уведомлений, callback/webhook, SSL, сервера и внешней платёжной системы.
Поэтому проблема может быть не в WooCommerce как таком, а в одном звене цепочки. Например, оплата проходит на стороне LiqPay, WayForPay, Stripe, PayPal или другого сервиса, но WooCommerce не получает подтверждение и оставляет заказ в статусе “Pending payment”.
| Симптом | Возможная причина | Что проверить |
|---|---|---|
| Способ оплаты не отображается | валюта, страна, доставка, настройки шлюза | Payment methods, zones, currency, gateway settings |
| Кнопка оплаты не нажимается | JavaScript-ошибка, тема, кеш, конфликт плагина | Console, Network, checkout scripts |
| Checkout зависает | wc-ajax, PHP-ошибка, slow server, WAF | Network, debug.log, WooCommerce logs |
| Заказ не создаётся | ошибка checkout, обязательные поля, сессии | checkout fields, cookies, sessions |
| Деньги списались, заказ Pending payment | не пришёл webhook/callback | логи платёжной системы, callback URL |
| После оплаты клиент видит ошибку | return URL, thank you page, редирект, кеш | order-received, redirects, SSL |
| Оплата работает в тесте, но не в live | неверные live-ключи, режим песочницы | API keys, merchant ID, live/test mode |
| Оплата не работает после обновления | конфликт версии плагина, PHP, WooCommerce | changelog, debug.log, plugins |
Если проблема начинается ещё до оплаты и заказ вообще не оформляется, сначала проверьте статью WooCommerce не оформляет заказ: причины и как исправить checkout. Если проблема именно в LiqPay или WayForPay, полезно отдельно проверить подключение LiqPay / WayForPay к WooCommerce.
Диагностику оплаты нужно делать по шагам: от интерфейса checkout к серверным логам и платёжной системе. Важно не просто увидеть “оплата не работает”, а определить точку поломки.
Сделайте тестовый заказ и посмотрите, появляется ли он в WooCommerce → Заказы.
Откройте проблемный заказ и посмотрите блок примечаний. WooCommerce и платёжные плагины часто пишут туда важные сообщения.
Ищите такие признаки:
В админке откройте:
WooCommerce → Статус → Журналы
Выберите лог платёжного шлюза, например Stripe, PayPal, LiqPay, WayForWay, Fondy, Mono, Portmone или другой используемый модуль.
В логах могут быть:
Откройте DevTools → Console и Network, затем повторите оформление заказа.
Проверьте:
В WooCommerce откройте:
WooCommerce → Настройки → Платежи
Проверьте каждый включённый способ оплаты:
Если клиент оплатил, но заказ не меняет статус, почти всегда нужно смотреть webhook/callback. Платёжная система должна отправить серверу магазина подтверждение оплаты.
Проверьте:
Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.
Исправление зависит от того, где ломается оплата. Ниже безопасный порядок: сначала checkout и настройки, потом логи, потом webhook/callback, потом плагины, тема и сервер.
Начните с простого. Часто оплата не работает из-за выключенного метода, неверной валюты или тестового режима.
Checkout, корзина, кабинет, wc-ajax и callback/webhook нельзя кешировать как обычные страницы. Агрессивный кеш может ломать сессии, nonce, корзину, оплату и обновление статусов.
Исключите из кеша:
Если кнопка оплаты не работает или checkout зависает, проверьте Console. Одна JS-ошибка темы, конструктора, аналитики или плагина может остановить checkout.
Если деньги списались, но заказ не обновился, откройте кабинет платёжной системы и найдите журнал webhook/callback.
Нужно понять:
Платёжные callback-запросы часто приходят как POST-запросы с JSON, подписью, токеном или нестандартными параметрами. WAF может принять их за подозрительные.
Если оплата сломалась после обновления, установки нового плагина или изменения темы, проверьте конфликт.
Важно: код и команды ниже могут повлиять на checkout, оплату, заказы, статусы, callback, сессии, безопасность и работу магазина. Перед изменениями сделайте backup. На рабочем магазине лучше тестировать на staging-копии.
Куда вставлять: файл wp-config.php, выше строки “That’s all, stop editing”.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
После тестовой оплаты проверьте:
/wp-content/debug.log
Откройте DevTools → Network и проверьте запрос:
?wc-ajax=checkout
Если он возвращает 403, 500, 502 или 504, проблема может быть в WAF, PHP-ошибке, плагине, теме, сервере или долгом обработчике.
Куда вставлять: временно в functions.php дочерней темы или отдельный мини-плагин. После диагностики удалить.
add_filter('woocommerce_available_payment_gateways', function ($gateways) {
if (function_exists('wc_get_logger')) {
$logger = wc_get_logger();
$logger->info(
'Available payment gateways: ' . implode(', ', array_keys($gateways)),
array('source' => 'sc-payment-debug')
);
}
return $gateways;
});
После открытия checkout проверьте:
WooCommerce → Статус → Журналы → sc-payment-debug
Куда выполнять: SSH в корне сайта. Замените 123 на ID заказа.
wp post get 123 --field=post_status
Куда выполнять: SSH в корне сайта.
wp post meta list 123
Ищите payment method, transaction ID, gateway response и похожие поля. Не меняйте мета-данные вручную без понимания логики платёжного шлюза.
На некоторых сайтах логи находятся в папке:
/wp-content/uploads/wc-logs/
Если папка закрыта от чтения снаружи — это нормально. Смотреть её нужно через хостинг, FTP или админку WooCommerce.
Куда выполнять: терминал или SSH. Проверяйте только доступность URL, не имитируйте реальный платёж без документации шлюза.
curl -I https://example.com/wc-api/payment-callback/
Для webhook/callback платёжный сервис обычно ждёт быстрый корректный HTTP-ответ. Если URL отдаёт 403, 404, 500, редирект или timeout, статус заказа может не обновиться.
После правильного исправления оплата WooCommerce должна проходить весь путь: клиент оформляет заказ, выбирает способ оплаты, переходит к оплате, платёжная система принимает деньги, callback/webhook возвращается на сайт, WooCommerce обновляет статус заказа и создаёт понятные примечания.
Хороший результат:
Многие платёжные плагины имеют test mode и live mode. Ошибка возникает, когда магазин работает в live, а ключи вставлены тестовые, или наоборот.
Некоторые шлюзы не поддерживают определённую валюту или требуют, чтобы валюта магазина совпадала с настройками merchant-аккаунта.
Для оплаты сайт должен работать по HTTPS. Если SSL настроен неправильно, платёжный шлюз может отклонять callback или браузер может блокировать часть checkout.
Платёжные URL чувствительны к редиректам. Проверьте цепочки http → https, www → без www, языковые версии, trailing slash, редиректы SEO-плагинов и Cloudflare.
Иногда оплата работает, но владелец думает, что она сломалась, потому что письма WooCommerce не приходят. В таком случае нужно проверять SMTP и email-логи отдельно.
Некоторые платёжные плагины используют отложенные задачи. Если Action Scheduler застрял, статусы и уведомления могут обновляться с задержкой.
Checkout, cart, my-account, wc-ajax и callback URL нельзя кешировать как обычные страницы. Это может ломать оплату, сессии и статусы заказов.
В WooCommerce может быть мало информации. Часто точная причина видна именно в кабинете платёжного сервиса: failed webhook, invalid signature, timeout, SSL error.
Это может сломать доставку, оплату, заказы, письма, CRM, склад и аналитику. Для диагностики лучше использовать staging-копию.
Для физических товаров WooCommerce часто ставит Processing после успешной оплаты. Completed обычно означает, что заказ выполнен, а не просто оплачен.
Если checkout JS сломан, запрос к оплате может вообще не отправляться. Console и Network нужно проверять обязательно.
Если деньги списаны, но заказ Pending payment, почти всегда нужно смотреть подтверждение от платёжной системы.
После обновления правки пропадут. Лучше использовать hooks, отдельный мини-плагин или нормальную доработку.
Возможная причина: метод отключён, не подходит валюта, страна, зона доставки, сумма заказа или настройки шлюза.
Что делать: проверить WooCommerce → Настройки → Платежи, валюту, зоны доставки, ограничения шлюза и доступные payment gateways.
Возможная причина: JavaScript-ошибка, кеш, тема, конфликт плагина, reCAPTCHA или checkout validation.
Что делать: открыть Console и Network, проверить wc-ajax checkout, отключить оптимизацию JS для checkout.
Возможная причина: WooCommerce не получил webhook/callback от платёжной системы.
Что делать: проверить логи платёжного сервиса, callback URL, WooCommerce logs, WAF, SSL и кеш.
Возможная причина: ошибка шлюза, неверная подпись, несовпадение суммы, валюта, отказ банка или ошибка API.
Что делать: открыть order notes, WooCommerce logs и журнал транзакций в платёжной системе.
Возможная причина: оплата прошла, но email WooCommerce не отправился или попал в спам.
Что делать: проверить статус заказа, SMTP, WooCommerce email settings и логи отправки.
Возможная причина: кеш, роли, cookies, сессии, отключенные скрипты для гостей, security-плагин.
Что делать: тестировать в режиме инкогнито, проверить кеш, сессии, wc-ajax и доступность payment gateway для гостей.
Возможная причина: WAF, ModSecurity, Cloudflare, security-плагин, IP-блокировка или защита wp-admin/wc-api.
Что делать: проверить firewall logs, время события, IP платёжной системы и сделать точечное исключение для callback.
Возможная причина: медленный payment API, тяжёлый плагин доставки, внешний HTTP-запрос, admin-ajax, wc-ajax или перегруженный сервер.
Что делать: проверить Network Timing, WooCommerce logs, Query Monitor, server logs и внешние API.
Чаще всего из-за настроек платёжного шлюза, checkout-ошибки, webhook/callback, кеша, SSL, WAF, JavaScript, PHP Fatal error, валюты, статусов заказов или конфликта плагинов.
Сделайте тестовый заказ, проверьте статус заказа, order notes, WooCommerce logs, Console, Network, настройки платежей, callback/webhook и кеш checkout.
Обычно платёжная система не смогла передать подтверждение оплаты в WooCommerce через webhook/callback, либо запрос был заблокирован кешем, WAF, SSL, сервером или плагином.
Метод может быть отключён, не поддерживать валюту, страну, сумму заказа, зону доставки или конфликтовать с настройками WooCommerce и плагинами.
Возможен конфликт новой версии WooCommerce, платёжного плагина, темы, PHP, кеша или JavaScript. Нужно проверить debug.log, WooCommerce logs, Console и временно протестировать на staging-копии.
Проверьте логи платёжной системы, webhook/callback, order notes, статус заказа, transaction ID и WooCommerce logs. Чаще всего WooCommerce не получил подтверждение оплаты.
Это значит, что заказ создан, но WooCommerce ещё не получил подтверждение оплаты. Причина может быть в webhook, callback, ошибке платёжного шлюза или незавершённой оплате.
Не все оплаченные заказы автоматически становятся Completed. Для физических товаров WooCommerce часто ставит Processing, а Completed используется после выполнения заказа.
Обычно из-за JavaScript-ошибки, wc-ajax checkout, PHP Fatal error, WAF, медленного сервера, конфликта плагина или внешнего платёжного API.
Да, checkout, cart, my-account, wc-ajax и callback URL нужно исключать из кеша. Эти страницы и запросы динамические.
Его может блокировать WAF, Cloudflare, security-плагин, SSL-ошибка, редирект, кеш, firewall или неверный URL в настройках платёжной системы.
Проверьте его логи, версию, совместимость с WooCommerce и PHP, настройки live/test, ключи API, callback URL и ошибки в debug.log.
Часто причина в неверных live-ключах, merchant ID, домене, callback URL, валюте, неподтверждённом аккаунте платёжной системы или SSL.
Если деньги списываются, а заказы не обновляются, checkout зависает, callback блокируется, есть ошибки 403/500, магазин получает реальные заказы или нет staging-копии, лучше не чинить оплату наугад.
Если не работает оплата WooCommerce, нужно сначала определить точку сбоя: checkout, создание заказа, переход к платёжной системе, списание денег, callback/webhook, обновление статуса или отправка писем.
Чаще всего проблема находится в настройках платёжного шлюза, webhook/callback, кешировании checkout, SSL, WAF/ModSecurity, JavaScript, PHP-ошибке, конфликте плагинов, валюте, статусах заказов или серверных ограничениях.
Самый безопасный порядок: backup, тестовый заказ, order notes, WooCommerce logs, Console, Network, проверка gateway settings, callback/webhook, кеша, WAF, SSL и debug.log. Так можно восстановить оплату без лишнего риска для заказов, клиентов и денег.
Об авторе