🖱Два раза нажал кнопку оплаты. Сколько раз спишут деньги?
Ситуация житейская: платишь в приложении, связь моргнула, ответ от сервера так и не пришёл. Приложение само повторяет запрос или ты нажимаешь ещё раз, и на сервер прилеитают две одинаковые команды на оплату.
Если система не умеет узнавать повтор, спишет дважды. Спасает свойство с тяжёлым названием - идемпотентность: сколько раз ни отправь один и тот же запрос, состояние на сервере будет таким же, как после первого.
В HTTP часть методов идемпотентна по спецификации, например GET, PUT и DELETE. POST таким не считается, каждый вызов может создать новую сущность, и платёж обычно создают именно через POST.
🗝Поэтому к платежу добавляют ключ идемпотентности. Приложение создаёт уникальный ключ на операцию и кладёт в заголовок, часто он называется Idempotency-Key. При повторе уходит тот же ключ, сервер его уже запомнил и возвращает прежний ответ, деньги второй раз не трогает.
Аналитику здесь достаются договорённости: для каких операций нужен ключ, что считается дублем, сколько хранить ключ и что ответить, если повтор пришёл, пока первый запрос ещё в обработке. Всё это фиксируют в требованиях к интеграции.
↔️Смотри карточки, там путь запроса по шагам.
У тебя хоть раз списывали деньги дважды за одну покупку? Если было, расскажи в комментах, чем всё закончилось.
Где ещё я пишу:
ВКонтакте: https://vk.com/solo_teach_me
Сетка: https://setka.ru/users/019d13c5-f3ca-7b21-b351-fe7c52e2ebe4
Ситуация житейская: платишь в приложении, связь моргнула, ответ от сервера так и не пришёл. Приложение само повторяет запрос или ты нажимаешь ещё раз, и на сервер прилеитают две одинаковые команды на оплату.
Если система не умеет узнавать повтор, спишет дважды. Спасает свойство с тяжёлым названием - идемпотентность: сколько раз ни отправь один и тот же запрос, состояние на сервере будет таким же, как после первого.
В HTTP часть методов идемпотентна по спецификации, например GET, PUT и DELETE. POST таким не считается, каждый вызов может создать новую сущность, и платёж обычно создают именно через POST.
🗝Поэтому к платежу добавляют ключ идемпотентности. Приложение создаёт уникальный ключ на операцию и кладёт в заголовок, часто он называется Idempotency-Key. При повторе уходит тот же ключ, сервер его уже запомнил и возвращает прежний ответ, деньги второй раз не трогает.
Аналитику здесь достаются договорённости: для каких операций нужен ключ, что считается дублем, сколько хранить ключ и что ответить, если повтор пришёл, пока первый запрос ещё в обработке. Всё это фиксируют в требованиях к интеграции.
↔️Смотри карточки, там путь запроса по шагам.
У тебя хоть раз списывали деньги дважды за одну покупку? Если было, расскажи в комментах, чем всё закончилось.
Где ещё я пишу:
ВКонтакте: https://vk.com/solo_teach_me
Сетка: https://setka.ru/users/019d13c5-f3ca-7b21-b351-fe7c52e2ebe4