Концепция дизайна для предотвращения повторных заказов в мою систему

У меня есть созданная мной веб-система, которая представляет собой портал онлайн-заказов для наших клиентов. Мы храним их запас, и они размещают заказы через этот портал.

Мы выполняем проверку дублирования на ссылочном номере клиента, чтобы один и тот же заказ не мог пройти дважды, однако у нас возникли некоторые проблемы, из-за которых, если клиент отправляет заказ нашему API несколько раз (в течение миллисекунд, если таковые имеются), наша система не имеет достаточно времени, чтобы отметить заказ как полученный, и поэтому система разрешает дублирование.

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

Любые идеи дизайна о том, как бороться с этим? Одним из решений, о котором я подумал, было использование мьютекса со ссылочным номером, чтобы, если мьютекс заблокирован для этого ссылочного номера, он мог повторить попытку в секунду и т. Д.? Насколько я понимаю, что Mutex почти дурака, поскольку они применяются файловой системой?

Любые идеи были бы хорошы

0

Решение

Вы можете попробовать использовать стратегию nonce. Идея состоит в том, чтобы установить случайное число в скрытое поле формы и сохранить его в сеансе. Проверьте идентификатор на посту. Пользователь должен намеренно обновить страницу, чтобы получить новый идентификатор и иметь возможность опубликовать во второй раз.

Так как вы используете службу API, я бы сказал, что вы можете использовать пакетную систему. Где заказ приходит и хранится в зоне ожидания. Задание chron проходит через пакет и выполняет необходимые операции удаления.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]