Диагностика проблем совместимости WooCommerce с кассовыми системами
При интеграции WooCommerce с онлайн-кассами (например, с 1С-Рарус, МойСклад, Атол Онлайн) часто возникают ошибки: дублирование чеков, неверные суммы в фискальных документах, сбои при отправке данных в ОФД. Для диагностики сначала проверьте логи ошибок WooCommerce и кассового плагина в wp-content/debug.log или в настройках плагина.
Проверьте, включена ли в WordPress опция WP_DEBUG в файле wp-config.php, чтобы видеть подробности ошибок:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Также проверьте, не дублирует ли функционал кассовый плагин другие плагины, связанные с платежами или заказами.
Проверка конфигурации кассового плагина
Убедитесь, что версия плагина совместима с вашей версией WooCommerce и WordPress. В настройках плагина обратите внимание на режимы отправки чеков (синхронный/асинхронный), типы платежей и статусы заказов, которые передаются в кассу.
Пошаговое решение: настройка без конфликтов
1. Отключите лишние плагинные обработчики заказов
Если у вас несколько плагинов, связанных с оплатами или заказами, временно отключите все, кроме WooCommerce и плагина кассовой системы. Это поможет выявить источник конфликта.
2. Используйте хуки WooCommerce для корректной отправки данных
Для интеграции кассовой системы рекомендуется использовать хук woocommerce_order_status_completed, чтобы отправлять данные чека только после подтверждения оплаты:
add_action('woocommerce_order_status_completed', 'send_order_to_kassa_system', 10, 1);
function send_order_to_kassa_system($order_id) {
$order = wc_get_order($order_id);
if (!$order) return;
// Ваш код отправки данных в кассу
}3. Настройте уникальные идентификаторы заказов
Для исключения дублирования чеков важно, чтобы касса получала уникальный номер заказа. В WooCommerce это ID заказа, но некоторые кассовые системы требуют кастомные идентификаторы. В этом случае добавьте мета-поле с уникальным ключом, например:
add_action('woocommerce_checkout_update_order_meta', 'add_unique_kassa_id');
function add_unique_kassa_id($order_id) {
update_post_meta($order_id, '_kassa_unique_id', uniqid('kassa_'));
}4. Настройте правильные статусы заказов для отправки чеков
В некоторых кассовых плагинах можно указать, на какие статусы заказов происходит отправка фискальных документов. Рекомендуется ограничиться статусом completed или processing, чтобы избежать отправки чеков для отмененных или возвратных заказов.
Проверка результата после внедрения
Чтобы проверить, что интеграция работает корректно:
- Создайте тестовый заказ с реальным или тестовым платежом.
- Проверьте, что чек отправился в кассу (обычно в логе плагина или в личном кабинете кассового сервиса).
- Убедитесь, что сумма и товары совпадают с заказом WooCommerce.
- Проверьте, что не создается дублирующих чеков при смене статусов заказа.
Частые ошибки и как их исправить
- Дублирование чеков: Обычно из-за нескольких обработчиков отправки чека. Решение — использовать только один хук для отправки и отключить остальные.
- Неверные суммы в чеке: Ошибка в вычислении стоимости с учетом налогов и скидок. Проверьте, что в коде используются функции WooCommerce для получения итоговой суммы:
$order->get_total(), а не собственные вычисления. - Чек не отправляется при смене статуса: Проверьте, что используемый хук соответствует нужному статусу. Например,
woocommerce_order_status_completedсработает только при переходе в статус completed. - Ошибка авторизации в кассовом сервисе: Проверьте API-ключи и настройки подключения в плагине кассовой системы.
Практические советы по безопасности и производительности
- Не храните API-ключи кассовых систем в открытом виде в коде. Используйте
defineвwp-config.phpили защищенные опции. - Для отправки данных используйте асинхронные запросы (wp_remote_post с таймаутом и повтором), чтобы не блокировать оформление заказа.
- Регулярно обновляйте плагины кассовых систем и WooCommerce, чтобы избежать уязвимостей и несовместимостей.
- Логируйте запросы к кассе в отдельный файл для отладки, но не оставляйте логи включенными постоянно во избежание утечки данных.
Сравнение способов интеграции WooCommerce с кассой
| Метод | Плюсы | Минусы |
|---|---|---|
| Готовый плагин кассовой системы | Быстрая настройка, поддержка, обновления | Может конфликтовать с другими плагинами, зависит от разработчика |
| Кастомный код на хуках WooCommerce | Точная настройка, минимальные зависимости | Требует навыков программирования, поддержка на вас |
| Внешний сервис с вебхуками WooCommerce | Автоматизация, масштабируемость | Задержки в отправке, сложность настройки |