Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья7 мин чтенияПросмотры1

Оплата прошла, а заказ остался неоплаченным: где искать потерянное подтверждение

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

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

Платёжный терминал с выключенным экраном рядом с посылкой. Сгенерированная иллюстрация.
В этой статье

Покупатель показывает списание, в кабинете платёжного сервиса есть операция, а магазин продолжает ждать деньги. Просьба оплатить ещё раз только усложнит разбирательство. Сначала нужно связать конкретный платёж с конкретной оплатой заказа и найти последнее место, где подтверждение было достоверно обработано. Для этого нужны записи обеих систем, а не один скриншот покупателя.

Ниже — порядок расследования для владельца магазина на «1С-Битрикс: Управление сайтом» и разработчика интеграции. Особенности уведомлений приведены на примере действующего API ЮKassa, сверенного 26 сентября 2026 года. У другого провайдера могут отличаться статусы, способы проверки подлинности и правила повторной доставки. Старый протокол и новый API нельзя разбирать по одной инструкции.

Сначала убедитесь, что сравниваете одну операцию

У заказа может быть несколько попыток оплаты, частичная оплата и разные платёжные документы. Номер заказа не заменяет идентификатор операции у провайдера. Составьте связку: заказ, его платёжный документ, идентификатор внешнего платежа, сумма, валюта, время и магазин-получатель. Секретный ключ и полные данные карты в такую запись не входят.

Условный пример: первая попытка на 7 400 рублей не завершилась, вторая прошла успешно, но модуль сохранил в заказе только ссылку на первую. Поиск по старому идентификатору честно покажет неуспех. Это ещё не потеря уведомления: проблема возникла раньше, при связывании второй попытки с оплатой. Исправление обработчика входящих сообщений само по себе такую связь не восстановит.

Отдельно проверьте режим операции. Тестовый платёж не подтверждает реальное поступление. При двухстадийной схеме авторизация денег и окончательное списание — разные этапы. В ЮKassa статус waiting_for_capture означает ожидание списания авторизованной суммы, а succeeded — успешное завершение платежа. Статус возврата следует смотреть отдельно: завершённая когда-то оплата не доказывает, что деньги впоследствии не вернули.

У подтверждения и покупателя разные маршруты

Возвращение человека на страницу магазина происходит через браузер. Уведомление о состоянии платежа приходит отдельным запросом от сервиса. Покупатель может закрыть вкладку, потерять интернет или вовсе не вернуться; серверный маршрут при этом должен продолжать работать. И наоборот: загрузившаяся страница благодарности не доказывает оплату.

Два независимых маршрута: браузер покупателя и серверное подтверждение платежа.
Схема интеграции. Возврат браузера показывает страницу, а изменение оплаты требует проверенных данных платёжного сервиса.

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

Запрос не дошёл до обработчика

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

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

Не отключайте защиту всего сайта ради проверки. Ответственный специалист сопоставляет отказ с правилами доступа и требованиями конкретного платёжного сервиса. Исключение, если оно действительно нужно, должно быть узким и сохранять проверку подлинности уведомления. Случайное сообщение из интернета не должно менять финансовое состояние заказа.

Ответ получен, но результат не сохранён

У ЮKassa получение уведомления подтверждается кодом HTTP 200; другие коды вызывают повторную доставку в течение 24 часов с момента события. Этот срок не заменяет собственную сверку потерянных подтверждений. При обработке также требуется проверять подлинность и актуальность данных, например запросив текущее состояние объекта через API с серверной аутентификацией.

Успешный HTTP-ответ говорит о взаимодействии с конечной точкой, но не гарантирует правильную бизнес-операцию. Страница-заглушка тоже может вернуть успешный код. Приложение может подтвердить получение, а потом потерять задачу в очереди. Поэтому следующая запись, которую стоит искать, — сохранение события или результата обработки, а не только строка веб-сервера.

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

При непосредственной обработке проверьте исключения приложения, конфликт сохранения и поиск платёжного документа. Условный случай: внешний платёж найден, но соответствующая оплата в магазине уже заменена менеджером. Молчаливое завершение оставляет заказ неоплаченным и скрывает причину. Такая операция должна попасть в разбор расхождений с конкретным описанием, а не раствориться среди успешных ответов.

Повторная доставка не должна повторять отгрузку

Повтор события — ожидаемый сценарий интеграции. Обработчик должен распознать уже учтённый результат по устойчивой связи с внешним платежом. Две одновременно пришедшие копии требуют такой же защиты, как две последовательные. Простая проверка «ещё не оплачено» до сохранения бывает недостаточной: оба процесса могут увидеть одно старое состояние.

Разработчик отдельно защищает само изменение оплаты и последующие действия: отправку письма, передачу заказа в 1С, создание отгрузки. Если отметка об оплате уже сохранена, а обмен с 1С не удался, повторять списание денег нельзя. Возобновлять следует незавершённый этап, сохранив связь с первоначальной операцией.

Ключ идемпотентности при создании платежа и защита входящего уведомления решают разные задачи. Первый помогает не создать лишний платёж при повторе исходящего запроса. Второй не даёт повторно применить один финансовый результат в магазине. Наличие первого механизма не доказывает исправность второго.

Восстановите одну связь и проверьте границы сбоя

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

Корректировку проводят штатным способом конкретного модуля или по согласованной процедуре восстановления, с записью причины и исполнителя. Прямое изменение поля в базе может обойти связанные события и оставить расходящиеся данные. Повторный запуск всей цепочки без выяснения уже выполненных действий опасен двойной отгрузкой и дублированием документов.

После исправления одной операции проверьте временной интервал от последнего подтверждённого успеха до устранения причины. Сверяйте не только количество платежей, но и их идентификаторы и суммы. Одинаковое число операций может скрывать одновременно одну пропущенную и одну лишнюю связь. Покупателю можно сообщить результат после проверки именно его платежа; восстановление остальных расхождений продолжится независимо от того, открывает ли он страницу заказа.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.