Услуги Создание магазина Доработка Интеграция 1С О компании FAQ Блог Кейсы Отзывы Контакты
А
Автор статьи

Не работает кнопка оформления заказа в OpenCart

Да, кнопка «Оформить заказ» в OpenCart может перестать работать по куче причин. И это всегда срочно — каждый час простоя = потерянные деньги. За 17 лет я продвижения интернет-магазинов натыкался на этот глюк в самых неожиданных местах: от кривого модуля до настроек PHP на сервере. Разберём по шагам, что делать, чтобы买家 снова мог платить.

Первое и главное: не паниковать и не переустанавливать OpenCart. В 90% случаев проблема решается отключением одного модуля или правкой пары строк. Нужна срочная помощь? Закажите техподдержку — возимся с OpenCart с 2009 года.

Шаг 1. Проверьте консоль браузера — там будет причина

А что делать, если кнопка оформления заказа просто не реагирует на клик? Первым делом открываете консоль разработчика (F12 → Console) и смотрите красные ошибки. Если там всплывает Uncaught TypeError или undefined is not a function — это классический JS-конфликт между модулями.

По моей практике, в 70% случаев проблема именно в JavaScript. Особенно если недавно ставили новый модуль — модули переопределяют один и тот же файл checkout.js, и последний установленный просто затирает чужой код. Подробнее об этом в нашей статье про опасность лишних модулей.

Шаг 2. Отключайте модули по одному

А что делать, если в консоли пусто, но кнопка всё равно не работает? Идёте в админку: Extensions → Extensions → Modules и отключаете модули, связанные с оформлением заказа — оплата, доставка, сам checkout. Отключаете по одному, после каждого проверяете кнопку.

Самый частый виновник — модули «Ускорение сайта», «Ленивая загрузка» или кэширование HTML. Они часто переопределяют checkout.js или добавляют свои скрипты, которые ломают стандартное событие submit. Я в одном проекте полдня искал проблему — оказалось, модуль минификации JS склеивал файлы в неправильном порядке.

Шаг 3. Проверьте сессию и корзину

А что делать, если кнопка оформления не работает только у некоторых покупателей? Скорее всего, проблема с сессией. OpenCart хранит данные корзины в сессии, а если сессия не сохраняется (например, из-за неправильных прав на папку system/storage/session/), кнопка блокируется.

Проверьте права на папки: chmod 755 system/storage/session/. Если там стоит 777 — хостинг мог сбросить права после обновления PHP. И проверьте system/storage/modification/ — кэш модификаций иногда хранит старые версии файлов оформления.

Бывает и такое: покупатель добавляет товар в корзину, переходит на другой раздел сайта, возвращается — корзина пуста. И кнопка, естественно, не работает. Это уже проблема с токеном сессии, лечится правкой config.php.

Шаг 4. Проверьте модуль оплаты

А что делать, если кнопка есть, но при нажатии ничего не происходит, хотя форма заполнена? Модуль оплаты не возвращает статус подтверждения — и OpenCart блокирует отправку формы. Это частая проблема с самописными или старыми модулями оплаты, которые не обновляли под PHP 8.x.

Временно переключите оплату на «Оплата при получении» (COD) — если кнопка заработала, значит, проблема в модуле оплаты. Свяжитесь с разработчиком модуля или закажите доработку модуля оплаты под текущую версию OpenCart.

Шаг 5. Проверьте файлы темы оформления

А что делать, если кнопка не работает только в кастомном шаблоне, а в дефолтном — всё ок? Сравните файлы оформления заказа: catalog/view/theme/YOUR_THEME/template/checkout/. Часто в кастомных темах правят checkout.tpl или checkout_form.tpl и случайно ломают обработку события.

Самый надёжный способ: временно включите дефолтный шаблон OpenCart. Если кнопка заработала — проблема в вашей теме. Если нет — ищем дальше. Держите под рукой гайд по безопасному обновлению OpenCart — он пригодится, если решите обновлять файлы.

Кейс из практики: секс-шоп с мёртвой кнопкой

А что произошло в реальном проекте и как мы это чинили? Приходит клиент — секс-шоп на OpenCart 2.3, кнопка оформления заказа не работает ТРИ ДНЯ. За это время они потеряли примерно 120–150 тысяч рублей. Паника, крики, хотят переезжать на другую CMS.

Открываю консоль — ошибка Uncaught ReferenceError: cart is not defined. Ок, идём в модули. Отключаю по одному. На третьем — «SEO-фильтры» — кнопка оживает. Оказывается, модуль подменял common.js и переопределял объект cart своей версией, которая не импортировала обработчик оформления.

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

Чек-лист: быстрая диагностика кнопки оформления заказа

  1. Консоль браузера (F12) — есть красные ошибки? → JS-конфликт
  2. Отключайте модули — оплата, доставка, оформление. По одному.
  3. Проверьте сессию — права на system/storage/session/ и system/storage/modification/
  4. Временно включите COD — если кнопка заработала, проблема в модуле оплаты
  5. Переключите на дефолтный шаблон — если помогло, проблема в теме
  6. Проверьте файлы checkoutcatalog/view/theme/*/template/checkout/
  7. Очистите кэш модификацийAdmin → Extensions → Modifications → Refresh

Таблица: симптом → причина → решение

СимптомВероятная причинаЧто делать
Кнопка не реагирует на кликJS-ошибка в checkout.jsПроверить консоль, отключить модули
Кнопка есть, но после нажатия ничегоМодуль оплаты не возвращает статусВключить COD для проверки
Кнопка не работает только в кастомной темеОшибка в шаблонеПереключить на дефолтный шаблон
Кнопка блокируется после заполнения формыПоле не прошло валидациюПроверить обязательные поля, искать скрытые ошибки
Кнопка не работает на мобильныхАдаптивность или скрипты не грузятсяПроверить viewport, отзывчивость формы
Кнопка работала и перестала после обновленияКонфликт версий модулей / PHPПроверить совместимость модулей с версией OpenCart

Как не допустить проблем с кнопкой в будущем

А что делать, чтобы кнопка оформления заказа не ломалась после каждого обновления? Правило простое: минимум модулей, влияющих на checkout. Каждый модуль, который правит checkout.js, common.js или файлы оформления — потенциальная бомба.

Мой совет: держите отдельную копию файлов оформления заказа в Git. Перед установкой любого модуля делайте дифф — какие файлы он меняет. Если модуль трогает checkout — тестируйте на staging. И никогда не ставьте модули «ускорения», которые переопределяют базовые JS-файлы — они почти всегда ломают корзину.

Почитайте наш обзор модулей OpenCart: какие реально нужны — там я разобрал, от чего польза, а от чего только проблемы.

Часто задаваемые вопросы

Кнопка оформления не работает только на мобильных. Почему?

Проверьте адаптивность формы. Часто какой-то элемент (например, всплывающая подсказка или баннер cookie) перекрывает кнопку на маленьких экранах. Или скрипт загрузки модулей не срабатывает на мобильных разрешениях. Откройте Chrome DevTools в режиме эмуляции телефона и проверьте.

Кнопка не работает после обновления PHP. Что делать?

PHP 8.x удалил много устаревших функций, которые использовали старые модули. Например, mysql_* функции или each(). Включите error_reporting на время диагностики и смотрите логи ошибок. Детальный разбор в нашей статье про диагностику админки.

Кнопка есть, но при нажатии ничего не происходит. Консоль чистая.

Редкий случай. Проверьте, не заблокирована ли отправка формы через JavaScript-обработчик. Может быть, какое-то поле не проходит валидацию, но сообщение об ошибке не показывается (скрыто CSS). Проверьте сетевую активность (F12 → Network) — уходит ли POST-запрос на checkout?

Кнопка работает, но заказ не создаётся. Деньги списываются.

Критичная проблема. Тут скорее всего баг в модуле оплаты — деньги списались, но коллбэк не вернул статус «Оплачено». OpenCart не создаёт заказ. Проверьте логи модуля оплаты, настройте техподдержку, чтобы не терять деньги.

Как быстро восстановить кнопку, если нет времени на диагностику?

Экстренный метод: восстановите файлы оформления заказа из бэкапа — catalog/controller/checkout/, catalog/view/theme/*/template/checkout/. Если бэкапа нет — залейте оригинальные файлы из дистрибутива вашей версии OpenCart. Подробнее про бекапы OpenCart.

Об авторе

Основатель студии разработки OpenCart-сайтов. Занимаюсь интернет-магазинами с 2009 года, за плечами более 150 реализованных проектов на OpenCart и ocStore. Специализируюсь исключительно на этой CMS, знаю её до уровня ядра. Все решения в работе основываю на данных: веб-аналитика, интервью с клиентами, A/B-тесты.

Нужна стратегия для вашего интернет-магазина? Закажите разработку интернет-магазина на OpenCart — разберёмся с любой проблемой.

Антон Баринов — разработчик интернет-магазинов на OpenCart с 2009 года, основатель opencart-cms.ru.

← Предыдущая Как найти поставщиков для интернет-магазина: пошаговый поиск, проверка, переговоры Следующая → Управление ассортиментом: ABC-XYZ анализ для e-commerce

Комментарии (0)

Пока нет комментариев. Будьте первым!

Оставить комментарий

Ваш комментарий появится после проверки модератором.