Как правильно замораживать и размараживать корзина при оформление заказа?
Пользователь ходит по моему интернет магазину, что-то уже положил в корзину и переходит на страницу checkout. И так же у него открыты другие вкладки моего интернет магазина. И вот он, оформляя checkout, не закончил и на вкладке "продукт" нажал добавить в корзину.
Какой правильный алгоритм действий в этом случае должен быть у магазина?
1) В простейшем случае он обновит страницу checkout и там появятся новые продукты и изменится цена. Это - верно?
2) Если нет, то нужно откладывать корзину в сторону в процессе checkout давая ей статус "frozen" - то есть она не может быть изменена. Так?
Но, тогда появляется вопрос - что делать с текущей/новой корзиной пользователя если он зашел в процессе сheckout в корзину? Или вообще покинул сайт и потом вернулся через 2 дня.
Показывать ее же - замороченную? Или очищать замороженную и показывать новую? Кажется, что неправильно очищать, потому что корзина очищается только когда пользователь нажал на "оплатить".
Тогда что делать?
Допустим что я даже зарезервирую корзину frozen на час по таймеру. Что делать через час? Если frozen корзина очищается, и если пользователь в это время уже успел что-то положить в новую корзину, куда будут деваться товары когда стараю неоформленная корзина станет unfrozen?
Нужно вывести предупреждение о том, что в другой вкладке уже оформляется заказ и этот процесс не завершен. И варианты на выбор. Какие именно варианты, уже думайте сами. Например:
Добавить товар и перерасчитать стоимость.
При этом старые товары можно вообще отменить и как бы перейти в режим пополнения корзины с нуля или не делать так.
После добавления можно перейти к оформлению, а можно остаться в каталоге.
Не добавлять товар и перейти к оформлению.
Создать новый заказ, отдельно от того, который оформляется в другой вкладке (новая отдельная корзина).
Если заказ новый, то он работает отдельно, как будто в разных браузерах. Соответственно старый заказ остается в том же состоянии, что и был, просто в другой вкладке. И эти две вкладки теперь не должны влиять друг на друга.
Насчет удаления корзины. У меня бывает, что утром оформляешь заказ не до конца, потом уходишь по делам, надолго, а потом (м.б. даже вечером) возвращаешься к оформлению. И вот если товары из корзины исчезли, то и вкладку я закрываю. Даже лень куда-то писать и жаловаться, проще оформить в другом магазине.
С другой стороны есть варианты, когда инфу о заказе желательно удалить. Но, по-моему, это редкость.
> Если заказ новый, то он работает отдельно, как будто в разных браузерах. Соответственно старый заказ остается в том же состоянии, что и был, просто в другой вкладке. И эти две вкладки теперь не должны влиять друг на друга.
пользователь открывает 3ью вкладку и идет в корзину. что он видит?