Когда этот функционал действительно нужен и как его реализовать
Как поделиться корзиной на сайте
Сибирикс

Как поделиться корзиной на сайте

Когда этот функционал действительно нужен и как его реализовать
В интернет-магазинах мы привыкли, что в карточке товара почти всегда есть кнопка, с помощью которой можно поделиться товаром с кем-то: через соцсети, прямую ссылку или письмом на почту.
Как поделиться товаром на Wildberries
Как поделиться товаром на Wildberries
Как поделиться товаром на Ozon
Как поделиться товаром на Ozon
Поделиться товаром — базовый функционал крупных маркетплейсов и сайтов в е-коммерс. А вот возможность поделиться с кем-то целой корзиной с выбранными товарами встречается редко — это чаще история для опта. На оптовых сайтах товары может выбирать один сотрудник, оформлять покупку другой, а оплачивать — третий. Но почти всегда такой функционал сопряжен с трудностями.
Кожевина Анна
Аккаунт-директор Сибирикс
Для B2B интернет-магазинов возможность поделиться корзиной обычно заменяют личным кабинетом с несколькими уровнями доступа. Тогда корзину может собрать один сотрудник, проверить — второй, а забрать счет на оплату и комплект бухгалтерских документов — третий.

К сожалению, такая схема не сработает, когда заказ по просьбе одного человека собирает другой. Например, когда во время ремонта мебель выбирает дизайнер, а стройматериалы собирает прораб. И тут возникает необходимость поделиться корзиной — чтобы заказчик проверил и согласовал заказ, а в идеале и оплатил его.
В каких сферах обычно пригождается функционал «поделиться корзиной»:
  • строительство и ремонт: дизайнеры подбирают материалы и товары, сами собирают корзину в строительном магазине и отправляют её заказчику, чтобы тот мог просто оплатить; или заказчик может насобирать корзину материалов сам и делегировать их покупку прорабу, просто отправив ему свою корзину;
  • мода: стилисты могут собирать вещи для гардероба клиента, а потом отправлять готовую корзину для оплаты;
  • оптовые закупки: канцелярия и учебники для школьников, массовые групповые закупки одежды и игрушек у молодых мам, автозапчасти и прочее-прочее-прочее;
  • любые другие сферы, где пользователю нужен совет от супруга, родителя или любого другого авторитета (вплоть до фармы и закупок лекарств в домашнюю аптечку).

Иногда опция «поделиться корзиной» пригождается при выдаче заказа: например, если один человек оформляет заказ, другой может сверить заказ с фактом по списку товаров в корзине, когда приезжает его забрать.

Почему поделиться корзиной — сложно?

Когда делишься не конкретным товаром, а целым набором, который при этом должен сразу оказаться в корзине, могут возникнуть трудности.

Смешивание товаров в чужой корзине
Менеджер Аскольд насобирал 15 товаров в свою корзину и делится списком с кладовщиком Арменом. Но Армену до Аскольда свою корзину отправил ещё и менеджер Фридрих. Что должен сделать сайт, открытый Арменом? Варианты:
А
объединить товары Аскольда и Фридриха в одну корзину — плохо, потому что фактически два разных заказа смешиваются в один;
B
заменить товары Фридриха на товары Аскольда — можно, но тогда Армену придётся внимательно следить за тем, чей набор товаров он открывает каждый раз, чтобы ничего не перепутать (сайт может заменять товары автоматически или спрашивать разрешения, но один чёрт человеческий фактор однажды сработает);
C
открывать корзины Фридриха и Аскольда в разных вкладках — рабочий вариант, но тогда придётся заморочиться с хранением корзин в базе данных.
А если у самого Армена в корзине лежали какие-то его хотелки — что тогда? Вот-вот.
Евгений
Разработчик

Для Битрикса это всегда проблема, потому что по его политике «один аккаунт = одна корзина». Это значит, что список товаров в корзине жестко привязывается к идентификатору покупателя, и по это причине Битрикс «из коробки» не умеет делать несколько корзин для одного покупателя. Приходится искать решения. Варианты:

  1. Хранить товары не в сущности «корзина», а в отдельной таблице с организацией логики деления позиций по корзинам и подменять их в настоящую корзину в момент оформления заказа.

  2. При складывании всех товаров в одну корзину помечать каждую позицию так, чтобы можно было однозначно понять, к какой именно корзине она принадлежит. В момент оформления заказа оставлять в настоящей корзине только те товары, что нужны. А после оформления сразу восстанавливать не попавшие в заказ товары в корзине.
Разные цены
Фридрих — давний клиент с персональной скидкой в 15%, а Аскольд пока новичок без привилегий. Если Фридрих поделится корзиной с бухгалтером Анжелой с помощью ссылки, та увидит обычные цены без скидки (у неё ведь скидки нет).
Кожевина Анна
Аккаунт-директор Сибирикс
Проблемы с «поделиться корзиной» здесь будут, если нет единого личного кабинета. Если он есть, всё просто — у всех пользователей в ЛК одни и те же цены и одна корзина. При этом часто можно выбирать договор, по которому будет оплата — это влияет на цену и другие условия.
Должна ли наследоваться скидка, если пользователь делится корзиной — вопрос больше про логику работы бизнеса, а не про реализацию сайта:

  • если должна — магазин сможет отгрузить товар со скидкой пользователю без привилегий (но как тогда мотивировать пользователей покупать больше?);

  • если не должна, а сумма была согласована между пользователями за пределами сайта, — увеличение цены в корзине может стать причиной отказа от покупки.

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

В этом случае используют различные реферальные программы. Это более сложная бизнес-логика. Клиент видит корзину, полученную от дизайнера, в которой есть специальная скидка «для клиентов от дизайнера». В ссылке передается и информация о дизайнере, который привел клиента. Дизайнеру при покупке товаров клиентов может начисляться кэшбэк или бонусы.

При этом реферальная программа может работать как только на товары из корзины, которую собрал дизайнер, так и на любые заказы клиента. Вариантов реализации может быть очень много — всё зависит от потребностей бизнеса.


Изменение цен или количества товара
Беспечный Фридрих насобирал товаров по скидке, отправил ссылку на корзину бухгалтеру Анжеле, и ушёл в отпуск на три недели, директор бюджет согласовал. Анжелу 10 дней мучила камеральная проверка, и до оплаты у нее руки не доходили. А когда всё-таки дошли — цены на товары в корзине по ссылке уже изменились. В итоге Фридриху пришлось бросать свои смузи на пляже вместе с солнцезащитным кремом и бежать разруливать ситуацию.

Очевидно, что такая проблема возникнет, и если сам Фридрих притормозит с передачей счета на оплату. Но когда в цепочке от заказа до оплаты больше одного человека — риски не успеть заказать по акционной и даже прежней цене — выше. То же самое с остатками. Чем больше времени проходит от формирования корзины до оформления заказа — тем больше шансов, что товаров из заказа не останется.

Другая сложность — количество товара, которое может меняться. Например, предусмотрительный Фридрих собрал в корзине 10 позиций и отправил ссылку кладовщику Армену, чтобы посоветоваться с ним. Но в это же время шустрый Аскольд собрал корзину из 5 таких же позиций, быстренько оформил заказ и даже его оплатил. И теперь, когда Армен откроет ссылку Фридриха, в корзине окажется, что 5 из 10 товаров из списка нет на складе. Shit happens, что поделаешь.

Если мы понимаем, что в процессе покупки будет несколько пользователей и всё может затянуться — нужно предусмотреть дополнительные проверки и оповещать пользователей об изменениях. Всё должно быть максимально прозрачно и гибко:

  • цена изменилась — показать товары с изменениями: указать старую и новую цену;
  • товар кончился — предупредить, что он исключен из заказа и предложить аналоги на замену;
  • товара осталось меньше, чем надо в заказе — предложить альтернативу: заказать сколько есть, исключить из заказа, заменить на аналог;
  • и т. д.

Разные роли пользователей на сайте

Авторизованный Аскольд делится своей корзиной с юристом Людвигом, у которого нет учетной записи на сайте этого интернет-магазина. Что должен сделать сайт, открытый Людвигом?
А
Показывать пустую корзину, если для совершения покупок требуется авторизация?
В
Показывать страницу 404, если для совершения покупок требуется авторизация?
С
Показывать товары Аскольда, несмотря ни на что?
Что из этого правильно — вопрос, ответ на который зависит от бизнес-логики на сайте. Очевидно одно: чем шире функционал у авторизованных пользователей и чем больше у них всяких плюшек, тем сложнее будет делиться их корзинами. Мы обычно обговариваем решение этой проблемы с заказчиком еще на этапе аналитики.

Способы поделиться корзиной

Прямая ссылка
Самый простой вариант для пользователей — делиться с помощью ссылки: в соцсети, мессенджеры или на почту. Но для этого набор товаров из корзины нужно как-то сохранить. Типичный вариант — сохранить позиции в отдельной таблице и подписать их одинаковым уникальным ключом. В ссылке на корзину будет указываться именно этот ключ — по нему корзина с выбранными товарами откроется у другого пользователя.
Как поделиться корзиной на сайте интернет-магазина «Вертикаль»: например, отправить ссылку в мессенджер. По ней — открывается список товаров в корзине отправителя.
На сайте интернет-магазина «Оптовый двор» набор товаров из корзины можно отправить по почте. Для этого в тело письма зашивается список товаров и добавляется кнопка, по которой эти товары можно открыть в своей корзине.
Сохранение корзины в ЛК
Если на сайте предусмотрен личный кабинет, а у пользователей подразумеваются роли с разными правами, можно сохранять корзину там. Но в этом случае, опять же, всплывает проблема смешения товаров — снова придётся спрашивать пользователя, что с этим делать.

Для реализации сохраненных в ЛК корзин обычно два рабочих варианта:
1
Корзина, которой поделились, попадает не в саму корзину, а в список сохраненных корзин в личном кабинете пользователя. Дальше с ней можно работать, как с обычной сохраненной корзиной.
2
Разбить товары в корзине визуально на несколько групп. Пользователь будет видеть отдельным блоком свои товары, отдельным — те, которыми с ним поделились. При этом товары в блоках могут дублироваться. Пользователь может выбрать — заказать сразу все товары из всех блоков в корзине или оформить заказ только на отдельный блок. При этом остальные товары в корзине останутся.
Скачивать список товаров из корзины как документ
Популярная история для оптовых интернет-магазинов. Можно скачать список товаров в формате .pdf или .xls — это удобно, если оплата товаров делается по счёту и нужно лишь согласовать заказ. Схему можно использовать и в обратную сторону (но это значительно сложнее): такой файл загружается в корзину, а затем пользователь переходит к оплате товаров.
На сайте «Сима-ленд» можно скачать список товаров из корзины в формате .xls. Внутри файла будет номер заказа, артикулы и наименования товаров, цены, количество и сумма к оплате.
Использовать промежуточный шаг при просмотре корзины
При переходе по ссылке на корзину пользователь увидит экран со списком товаров из корзины, их ценами, количеством и блоком итоговой стоимости. Но товары пока не попадают в его корзину. Он сможет отметить в списке необходимые ему позиции, скорректировать количество, а после этого отправить выбранные товары в свою корзину или оформить на них заказ в один клик.

Когда такой функционал действительно нужен

Заморачиваться с возможностью поделиться корзиной стоит, если:

Заказы на сайте часто создают несколько пользователей
Они либо собирают корзину вместе, а кто-то один её оплачивает, либо делят между собой этапы оформления заказа (один собирает, второй оформляет, третий оплачивает).

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

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