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

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

Коротко: нужно проверить единицы суммы, payload возврата, статус заказа, повторные запросы и webhook от провайдера.

Почему возникает проблема

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

Что проверяю в первую очередь

  • в каких единицах передается сумма
  • какой тип возврата отправляется провайдеру
  • есть ли идемпотентный ключ
  • как меняется статус заказа
  • что приходит в webhook после возврата

Как исправляю

Я проверяю всю цепочку: форма менеджера, backend-запрос к провайдеру, ответ, webhook и обновление заказа.

  • исправляю расчет суммы возврата
  • добавляю защиту от повторного запроса
  • разделяю частичный и полный возврат
  • корректно обновляю позиции заказа
  • логирую причину и сумму операции

Что подготовить перед обращением

  • ссылка на сайт или кабинет
  • скриншот проблемы
  • пример пользователя, заказа или события
  • время, когда ошибка повторялась
  • доступы или выгрузка логов без лишних персональных данных

Какой результат нужен

Частичный возврат возвращает ровно указанную сумму, заказ получает корректный статус, а повторный запрос не удваивает операцию.

Чего лучше не делать

Не запускайте возвраты вручную в панели банка параллельно с сайтом, если потом сайт должен вести корректную историю заказа.

Вопросы и ответы

Почему вернулась полная сумма?

Чаще всего из-за неправильного параметра возврата или перезаписи суммы заказа.

Нужен ли идемпотентный ключ?

Да, он защищает от двойного возврата при повторе запроса.

Можно ли восстановить статус заказа?

Можно, но нужно сверить фактическую операцию у провайдера.

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку, скриншот, лог ошибки или пример заказа, и я подскажу, с чего безопасно начать исправление.

Итог

Частичный возврат требует точной суммы, идемпотентности, отдельной логики статусов и проверки webhook.