Shopping Cart Question
-
- Уже с Приветом
- Posts: 1369
- Joined: 05 Sep 2008 01:22
Shopping Cart Question
Всем привет!
У меня такой вопрос. Есть интернет магазин в процессе разработки. Требование клиента чтобы юзер логинился в самый последний момент когда корзина уже заполнена. По условию задачи в ней может быть всего 2 типа товаров:
1 - кольцо
2 - камень для кольца.
Сейчас на входе (при открытии главной странички проверяем если в кеше броузера сгенеренный ID. Есои нет- генерится GUID и записывается в кеш броузера. И с этим GUID отправляем за покупками.
Скажем он выбрал кольцо - я создал запись в таблице SelectedItems с этим GUID, выбрал камень - ещё одну запись создали.
Когда корзина заполнена юзер логинится, далее записывем UserId (integer) в кеш, создаем записи в таблице Orders и в таблице OrderItems, но уже с UserID. Далее емейлы и прочие расшаркивания. Записи с таблицы SelectedItems с этим GUID удаляются.
Проблема в следующем - как быть если 2 юзера на одном компе только пришли и один выбрал кольцо, закрыл браузер и ушел. Второй - выбрал камень. Как потом узнать - где чей товар, если они ещё не логинились? Корзина будет напоминать письмо дяди Фёдора (помните где дядя Фёдор, Матроскин и Шарик вместе письмо писали?).
У меня такой вопрос. Есть интернет магазин в процессе разработки. Требование клиента чтобы юзер логинился в самый последний момент когда корзина уже заполнена. По условию задачи в ней может быть всего 2 типа товаров:
1 - кольцо
2 - камень для кольца.
Сейчас на входе (при открытии главной странички проверяем если в кеше броузера сгенеренный ID. Есои нет- генерится GUID и записывается в кеш броузера. И с этим GUID отправляем за покупками.
Скажем он выбрал кольцо - я создал запись в таблице SelectedItems с этим GUID, выбрал камень - ещё одну запись создали.
Когда корзина заполнена юзер логинится, далее записывем UserId (integer) в кеш, создаем записи в таблице Orders и в таблице OrderItems, но уже с UserID. Далее емейлы и прочие расшаркивания. Записи с таблицы SelectedItems с этим GUID удаляются.
Проблема в следующем - как быть если 2 юзера на одном компе только пришли и один выбрал кольцо, закрыл браузер и ушел. Второй - выбрал камень. Как потом узнать - где чей товар, если они ещё не логинились? Корзина будет напоминать письмо дяди Фёдора (помните где дядя Фёдор, Матроскин и Шарик вместе письмо писали?).
-
- Уже с Приветом
- Posts: 8239
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA
Re: Shopping Cart Question
Вот я удивляюсь. Интернет шоппингу уже 20+ лет. Неужели за все это время нет стандартных подходов как окучивать покупателей?
-
- Уже с Приветом
- Posts: 1369
- Joined: 05 Sep 2008 01:22
-
- Уже с Приветом
- Posts: 8090
- Joined: 08 Nov 2004 12:24
- Location: GA
Re: Shopping Cart Question
Я не силен в веб программировании, но первое что приходит в голову -таймаут. У записи есть ttl например 30 минут. Потом она не валидна и удаляется. Вам ведь все равно надо SelectedItems чистить. 10 человек выбирут, один купит. Таблица же разрастется.
-
- Уже с Приветом
- Posts: 2913
- Joined: 08 May 2016 19:09
Re: Shopping Cart Question
Задача сама по себе не имеет решения. Хотя нет, можно написать AI который будет определять кто за ПК по манере использования мышки/клавиатуры.
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Shopping Cart Question
А зачем их распознавать?Sasha3091 wrote: ↑23 Sep 2017 23:41 Проблема в следующем - как быть если 2 юзера на одном компе только пришли и один выбрал кольцо, закрыл браузер и ушел. Второй - выбрал камень. Как потом узнать - где чей товар, если они ещё не логинились? Корзина будет напоминать письмо дяди Фёдора (помните где дядя Фёдор, Матроскин и Шарик вместе письмо писали?).
-
- Уже с Приветом
- Posts: 8239
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Shopping Cart Question
Что у вас такое- кеш броузера? Как вы туда вообще пишете?
Почитайте вот лучше про session id
https://en.wikipedia.org/wiki/Session_ID
Hint: это такая хрень, которая генерится еще до того, как юзер залогинился куда-либо.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 1369
- Joined: 05 Sep 2008 01:22
Re: Shopping Cart Question
Что у вас такое- кеш броузера? - Local StoarageVovaK98 wrote: ↑25 Sep 2017 14:02Что у вас такое- кеш броузера? Как вы туда вообще пишете?
Почитайте вот лучше про session id
https://en.wikipedia.org/wiki/Session_ID
Hint: это такая хрень, которая генерится еще до того, как юзер залогинился куда-либо.
это такая хрень, которая генерится еще до того, как юзер залогинился куда-либо. И пропадает через 20 минут после того как он закрыл броузер.
Session - не выход. Если юзер закрыл броузер - все пропало? А как хранить корзину? Скажем он выбрал один товар, а через неделю другой. И все это время товар в корзине нужно хранить. Требование клиента.
-
- Уже с Приветом
- Posts: 8239
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA
Re: Shopping Cart Question
Требование клиента хранить корзину неделю для незарегистрированного пользователя это сущий идиотизм. Максимум 15-30 минут.
Повесить клиенту куку с его GUID. Гостю временную, зарегистрированному пользователю на год.
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Shopping Cart Question
То есть вы храните корзину неделями? Круто. Объясните клиенту, что товар народ как бы покупает, один день товар есть, в другой - нет. При хорошем спросе корзина уже через час может быть invalid. Вся суть корзины - это создать у покупателя 'sense of urgency'.
Если у вас проблема типа "чувак отошел отлить, другой за его комп сел и пошарился в его корзине- как определить, что это не тот чувак", то извините, тут уж задачу надо решать через искусственный интеллект, типа, включать камеру и делать опознавание морды лица
У вас, похоже, другой workflow- что-то типа favorites. Покупатель пришел, покликал на то, что ему нравится, но не факт что вообще купит, будет разглядывать неделями, крутить. Тогда повесьте на page leave/close event требование залогиниться, а то кто-то другой придёт и всё покоцает.
Если у вас проблема типа "чувак отошел отлить, другой за его комп сел и пошарился в его корзине- как определить, что это не тот чувак", то извините, тут уж задачу надо решать через искусственный интеллект, типа, включать камеру и делать опознавание морды лица
У вас, похоже, другой workflow- что-то типа favorites. Покупатель пришел, покликал на то, что ему нравится, но не факт что вообще купит, будет разглядывать неделями, крутить. Тогда повесьте на page leave/close event требование залогиниться, а то кто-то другой придёт и всё покоцает.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 1369
- Joined: 05 Sep 2008 01:22
Re: Shopping Cart Question
Спасибо. Будем думать как убедить клиента. Он увидел эту идею на другом сайте, где товар можно положить в корзину. Потом через 2 дня положить еще, а еще через неделю наконец-то все это купить. И все это время товары будут в корзине. Иными словами товары будут в корзине все эти 10 дней пока их либо не купят, либо не удалят сами клиенты.VovaK98 wrote: ↑25 Sep 2017 14:23 То есть вы храните корзину неделями? Круто. Объясните клиенту, что товар народ как бы покупает, один день товар есть, в другой - нет. При хорошем спросе корзина уже через час может быть invalid. Вся суть корзины - это создать у покупателя 'sense of urgency'.
Если у вас проблема типа "чувак отошел отлить, другой за его комп сел и пошарился в его корзине- как определить, что это не тот чувак", то извините, тут уж задачу надо решать через искусственный интеллект, типа, включать камеру и делать опознавание морды лица
У вас, похоже, другой workflow- что-то типа favorites. Покупатель пришел, покликал на то, что ему нравится, но не факт что вообще купит, будет разглядывать неделями, крутить. Тогда повесьте на page leave/close event требование залогиниться, а то кто-то другой придёт и всё покоцает.
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Shopping Cart Question
На амазоне так и сделано.Sasha3091 wrote: ↑25 Sep 2017 14:59 Спасибо. Будем думать как убедить клиента. Он увидел эту идею на другом сайте, где товар можно положить в корзину. Потом через 2 дня положить еще, а еще через неделю наконец-то все это купить. И все это время товары будут в корзине. Иными словами товары будут в корзине все эти 10 дней пока их либо не купят, либо не удалят сами клиенты.
Только непонятно зачем разделять вещи в корзине...
-
- Уже с Приветом
- Posts: 1369
- Joined: 05 Sep 2008 01:22
Re: Shopping Cart Question
Возможно я вас не понял. Что значит - разделять вещи в корзине?Palych wrote: ↑25 Sep 2017 15:06На амазоне так и сделано.Sasha3091 wrote: ↑25 Sep 2017 14:59 Спасибо. Будем думать как убедить клиента. Он увидел эту идею на другом сайте, где товар можно положить в корзину. Потом через 2 дня положить еще, а еще через неделю наконец-то все это купить. И все это время товары будут в корзине. Иными словами товары будут в корзине все эти 10 дней пока их либо не купят, либо не удалят сами клиенты.
Только непонятно зачем разделять вещи в корзине...
-
- Уже с Приветом
- Posts: 12158
- Joined: 02 Oct 2000 09:01
- Location: Одесса, Укр -> Belmont, CA
Re: Shopping Cart Question
1. Сделайте soft timeout. Когда пользователь придет после окончания сессии напомните ему, что в корзине есть оправа/камень и предложите выбрать из имеющихся или начать новый заказ.
2. Добавьте функциональность "save for later"
2. Добавьте функциональность "save for later"
My God!... I'm Gorgeous!
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Shopping Cart Question
Пока никто не залогинился - к сессии привязана корзина, которая никому формально не принадлежит. Как реальная корзина в магазине.Sasha3091 wrote: ↑25 Sep 2017 15:08Возможно я вас не понял. Что значит - разделять вещи в корзине?Palych wrote: ↑25 Sep 2017 15:06На амазоне так и сделано.Sasha3091 wrote: ↑25 Sep 2017 14:59 Спасибо. Будем думать как убедить клиента. Он увидел эту идею на другом сайте, где товар можно положить в корзину. Потом через 2 дня положить еще, а еще через неделю наконец-то все это купить. И все это время товары будут в корзине. Иными словами товары будут в корзине все эти 10 дней пока их либо не купят, либо не удалят сами клиенты.
Только непонятно зачем разделять вещи в корзине...
Когда кто-то логинится - он(а) забирает эту корзину себе.
Всё. "Это просто, как яйцо!"
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Shopping Cart Question
А если там два брата на том компе покупают кольца двум разным невестам с разными accounts под конец ?
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
-
- Уже с Приветом
- Posts: 11019
- Joined: 15 May 2002 02:09
- Location: Boston, MA
Re: Shopping Cart Question
если два братана собрались жениться но немогут себе позволить отдельные компьютуры,
веб сайт должен присеч этот дизастер и ... выдать ошибку?
500 Internal Server Error например..