Как сделать корзину и авторизацию в интернет-магазине?

8 заповедей от разработчиков e-commerce проектов
E-commerce проекты – одни из наших любимых. Очень затягивает продумывание логики и состояний. Нравится создавать удобные и гармоничные сайты, которые помогут пользователю испытывать удовольствие от покупок, а не негативные эмоции. Поэтому решили собрать наш опыт в небольшую заметку. Читайте, чтобы узнать, на что обращать внимание.

Добавляешь товары в корзину — проверяй наличие

Например, девушка хочет купить куртку, это решение, которое требует времени для принятия. Она кладет ее в корзину, размышляет, а через пару дней собирается ее купить. Возможны два исхода в этом случае.

При первом (неправильном) мы ничего не проверяем, получаем оплату, а когда заказ вместе с деньгами поступает поставщику, оказывается, что в наличии куртки нет. Приходится оформлять возврат средств, расстраивать девушку, которая уже была в предвкушении.

Как правильно? Постоянно, когда бы клиент не зашел в корзину, уведомлять его, в наличии ли данный товар. Может, на складе осталось всего пара штук – тоже надо сообщить.

Но есть и более интересный кейс – различные распродажи и Черные пятницы. Когда остается последняя единица товара, проверять его наличие необходимо вплоть до оформления заказа. Ведь пока ты указывал адрес, вещь уже могли забрать.

Есть еще одна ситуация – оплата товаров в рассрочку, например, бытовой техники. Представьте, вы сложили в корзину телевизор, саунд-систему и микроволновку – все товары в корзине с разными периодами и количеством платежей. Перед оформлением покупки необходимо будет привести их к единому знаменателю – на 15 месяцев, на год, на два. Адекватно отобразить это для пользователя и правильно все рассчитать. Это непростая логика, которой следует уделить особое внимание.

Храни корзину на бэкенде

Должна быть единая точка, где обсчитывается корзина. Потому что она может зависеть от конкретного пользователя (индивидуальные скидки), акций (например, дополнительная скидка при покупке через мобильное приложение) и других. Чтобы не запутаться и ничего не потерять, заведите одно место, где будете писать всю логику, в нашем случае – это бэкенд. Таким образом при каждом изменении корзины, мы дергаем бэкенд и пересчитываем ее.

Будь внимателен, объединяя корзины

У человека есть один профиль, но при этом он может заходить с разных устройств в него. Например, на работе с десктопа добавил в корзину товар, затем пришел домой, полазил еще через приложение, что-то удалил, что-то добавил, на следующий день решил оплатить их с десктопа – корзина должна отражать последние действия.

Есть кейсы и посложнее: человек серфил с авторизованного аккаунта на десктопе, выбрал и добавил в корзину пару товаров. Потом через несколько дней открыл сайт в браузере на смартфоне, не авторизовался, походил по сайту и добавил еще два товара. После чего решил оформлять заказ и авторизовался под своим аккаунтом. В этом конкретном моменте у вас должны объединиться две корзины, которые сформировались при двух состояниях – авторизованном и нет. Но тут есть нюанс.
Допустим, в первом состоянии вы выбрали 2 синих футболки, 3 пары носков и 1 джинсы. А во втором состоянии 1 синюю футболку и 1 красный свитер. Что окажется в корзине после объединения?
Мы сделали такую логику: в корзину попадают уникальные товары с наибольшем количеством. Таким образом после авторизации у вас окажется: 2 синих футболки, 3 пары носков, 1 джинсы и 1 красный свитер.

Если два человека будут сидеть с разных устройств, авторизованных в одном аккаунте, то они при обновлении корзины (добавлении/удалении товаров) увидят их общие итоговые действия. Один добавил платье у себя на устройстве, второй – белье. Корзина обновилась и каждый увидит платье и белье. Такая же логика при работе с Избранным.

Настраивай авторизацию без потерь

Большое внимание стоит уделять авторизации при оформлении заказа. Представьте, вы выбирали что-то, решили купить, ввели номер телефона, авторизовались в своем аккаунте и стали заполнять какие-то данные. При этом товары чаще всего отображены где-то слева, а не по центру экрана. И вы даже не обратили внимание, что корзины объединились, количество товаров увеличилась, а сумма заказа выросла.

Мы решили этот кейс следующим способом. Когда человек при оформлении заказа хотел авторизоваться, мы уводили его на страницу авторизации, после снова возвращали в корзину, чтобы он увидел, как все объединилось, и только потом давали возможность оформить заказ. Чтобы быть полностью уверенными, что клиент заметил разницу, мы посылали уведомление.

Все описанные ситуации отвечают на вопрос, зачем мы делаем единую логику для всей экосистемы на бэке. В противном случае можно было бы уже 10 раз потерять какие-то данные. Еще одно преимущество – мы знаем, какие товары лежат у пользователей, когда они долго не оформляют заказ, и делать какие-то реактивации, например, предлагать персональные скидки.

Делись корзиной со всеми

Тут суть кейса в том, что частенько случаются ситуации, когда вам нужно купить что-то, а выбирать будут несколько человек. Например, вы собираетесь на пикник за город с компанией и каждый хочет что-то свое. Вы делитесь корзиной, и разные люди с разных устройств складывают туда все, что необходимо. Или в случае с ремонтом, когда запросы есть от разных строительных бригад. А покупать все вам одному.

Не усложняй описание бонусных систем

Часто логика расчета итоговой цены может быть очень сложной: например, у вас есть промокод, поскольку вы оформляете товар через приложение, получаете дополнительную скидку, и покупаете вещь из магазина, где сейчас идет распродажа. В итоге сложная логика, которую не всегда стоит объяснять. Сделайте какие-то подсказки, а внимание пользователя лучше акцентируйте на том, как сильно вы его любите, что даете возможность так серьезно сэкономить.

Не настраивай авторизацию по sms

Долгое время был тренд авторизации с помощью номер мобильного телефона – после введения номера приходил подтверждающий код. Вроде все просто и прекрасно, особенно на стороне пользователя – не надо было запариваться с логинами и паролями.

Но вот маркетингу уже пора бы задуматься, а зачем им вообще этот номер? Рассылки по смскам – уже моветон. Гораздо проще и лучше – авторизация по соцсети, AppleID, google аккаунту. Ведь сегодня несложно встретить человека, у которого нет физического номера, особенно в случае частых переездов. И вообще, уже давно появились тарифы без мобильной связи – только с интернетом. Куда в таком случае маркетологи будут слать свои смски? И вообще, кто их сейчас шлет? Намного удобнее – пуши, ремаркетинг, письмо – можно много фантазировать на тему.

Одним словом, смс – это невыгодно (стоят денег) и небезопасно. Участились случаи перехвата кодов:

  • при краже телефона
  • при перевыпуске SIM-карты по поддельным документам
  • при создании twin-карт по сговору с сотрудниками оператора
  • при перехвате смс с помощью уязвимостей в самой SIM-карте или в телефоне

Второй и третий способ – самые массовые. Поэтому e-commerce проектам стоит серьезно пересмотреть подход к авторизации.

Сохраняй историю просмотров на сервере

Историю просмотров с учетом цвета и размера храним на сервере для потенциального использования в будущем, отображаем блок внизу в меню и на странице товара.

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

Историю просмотров и избранное в момент авторизации соединяем как есть для только что авторизованного пользователя с сохранением даты добавления и сортировкой по этому параметру.
Хотите сделать свой e-commerce проект с нами? Пишите hello@websecret.by