Корзина после входа: гостевая и сохранённая

Покупатель добавил два товара без входа, затем авторизовался и увидел старую корзину с прошлого посещения. Новые позиции исчезли. В другом магазине обе корзины объединились, но количество оказалось неожиданным: одна и та же вещь была выбрана раньше и сейчас. До разработки оформления заказа нужно определить, что произойдёт при встрече этих двух наборов.
Ниже — модель приёмки собственного интернет-магазина. Примеры вымышлены и не описывают действующее поведение продуктов студии. В документации commercetools управление гостевой и клиентской корзинами также рассматривается как выбор стратегии. Это подтверждает необходимость отдельного решения, а не существование одного правильного способа для любой торговли.
Разделите исходные наборы до решения
Гостевая корзина относится к текущему предусмотренному контексту до входа. Сохранённая корзина связана с подтверждённым аккаунтом по правилам сервиса. Пока пользователь не вошёл, нельзя считать его известным клиентом только по похожему адресу в поле формы или данным прошлого посещения. Авторизацию и разрешённое связывание выполняет серверная часть, а не произвольная подпись в браузере.
Для обсуждения подготовьте два небольших набора и дайте им отдельные обозначения. Нужно видеть, какие строки поступают из каждого источника, а не только итоговую сумму. После объединения источник полезен для проверки и объяснения результата. Он не обязан становиться постоянной технической колонкой в интерфейсе покупателя.
Уточните также, что считается сохранённой корзиной. В системе может быть один активный набор или несколько предусмотренных списков. Не используйте случайно первый найденный объект, если магазин допускает разные контексты покупки. До создания интерфейса определите, какой набор участвует во входе и что происходит с остальными.
Одинаковый товар не задаёт правило количества
В учебном примере гостевая корзина содержит две единицы позиции А, а сохранённая — три. Можно предложить сложение до пяти, оставить текущие две или сохранить прежние три. Это разные торговые сценарии с разными последствиями для ожиданий человека. Математика не определяет намерение покупателя: сначала нужна выбранная политика или явное уточнение.
Для проверки первой версии договоримся о сложении количеств совпадающих строк. Это только условие учебной модели. Его нельзя выдавать за обязательное поведение всех платформ или безоговорочную рекомендацию магазину. Перед продолжением заказа покупатель должен увидеть итог и иметь предусмотренную возможность исправить количество.
| Правило для позиции А | Гостевая корзина | Сохранённая корзина | Учебный итог |
|---|---|---|---|
| Сложить количества | 2 | 3 | 5 |
| Оставить текущий выбор | 2 | 3 | 2 |
| Оставить сохранённый выбор | 2 | 3 | 3 |
| Спросить покупателя | 2 | 3 | До решения не определён |
Отдельно договоритесь о строках, которые встречаются только в одном наборе. При выбранном объединении их можно сохранять по предусмотренному правилу. При замене одной корзины другой судьба исключённых позиций должна быть понятна. Сообщение «вы вошли» не объясняет, почему ранее выбранный товар исчез из покупки.
Сравнивайте вариант, а не только название модели
Красная футболка размера S и синяя размера M не становятся одной строкой только из-за общего названия. В наборе должен сохраняться однозначный вариант товара. Если есть согласованные параметры изделия, влияющие на смысл строки, их тоже учитывают по определённому правилу. Нельзя объединять две разные персонализированные позиции только потому, что у них совпал базовый артикул.
Для проверки возьмите один товар с двумя вариантами и один вариант с разными предусмотренными дополнительными параметрами. Заранее укажите, какие строки должны остаться раздельными. Поле количества не должно маскировать потерю различий. После входа покупатель должен видеть, какие именно вещи оказались в корзине, а не только увеличившееся число общего названия.
Не пытайтесь определить равенство строк по тексту, который может поменяться при переводе интерфейса или переименовании каталога. Разработчик должен объяснить состав ключа строки и его связь с серверными данными. Владелец проверяет результат на понятных примерах. Для первой версии достаточно согласованного ограниченного набора свойств, если его границы честно показаны.
Вход не подтверждает актуальность старой покупки
Сохранённая позиция могла изменить доступность или условия покупки. Поэтому после выбора состава требуется предусмотренная проверка актуальных данных магазина. Нельзя автоматически считать старую подпись цены или старое состояние наличия окончательным предложением. Точный порядок расчёта определяет действующий процесс, а не значения, оставшиеся в браузере.
Если суммарные пять единиц недоступны, программа должна показать понятное расхождение. Не уменьшайте количество молча, оставляя видимость исходного решения. Возможный выбор зависит от правил: уточнить количество, убрать позицию, предложить иной допустимый сценарий. В этой статье не обещается автоматическая поставка или замена товара без подтверждения покупателя.
Скидки, доставка и дополнительные условия также не следует объединять как обычные товарные строки. Для них нужны собственные правила совместимости и пересчёта. Два одинаковых текстовых кода не означают две независимые скидки. До реализации запишите, что сохраняется из исходных наборов, что проверяется заново и какие изменения видит пользователь.
Повтор связывания не прибавляет товары ещё раз
В учебной модели две гостевые единицы и три сохранённые дали пять. Если ответ на запрос входа потерялся, повтор обработки того же связывания не должен превратить пять в семь. Это не новая покупательская команда добавить ещё две единицы. Система должна различать повтор исходного действия и самостоятельное изменение корзины после входа.
Для приёмки повторите предусмотренный запрос в тестовой среде по согласованному плану и проверьте состав, а не только уведомление. Важно также состояние гостевого набора после завершения. Он не должен оставаться источником бесконечных повторных прибавлений при обновлении страницы. Как именно фиксируется обработанное основание, зависит от архитектуры магазина.
После успешного объединения добавление пользователем ещё одной единицы является новым действием и должно работать. Защита от повтора не должна блокировать законные изменения из-за совпадения артикула. Это та же граница, что между повтором запроса и новым намерением. Её проверяют отдельными сценариями с заранее известным количеством.

Другая вкладка может изменить исходные данные
Пока покупатель входит на одном устройстве, сохранённая корзина способна измениться на другом. Для системы нужно определить, какое состояние участвует в объединении и что произойдёт при обнаруженном расхождении. Простое чтение старого набора и последующая перезапись без проверки могут потерять новое действие. Конкретную защиту выбирает разработчик под устройство хранения.
В испытании достаточно двух контролируемых вкладок или устройств одного тестового аккаунта. Между подготовкой и завершением добавьте отдельную позицию и проверьте её судьбу по согласованному правилу. Не называйте автоматическое исчезновение удачным разрешением конфликта. Если система предлагает повторить просмотр, пользователь должен увидеть актуальный состав до продолжения.
Не переносите эту задачу на покупателя фразой «не открывайте сайт в двух вкладках», если интерфейс никак не ограничивает такой сценарий. При этом первая версия может иметь известные пределы поддержки. Их следует определить и обработать понятно, а не выдавать случайное состояние за нормальную итоговую корзину.
Выход и смена аккаунта требуют самостоятельной проверки
После выхода на общем устройстве нужно проверить, какой набор остаётся доступным по выбранной модели сервиса. Корзина предыдущего пользователя не должна случайно связываться с другим аккаунтом только потому, что вкладка сохранила внутренний идентификатор. Авторизация и принадлежность ресурсов проверяются на стороне системы, а не только визуальным переключением имени в шапке.
В тесте используйте два собственных учебных аккаунта и специально различающиеся наборы. После выхода и повторного входа сравните состав. Для подтверждения не нужны настоящие адреса клиентов и реальные оплаты. Если в корзине присутствуют сведения, требующие ограничения доступа, их поведение включают в отдельную проверку безопасности.
Сохранённая корзина не обязана служить историей заказов. Завершённая покупка является другим объектом процесса. Не запускайте из демонстрации реальные списания, чтобы проверить объединение перед оформлением. Сначала доказывается правильность состава и разрешённого доступа, а платёжный сценарий испытывается своим предусмотренным способом.
Что показать владельцу перед запуском
Подготовьте непересекающиеся наборы, совпадающую позицию 2+3, разные варианты одной модели и недоступное итоговое количество. Проверьте выбранную стратегию, повтор исходного связывания и новое добавление после него. Затем включите изменение во второй вкладке и смену тестового аккаунта. В каждом случае нужен ожидаемый состав, а не только зелёный статус входа.
Для сохранения намерения полезно также проверить возврат к нужному действию после авторизации. Правильно объединённая корзина не поможет, если человек потерял путь к оформлению. Рабочий результат первой версии понятен: товары не исчезли без объяснения, количества соответствуют выбранной политике, а повтор связи не создал лишние единицы.
Материалы для проверки
Если нужна реализация
Состав работ зависит от текущего проекта и подтверждённой причины. Можно обсудить диагностику или разработку подходящего решения.
Вопросы и ответы
После входа количества всегда нужно складывать?
Нет. Сложение выбрано только для учебной модели. Магазин должен определить стратегию или предложить покупателю понятное решение.
Можно объединять строки по общему названию товара?
Нужно учитывать конкретный вариант и предусмотренные значимые параметры. Одинаковое название модели само по себе не подтверждает одинаковую покупку.
Повтор запроса входа может добавить гостевые товары снова?
Это нежелательный результат. Повтор того же связывания должен отличаться от нового действия покупателя и не создавать повторного прибавления.
Старая корзина гарантирует прежнюю цену и наличие?
Нет такого предположения в модели. Перед продолжением требуется предусмотренная проверка актуальных условий с понятным объяснением изменений.