Ошибки и статусы в Robokassa: диагностика и решения
Robokassa надежно передает результаты оплаты через уведомления на ваш сервер, но на практике мерчанты часто сталкиваются с типичными сбоями: подпись Robokassa ошибка, result url robokassa ошибка, webhook robokassa не приходит или тайм‑аут robokassa. В этом руководстве собрали системный подход к диагностике и решению ошибок, а также расшифровку статусов платежей.
Table of contents
Как работает поток уведомлений Robokassa
- Клиент переходит на платежную страницу и совершает оплату.
- Robokassa отправляет сервер‑к‑серверу уведомление на ваш ResultURL. Это единственный источник истины, по которому нужно подтверждать оплату на стороне магазина.
- Клиентская переадресация проходит на SuccessURL или FailURL — они нужны для UX, но не заменяют ResultURL.
- После корректного ответа на ResultURL вы фиксируете статус заказа и, при необходимости, формируете чек.
![Схема потока уведомлений Robokassa]
Важно: обновлять заказ в оплачено следует только после успешной валидации подписи и суммы в ResultURL. SuccessURL не гарантирует получение денег.
Статусы платежа Robokassa: расшифровка и действия
Ниже — типовые состояния, с которыми вы столкнетесь в кабинете и интеграции. Названия могут немного отличаться в конкретном проекте, но логика одинакова.
| Статус (пример) |
Что это означает |
Как действовать |
| Выставлен/Создан |
Счет сформирован, оплата не начата или не завершена |
Напомнить клиенту, предложить альтернативные способы оплаты |
| Ожидает подтверждения |
Проходит проверка антифрод/3‑D Secure/холд |
Дождаться финального уведомления по ResultURL |
| Оплачен/Успешно |
Средства зачислены |
Отгрузить товар/услугу только после валидации ResultURL |
| Отменен/Неудача |
Оплата не прошла или клиент прервал процесс |
Предложить повторить оплату, проверить ограничения банка |
| Возврат/Частичный возврат |
Возврат оформлен по операции |
Синхронизировать бухгалтерию, отправить корректировочный чек |
| Чарджбэк |
Оспаривание транзакции банком |
Подготовить доказательства, обновить статус заказа |
Где смотреть статус платежа Robokassa: в вашем бекэнде (на основе обработанных ResultURL) и в личном кабинете. Для доступа и журналов см. раздел Robokassa: личный кабинет и вход.
Типовые ошибки и быстрые причины
- Подпись Robokassa ошибка: чаще всего перепутаны Пароль #1 и Пароль #2, не учтены дополнительные параметры Shp_*, отличается формат суммы (100 vs 100.00) или регистр/кодировка строки для хеша.
- Result URL Robokassa ошибка: вы возвращаете не тот ответ, не код 200 OK, отдаете HTML/JSON вместо простой строки, либо используете редиректы/авторизацию на эндпойнте.
- Webhook Robokassa не приходит: неверный или недоступный URL, SSL‑ошибка, брандмауэр, Basic Auth, редирект, проблемы DNS или с прокси/Cloudflare.
- Тайм‑аут Robokassa: ваш обработчик отвечает слишком долго из‑за тяжелых запросов к БД, внешним API или генерации чеков; провайдер прекращает ожидание и повторяет уведомление.
- Дубли уведомлений: при сетевых сбоях Robokassa повторяет отправку — если нет идемпотентности, вы продублируете отгрузку.
- Несовпадение суммы/валюты: округление, комиссия, конвертация или неверная логика формирования OutSum.
Подпись Robokassa: ошибка и как исправить
Валидация подписи — ключ к безопасности. Типичный сценарий, когда подпись Robokassa ошибка:
- Для ссылки на платежную форму подпись строится с Паролем #1.
- Для уведомления ResultURL подпись строится с Паролем #2.
- Дополнительные параметры Shp_* должны включаться в сигнатуру в алфавитном порядке ключей, в точном соответствии документации.
- Значения должны быть в тех же форматах, что и в запросе Robokassa (регистр, кодировка, разделители).
Практические советы:
- Нормализуйте сумму к строке того же формата, что приходит в уведомлении (например, 100.00 вместо 100). Не сравнивайте деньги как float.
- Сравнивайте SignatureValue регистронезависимо: приводите обе стороны к верхнему регистру.
- Исключите лишние пробелы/переводы строк в конкатенации.
- В тестовом и боевом режиме используйте соответствующие пароли.
- Логируйте строку, из которой строите хеш, и полученное значение — это ускорит диагностику в разы.
Если сомневаетесь в формуле подписи — сверитесь с нашей статьей об API‑интеграции Robokassa и официальной документацией в кабинете.
ResultURL: что отвечать и когда возникает ошибка
Критичный момент: на уведомление нужно ответить быстро и строго в ожидаемом формате. Иначе возникает result url robokassa ошибка, и сервис начнет повторять запросы.
Рекомендации:
- Возвращайте HTTP 200 OK и простую текстовую строку вида: OK пробел InvId. Пример: OK 12345
- Не отдавайте HTML/JSON, не делайте редиректов. Контент‑тип — text/plain.
- Ответ должен быть коротким и быстрым; тяжелую бизнес‑логику переносите в фоновую задачу.
- Идемпотентность: повторные одинаковые ResultURL не должны повторно изменять статус заказа. Сначала проверьте, не обработан ли этот InvId.
- Сверяйте: сумму OutSum, MerchantLogin, подпись, валюту и свои дополнительные параметры.
Типичные причины ошибок ResultURL:
- На сервере включена авторизация на эндпойнте уведомлений.
- Фреймворк возвращает шаблон или JSON по умолчанию.
- Блокировка по IP/стране/проксированию или редиректы 301/302.
- Внутреннее исключение и нет обработки ошибок — итог не 200, а 500/502/504.
Webhook/уведомление не приходит: диагностика
Если webhook Robokassa не приходит, проверьте по шагам:
- Убедитесь, что в кабинете указан корректный HTTPS ResultURL без ошибок в пути. Подробно см. Подключение и настройка Robokassa.
- Откройте логи сервера и журнал уведомлений в личном кабинете: видно ли, что попытки доставки были? Адрес кабинета — через официальный сайт Robokassa и ваш личный кабинет.
- Проверьте сертификат TLS: он действителен, цепочка полная, нет устаревших шифров.
- Отключите или настройте Basic Auth/IP‑фильтры для ResultURL; допускайте входящие запросы от платежного провайдера.
- Уберите редиректы, особенно с http на https для ResultURL — сразу указывайте конечный https‑адрес.
- Если используете CDN/веб‑фаервол (например, с проверкой ботов), добавьте исключение для пути уведомлений.
- Используйте тестовую отправку уведомления из кабинета Robokassa, чтобы локализовать проблему без реальной оплаты.
![Снимок экрана: пример логов ResultURL и ответов сервера]
Тайм‑аут Robokassa и медленные ответы
Тайм‑аут Robokassa обычно связан с долгим ответом вашего обработчика. Что делать:
- Отвечайте подтверждением максимально быстро: валидируйте подпись и базовые поля, фиксируйте событие, возвращайте OK, а тяжелую обработку (чек, CRM, склад) вынесите в очередь фоновых задач.
- Оптимизируйте доступ к БД: индексы на поиске заказа по InvId, ограничение числа запросов в транзакции.
- Не вызывайте внешние API до ответа Robokassa.
- Контролируйте время в логах: замеряйте TTFB конкретно на эндпойнте ResultURL.
- Настройте алерты по коду ответа и времени обработки, чтобы ловить деградацию заранее.
Сверка статуса через API и повторная проверка
Даже при корректных вебхуках полезно внедрить фоновую сверку: если уведомление потерялось или вы подозреваете сбой сети, запросите статус платежа через API. Подробно — в разделе Robokassa API: интеграция и примеры.
Рекомендации:
- Периодически проверяйте заказы в промежуточных статусах и обновляйте их.
- Для возвратов и чарджбэков синхронизируйте статусы и документы. Поможет гайд по возвратам и чарджбэкам.
Чек‑лист лучших практик
- Настройте ResultURL, SuccessURL и FailURL в кабинете; в ссылке/форме используйте строгие HTTPS‑адреса.
- Храните два пароля отдельно и используйте верный: Пароль #1 — для создания платежа, Пароль #2 — для ResultURL.
- Включайте Shp_* параметры в подпись по документации; логируйте строку для хеша и результат.
- Отвечайте на ResultURL быстро: 200 OK и строка OK InvId; без HTML, JSON и редиректов.
- Сделайте обработку идемпотентной и безопасной к повторам.
- Нормализуйте суммы как строки с фиксированной точностью; не сравнивайте float.
- Включите ретраи фоновой сверки статуса через API.
- Автоматизируйте фискализацию и проверку чеков: см. чек и фискализация в Robokassa.
FAQ
- Чем отличается SuccessURL от ResultURL? SuccessURL — клиентский редирект после оплаты, не гарантирует факт зачисления. ResultURL — серверное уведомление, по нему подтверждается оплата на вашей стороне.
- Что значит статус платежа Robokassa «Оплачен», но заказ не обновился? Вероятно, вы не обработали или не подтвердили ResultURL. Проверьте логи, подпись и ответ OK InvId.
- Почему возникает result url robokassa ошибка? Сервер вернул не 200 OK, неверный формат ответа, есть авторизация/редирект, либо упала обработка. Исправьте эндпойнт.
- Как избежать «подпись robokassa ошибка»? Используйте правильный пароль, учитывайте Shp_* параметры, нормализуйте сумму и сравнивайте подпись без учета регистра.
- Что делать, если webhook robokassa не приходит? Проверить URL, SSL, фаервол, журнал в кабинете, исключения на CDN, протестировать отправку из кабинета.
- Как быть с тайм‑аут robokassa? Ответить быстро и минималистично, тяжелую логику перенести в фон, оптимизировать БД и сетевые вызовы.
Связанные материалы
Итог и что дальше
Корректная обработка ResultURL, строгая валидация подписи и быстрый ответ — три кита стабильной интеграции. Если у вас возникает ошибка Robokassa при уведомлениях, подпись не сходится, webhook не приходит или фиксируете тайм‑аут Robokassa, пройдитесь по чек‑листу выше и включите резервную сверку через API. Нужна системная настройка или аудит интеграции? Изучите наши материалы по подключению, API и фискализации или обратитесь за консультацией — поможем сократить ошибки и ускорить оплату.