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

Как правильно реализовать бронь товара до оплаты в интернет магазине цифровых товаров?

Каждая единица товара содержится в одной строке. Сначала возникла проблема, что вдруг если пока пользователь оплачивает товар он закончится и ему придут пустые строки. Решение очевидно, это бронировать заказ и в него писать строки. Проблема номер два – боты. Можно написать спам машину которая забронирует все товары и никто не сможет ничего купить. Возникает вопрос, что делать?
  • Вопрос задан
  • 504 просмотра
Подписаться 3 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 3
hint000
@hint000
у админа три руки
Посмотрите на существующие интернет-магазины. Чтобы оформить заказ, нужно подтвердить регистрацию через e-mail или через SMS. Это уже потребует некоторой упоротости от ботовода, чтобы обойти. В отдельных случаях менеджер перезванивает покупателю для подтверждения заказа. Это отсекает 99.9% шутников, хотя плохо работает при большом количестве нормальных заказов.

А вообще давайте вспомним старую историю "Хакер в столовой" или "Хакер против директора столовой" https://xakep.ru/2006/12/16/35784/ Особенно день 194-ый похож на ваш вопрос. Лучше не уподобляться персонажу этой истории.
Ответ написан
Комментировать
vitaly_74
@vitaly_74
что касается относительно ботов - ответил hint000 , что касаемо брони, у вас например в бд есть таблица покупок, так создайте подобную но для брони, и покупки проводите, проверяя наличие минус суммарный бронь по товару (для мгновенных покупателей), или по броню, для тех кто забронировал, в таблице также поставьте дату окончания брони (начало не важно как мне кажется), и запускайте крон, для проверки брони. если время брони истекло, обнуляеете. не истекло, оставляете.
Ответ написан
@danSamara
Это фундаментальная проблема онлайн-магазинов не имеющая решения: либо вы реально блокируете товар при его наличии в корзине, что гарантирует пользователю покупку, но создаёт проблемы вам, либо наличие товара несёт чисто информационную функцию, что снижает лояльность пользователей из-за "к сожалению данный товар уже недоступен к покупке".

Самый распространённый подход - блокировка товара перед непосредственным переходом к оплате на короткое время, за которое пользователь должен произвести оплату. Этот вариант хорош по двум причинам:
1. Неограниченная по времени корзина - не надо принимать сложное решение о времени реальной блокировки товара в корзине.
2. Короткое время реальной блокировки товара (10-30 минут) с предварительной проверкой наличия оного.
Конечно, всё ещё остаётся вариант ботов, в этом случае можно будет вообще убрать реальную блокировку и проводить денежную транзакцию через hold/refund, что будет бесплатно с точки зрения комиссий.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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