Резерв скидки должен иметь срок и состояния. При подтверждённом отказе или истечении резерва его освобождают; при неопределённом результате оплаты сначала уточняют статус у платёжной системы.
Что должно происходить, если скидка была зарезервирована, но покупатель не смог или отказался оплатить покупку, например из-за ошибки связи с банком или недостатка средств на карте?
Резерв скидки должен иметь срок и состояния. При подтверждённом отказе или истечении резерва его освобождают; при неопределённом результате оплаты сначала уточняют статус у платёжной системы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Резерв скидки должен иметь срок и состояния. При подтверждённом отказе или истечении резерва его освобождают; при неопределённом результате оплаты сначала уточняют статус у платёжной системы.
Ошибка связи с банком не означает, что оплаты не было. Нужны состояния reserved, consumed, released и идемпотентные переходы, связанные с заказом. Webhook и периодическая сверка должны согласованно обработать поздний успех, отмену и истечение срока. Правило поздней оплаты после освобождения резерва определяют заранее, чтобы не выдать одну ограниченную скидку двум покупкам. Пользователю показывают понятный статус, а не предлагают немедленно повторить платёж при неизвестном исходе.