Диагностика проблемы с оплатой Яндекс.Кассой после обновления WooCommerce
После обновления WooCommerce или плагина Яндекс.Кассы (ЮKassa) могут возникнуть ошибки при попытке оплаты: платежи не проходят, возвращается ошибка или страница оплаты зависает. Для начала нужно понять, где именно сбой – в интеграции плагина, на стороне Яндекс.Кассы или в WooCommerce.
- Проверьте логи платежей в WooCommerce и в плагине Яндекс.Кассы (обычно в WooCommerce > Статус > Логи).
- Убедитесь, что ключи API Яндекс.Кассы актуальны и не изменились после обновления.
- Обратите внимание на ошибки JavaScript в консоли браузера во время оплаты.
- Проверьте, не конфликтует ли плагин с другими плагинами или темой.
Основные признаки проблем
- Платеж не проходит, и пользователь видит ошибку с кодом 400 или 500.
- Не происходит перенаправление на страницу оплаты Яндекс.Кассы.
- Платеж проходит, но заказ в WooCommerce не меняет статус.
Пошаговое решение: как исправить сбои оплаты
1. Проверка и обновление плагина Яндекс.Кассы
Убедитесь, что установлен последний релиз плагина ЮKassa, совместимый с текущей версией WooCommerce. Если плагин не обновлен, выполните обновление через админку WordPress или вручную.
2. Проверка и корректировка настроек API
Перейдите в WooCommerce > Настройки > Платежи > ЮKassa и перепроверьте следующие параметры:
- Идентификатор магазина (Shop ID)
- Секретный ключ (Secret key)
- Callback URL (URL уведомлений)
Если вы обновляли API ключи в кабинете Яндекс.Кассы, обновите их и в настройках плагина.
3. Включение отладки логов платежей
Чтобы получить подробные логи, активируйте опцию отладки в настройках платежного шлюза. Это позволит просмотреть детальную информацию о каждом запросе к API Яндекс.Кассы.
4. Проверка URL callback и webhook
Убедитесь, что URL для уведомлений о платеже (webhook) корректно прописан в кабинете Яндекс.Кассы и совпадает с URL, указанным в плагине. Плагин обычно предоставляет его в настройках.
5. Проверка конфликтов с плагинами
Отключите все сторонние плагины, кроме WooCommerce и Яндекс.Кассы, и попробуйте провести оплату. Если проблема исчезла, включайте плагины по одному, чтобы выявить конфликтующий.
6. Проверка темы
Активируйте стандартную тему WordPress (например, Twenty Twenty-Two) и проверьте оплату. Если заработало – проблема в теме, требуется отладка JavaScript или PHP.
7. Обновление PHP и CURL
Проверьте версию PHP на сервере (рекомендуется не ниже 7.4) и наличие расширения CURL. Яндекс.Касса использует CURL для API-запросов, отсутствие или устаревшая версия может вызвать сбои.
php -v
php -m | grep curl
curl --version
Проверка результата после внедрения решений
- Попробуйте сделать тестовый заказ с оплатой через Яндекс.Кассу в режиме тестирования (sandbox).
- Проверьте, что заказ меняет статус после успешной оплаты.
- Убедитесь, что в логах не появляются ошибки.
- Проверьте уведомления на email покупателя и администратора.
Частые ошибки и как их исправить
- Неверные API ключи или Shop ID: Плагин не может связаться с сервисом, ошибка 401 Unauthorized. Решение – проверить и обновить ключи.
- Некорректный URL callback: Платеж проходит, но WooCommerce не получает уведомление. Решение – правильно прописать URL в кабинете Яндекс.Кассы и в настройках плагина.
- Конфликт JS в теме или плагинах: Кнопка оплаты не реагирует или страница зависает. Решение – отладить консоль браузера, отключить плагины, сменить тему на дефолтную.
- Отсутствие CURL или устаревший PHP: Ошибки на серверной стороне, платеж не проходит. Решение – обновить PHP и установить CURL.
Практические советы по безопасности и производительности
- Используйте HTTPS на сайте и в callback URL для защиты данных платежей.
- Регулярно обновляйте WooCommerce и плагин Яндекс.Кассы для закрытия уязвимостей.
- Ограничьте доступ к административной панели по IP, чтобы снизить риски взлома.
- Настройте кеширование страниц, исключая страницы оплаты и корзины, чтобы избежать проблем с динамическим контентом.
- Для тестирования платежей используйте sandbox-режим Яндекс.Кассы, чтобы не создавать реальные транзакции.
Сравнение способов интеграции Яндекс.Кассы в WooCommerce
| Способ интеграции | Преимущества | Недостатки |
|---|---|---|
| Официальный плагин от ЮKassa | Актуальные обновления, поддержка 3D Secure и новых методов оплаты, настройка через админку | Зависимость от обновлений, возможные конфликты с другими плагинами |
| Сторонние плагины | Могут быть проще или иметь дополнительные функции | Риск отсутствия поддержки, устаревание, проблемы с безопасностью |
| Самописная интеграция через API | Полный контроль, кастомизация под уникальные задачи | Требует глубоких знаний, больше времени на разработку и сопровождение |
Пример кода: дополнительная проверка статуса оплаты через хук WooCommerce
add_action('woocommerce_order_status_processing', 'check_yandex_payment_status');
function check_yandex_payment_status($order_id) {
$order = wc_get_order($order_id);
// Проверяем, что метод оплаты - Яндекс.Касса
if ($order->get_payment_method() !== 'yandex_checkout') {
return;
}
// Пример дополнительной логики проверки через API ЮKassa
$payment_id = $order->get_transaction_id();
if (!$payment_id) {
error_log('Нет ID транзакции для заказа ' . $order_id);
return;
}
// Здесь должна быть реализация запроса к API ЮKassa для проверки статуса платежа
// Например, curl запрос с ключами и анализ ответа
// Если статус не подтвержден - меняем статус заказа
}
Чек-лист для отладки проблем с оплатой Яндекс.Кассой
- Проверить актуальность и корректность API ключей и Shop ID.
- Убедиться, что callback URL настроен правильно и доступен.
- Включить отладочные логи и изучить ошибки.
- Проверить версию PHP и наличие CURL.
- Отключить конфликтующие плагины и сменить тему для теста.
- Провести тестовую оплату в sandbox режиме.
- Проверить консоль браузера на ошибки JavaScript.
- Обновить плагин Яндекс.Кассы и WooCommerce до последних версий.