Платежи, корзина покупок и добавление товара в корзину всего за полчаса

Вот сайт, на котором после нажатия "Dodaję" (в переводе с польского "добавить") товар попадает в корзину на 30 минут: https://remix.pl/

Пока товар находится в корзине, его не могут купить другие. Я проверил их корзинку: когда я удалил куки, предметы были удалены из корзины (поэтому корзина использует сеанс php), и предметы снова были доступны для покупки. Я хотел бы знать, как они это сделали (использует ли их корзина базу данных для хранения даты и времени добавленного товара для подсчета 30 минут, или сценарий можно сделать по-другому?). Может быть, это Cron Job или что-то в этом роде? Как лучше это сделать через php или с php нельзя сделать что-то подобное? Я не имею в виду отображение тикающего/проходящего времени, потому что для этого нужны jQuery, js и т. д., а просто суть скрипта.

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

И вот еще один вопрос: Можно ли убрать количество товара только тогда, когда товар оплачен например через paypal? Химия например: Количество товара: 99 После добавления в корзину: еще 99 После размещения заказа в базе данных MySQL: еще 99 После оплаты через PayPal например: 98 Это хорошая практика и можно ли запустить скрипт после того, как товар оплаченный? Большое спасибо!


person Wojciech Glapa    schedule 11.02.2016    source источник


Ответы (1)


Также создайте таблицу корзины в своей базе данных. Когда sy помещает предмет в свою корзину, также вставьте запись в таблицу корзины вместе с меткой времени записи. Когда вы запрашиваете таблицу продуктов, вы считаете недоступными те продукты, которые находятся в таблице корзины, а значение метки времени менее 30 минут. Вы можете игнорировать любые бронирования в корзине, которые старше 30 минут. Вы можете очистить таблицу корзины либо из запланированного скрипта, либо из кода любой регулярно запускаемой страницы.

Что касается вашего второго вопроса: конечно, вы вычитаете количество проданного товара со склада только после успешного завершения платежа. Paypal API обеспечивает обратный вызов для этого, см. мгновенные уведомления о платежах< /а>

person Shadow    schedule 11.02.2016
comment
Я, вероятно, нашел лучший способ сделать это: когда пользователь добавляет 1 товар в корзину, уменьшите количество товара на 1 в течение 30 минут. Если товар оплачен в течение этих 30 минут, то уменьшите это количество навсегда, если товар не оплачен в течение 30 минут, увеличьте количество на 1. Таким образом, я могу продавать бывшие в употреблении товары с количеством 1 и новые товары с количеством 999. Если количество предметов было 1, а теперь равно 0, то пользователь не может купить предмет, если количество предметов было 999, а теперь 998, то пользователь может купить только 998 предметов. количество предметов увеличивается каждый раз, когда пользователь не оплатил в течение 30 минут - person Wojciech Glapa; 12.02.2016
comment
У меня проблема, а что, если кто-то купит 1000 товаров в количестве 999? Например программа-бот? Тогда у меня не будет продуктов на моем сайте в течение 30 минут. Программа покупает товар каждые 30 минут, поэтому в моем магазине всегда 0 товаров. Выглядит так некрасиво. - person Wojciech Glapa; 12.02.2016
comment
Может быть, я не должен иметь количество. Просто продукты. - person Wojciech Glapa; 12.02.2016
comment
Потому что если у меня есть в моем магазине товар, например, в количестве 99, кто-то может зарезервировать все 99 штук, и тогда у других людей не будет возможности купить его в течение 30 минут. Я не знаю, как решить эту проблему. - person Wojciech Glapa; 14.02.2016
comment
На самом деле вы не можете, если только вы не наложите ограничение на количество продуктов, которые может купить пользователь. Другие варианты заключаются в том, что вы либо не резервируете товары в корзине, либо срок резервирования намного короче. Общим для этих решений является то, что они не имеют ничего общего с программированием. Это чистая бизнес-логика, поэтому, пожалуйста, используйте здравый смысл и деловую хватку. - person Shadow; 14.02.2016
comment
Более того, этой проблемы не было в исходном вопросе. Таким образом, несправедливо ожидать ответа на sg, которого даже не спрашивали! - person Shadow; 14.02.2016
comment
интересно, как это делается, например, на amazon.com. кто-то добавляет товар в корзину, а затем кто-то другой тоже добавляет тот же товар, но один из них заплатил за товар, так что другой не может его купить, но он все еще в его корзине, лол - person Wojciech Glapa; 14.02.2016
comment
хорошо, я приму ответ, но тогда тему следует удалить. - person Wojciech Glapa; 14.02.2016