Найти в Дзене

Кейс: двойная оплата при плохом интернете


В интернет-магазине клиенты иногда сталкивались с двойным списанием при оплате. Если после нажатия кнопки "Оплатить" связь прерывалась, пользователь не получал подтверждения и нажимал кнопку снова. Сервер обрабатывал каждый запрос отдельно, списывая деньги дважды.

После пары быстрых фриланс правок в коде появились следующие конструкции:
1. (На фронте) Блокировка кнопки после нажатия: предотвращает повторные клики, но мешает повторить попытку при сбое.
2. (На беке) Отслеживание времени: игнорирование запросов, поступающих в короткий интервал, но это ненадежно при легитимных повторных попытках.

Как думаете, как можно было бы ещё закостылить решение?

Позже в комментариях напишу, как в итоге решили проблему.

Кейс: двойная оплата при плохом интернете  В интернет-магазине клиенты иногда сталкивались с двойным списанием при оплате.
Около минуты