Розбір рішень · Middle · Запитання 6 з 14
Запит на оплату завершився таймаутом, і невідомо, чи пройшло списання. Подвійне списання неприпустиме, але продаж не можна втратити. Що будуємо?
- 1Безпечні повтори з одним ключем ідемпотентності на платіж
- 2Без повторів: показати помилку й просити спробувати ще
- 3Спершу перевірити список списань, а якщо немає, повторити
Показати відповідь
Правильна відповідь: Безпечні повтори з одним ключем ідемпотентності на платіж
Пояснення
Із ключем провайдер вважає повтор тією самою операцією, тож двічі не спише, навіть якщо перший виклик вдався. Показ помилки підходить для дій, які дешево повторити, але тут користувач може заплатити двічі, знову натиснувши кнопку. Попередня перевірка підходить для провайдерів без ключів, проте лишає гонку: перше списання може ще виконуватися під час перевірки.