Задать вопрос

Как должна происходить покупка в магазине?

Пишу оплату в магазине ключей. Уже долго достаточно сижу, не могу понять, как правильно реализовать обработку заказов.
Вариант 1. Есть корзина (массив в сессии с id товаров, количеством и тд), при оплате, если создавать неоплаченный заказ и направлять клиента в кассу, количество доступных ключей уменьшится (они будут зарезервированы под этот заказ), но если клиент не оплатит заказ, то в бд он все равно будет висеть и удалить его можно будет, например, кроном (если прошло 5 минут от создания заказов, а они не были оплачены, возвращаем ключи в оборот). Но из-за этого, как мне кажется, будет большая нагрузка да и кто-то сможет постоянно резервировать ключи и не оплачивать их...
Вариант 2. Направить клиента на оплату заказа и после получения результата оплаты создать заказ с ключами. Казалось бы, все отлично, но как всегда есть одно НО... Представим ситуацию:
У игры в продаже имеется 5 ключей. Вася добавил в корзину 3 ключа, для себя и своих друзей. Его отправили оплачивать заказ, но в это время Вася вспомнил про варящиеся на кухне пельмешки и побежал выключать плиту. Пока Вася героически спасал пельмешки, Петя взял и оплатил покупку 4 ключей. Тут приходит ничего не подозревающий Василий, оплачивает товар, его перенаправляют в наш магазин, где он получает... Получает он ошибку, что такого количества ключей в продаже то уже и нет...
И вот, что же делать в такой ситуации я, увы, не знаю...
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
sim3x
@sim3x
1. Не будет никакой нагрузки
2. Refund

С електронными товарами не часто можно получить проблему out of stock
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rPman
Вы правильно подметили, у вас два варианта - резервировать ключи (достаточно их количество) и получить возможность ddos-ить ваш магазин, заказывая но не оплачивая товар, либо не резервировать - и решать проблему out of stock, делая refund.

Выбирайте что вам проще, вполне возможно что refund для вас может оказаться платным (как мерчант решит, такое бывает с международными платежами) - что в чвою очередь даст злоумышленнику инструмент ddos-а уже вашу платежную систему рефандами (что будет стоить вам денег), злоумышленник просто приобретает десяток-сотню виртуальных банковских карт/ регистрирует много кошельков в электронных платежках - и банкротит ваш магазин.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы