Вопрос-ответ

Популярные вопросы с ответами для владельцев и разработчиков сайтов

Почему не проходит оплата на сайте?

Причин, по которым не проходит оплата на сайте, может быть множество — от банальных ошибок в реквизитах карты до технических сбоев платёжного шлюза или блокировок со стороны банка. Чаще всего проблема лежит на стороне покупателя (неверный CVV-код, недостаточно средств), но могут быть и проблемы с интеграцией: устаревший SSL-сертификат, неправильные настройки мерчанта (платёжного агрегатора), конфликт модуля оплаты с CMS или хостингом. Для выявления точной причины нужно смотреть логи платёжного шлюза, инструменты разработчика в браузере и настройки вашего сайта (например, если вы используете Joomla — проверить компонент оплаты).

Частые причины ошибок оплаты (со стороны покупателя)

Большинство проблем решаются простыми действиями со стороны клиента. Прежде чем винить сайт, проверьте эти моменты.

  • Недостаточно средств на карте или исчерпан лимит — самая частая причина. Клиент может не знать о дневном лимите или о том, что карта заблокирована.
  • Неверно введены реквизиты карты: номер, срок действия (указан месяц или год неправильно), CVV-код (3 цифры на обороте).
  • Карта не поддерживает 3D Secure — банк требует подтверждение кодом из SMS, но клиент его не получает (проблемы с сотовым оператором) или не успевает ввести.
  • Карта не поддерживает оплату в интернете (например, некоторые дебетовые карты МИР имеют ограничения).
  • Банк заблокировал операцию как подозрительную — особенно часто происходит с картами зарубежных банков или при первой оплате на новом сайте.
  • Истёк срок действия карты — клиент может этого не заметить.

Рекомендация для владельца сайта: добавьте на страницу оплаты сообщения с возможными ошибками (например, «Проверьте CVV-код» или «Недостаточно средств»). Улучшенные платёжные агрегаторы возвращают такие коды, но их нужно корректно отображать.

Технические проблемы на стороне сайта или сервера

Если ошибка повторяется у разных покупателей или при тестовых платежах, проблема, скорее всего, техническая.

1. Отсутствие или неправильный SSL-сертификат

Платёжные шлюзы требуют, чтобы страница оплаты была открыта по протоколу HTTPS. Если SSL-сертификат истёк, недействителен или установлен только на главную, но не на страницу корзины, оплата будет отклонена. Проверьте, что ваш сайт открывается с «замочком» и нет смешанного контента (http-ресурсы на https-странице).

2. Неправильные настройки платёжного агрегатора (мерчанта)

При регистрации в системе (ЮKassa, Tinkoff Pay, Robokassa) вы получаете Secret Key, Shop ID, тестовые/боевые токены. Ошибки на этом этапе:

  • Вы забыли переключить шлюз из тестового режима в боевой (остались ключи от sandbox).
  • Не совпадает сумма в заказе и сумма, переданная агрегатору (например, из-за округления или неверной валюты).
  • Не указан return_url или notification_url (URL, куда агрегатор отправляет подтверждение оплаты).
  • Неверно настроена подпись (вычисляется алгоритмом MD5 или SHA-256, а вы указали не тот).

3. Конфликт модуля оплаты с CMS (Joomla, WordPress)

Если вы используете CMS, платёжный модуль мог:

  • Устареть (не обновляли полгода-год, а API платёжной системы изменилось).
  • Конфликтовать с другими расширениями (например, с компонентом SEO или кэширования).
  • Иметь неправильные права доступа к файлам (не может записать лог или изменить статус заказа).

Проверьте последние обновления вашего модуля оплаты в каталоге расширений (например, для Joomla — VirtueMart, HikaShop или плагин для конкретного агрегатора).

4. Проблемы с хостингом (например, hostpro)

Хостинг может блокировать исходящие запросы к API платёжного шлюза (запрещён CURL, отключены функции file_get_contents для удалённых URL). Также могут не работать cron-задачи (если оплата обрабатывается асинхронно). Обратитесь в техподдержку хостинга с вопросом о разрешении внешних запросов.

Группа проблемТипичные ошибкиКто исправляет
Сторона покупателя Недостаточно средств, неверный CVV, блокировка банка Покупатель (связаться с банком, проверить реквизиты)
Сайт (настройки агрегатора) Тестовый режим, неверные ключи, неправильный return_url Владелец сайта / администратор
Хостинг / сервер Блокировка CURL, устаревший SSL, нет outgoing connections Хостинг-провайдер (hostpro и др.)

0338

Как диагностировать проблему (алгоритм для владельца сайта)

Системный подход сэкономит часы нервов.

  1. Повторите ошибку сами. Попробуйте оплатить товар с тестовой карты (у каждого агрегатора есть тестовые номера). Если в тестовом режиме всё работает, а в боевом — нет, проблема в настройках мерчанта или в банке продавца (не открыт эквайринг).
  2. Посмотрите логи платёжного шлюза. В личном кабинете агрегатора (ЮKassa, Tinkoff, Robokassa) есть раздел «История платежей» или «Логи ошибок». Там будет код ошибки: например, «invalid amount», «merchant not found», «signature mismatch».
  3. Включите отладку (debug) модуля оплаты (если такая опция есть). Например, в плагине Joomla можно включить запись лога в файл. Вы увидите, какие данные отправляются на шлюз и какой ответ приходит.
  4. Проверьте права на callback URL. Агрегатор должен иметь возможность отправлять POST-запрос на ваш сайт. Убедитесь, что этот URL доступен из интернета и не требует авторизации (например, не защищён паролем). Временно отключите плагины безопасности (mod_security), которые могут блокировать запрос.
  5. Обновите CMS и модуль оплаты до последних версий. Устаревшие версии могут использовать устаревшие API.
  6. Проверьте лог сервера (Apache/Nginx). Может оказаться, что PHP не хватает памяти (memory_limit) или скрипт падает с фатальной ошибкой.

Частые ошибки при интеграции с конкретными платформами

  • Для модулей в Joomla (VirtueMart, HikaShop): не забывайте сохранять «Способ оплаты» в настройках заказа, иначе модуль не вызовется. Иногда помогает пересохранить настройки плагина (даже если ничего не меняли).
  • Для Tilda / SitePro.by (конструкторы): часто забывают добавить платёжную систему в «Настройки сайта» → «Приём платежей». Также нужно проверить, что в карточке товара стоит цена больше 0 и валюта указана корректно.
  • Для WordPress + WooCommerce: популярная ошибка — конфликт с темой или плагином кэширования (W3 Total Cache). Отключите кэш на страницах корзины и оформления заказа.

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

Это отдельная проблема. Деньги с клиента списались, но ваш сайт не обновил статус на «Оплачен». Чаще всего проблема в недоступности notification_url (webhook). Клиент перенаправляется на страницу успеха, но сервер не получает асинхронного уведомления. Решения:

  • Проверьте, что в настройках агрегатора указан правильный URL (обычно вида https://site.ru/ipn или .../payment/callback).
  • Убедитесь, что ваш сайт доступен из интернета по этому URL (попробуйте открыть его в браузере — возможно, он выдаёт ошибку 500).
  • Временно отключите HTTPS и проверьте по HTTP (некоторые агрегаторы некорректно работают с редиректами).

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

Резюме от эксперта

Причины, почему не проходит оплата на сайте, делятся на три уровня: ошибки покупателя, ошибки интеграции и ошибки хостинга. Начните диагностику с проверки платежа тестовой картой — это сразу покажет, работает ли техническая связь. Затем смотрите логи агрегатора и модуля оплаты. Не игнорируйте предупреждения о несовместимости версий PHP и плагинов. И главное: никогда не храните данные карт в своей базе (даже временно) — это нарушает стандарт PCI DSS. Доверьте обработку платежей профессиональным агрегаторам, а на своих страницах лишь отображайте форму.