изменение цены в корзине - PullRequest
4 голосов
/ 21 ноября 2010

Скажите, что у меня есть ноутбук за 600.00.Скажем, я изменил это до $ 650,00.Как с этим справляются тележки?Как они хранят цену в корзине или товара?Как они гарантируют, что получат желаемую цену, но не выставляют счет клиенту за новое изменение, не спрашивая его?Или большинство хранит их в обоих?

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

Вот моя идея о том, как это сделать.Я не думаю, что язык должен иметь значение.Угадайте, это больше вопрос логического типа.Большинство тележек делают это так или есть лучший способ?

Ответы [ 3 ]

3 голосов
/ 21 ноября 2010

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

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

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

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

И если вы хотите, чтобы пользователи платили более высокие цены, потому что вы передумали и хотите использовать модель позиции, вы можете просто сделать то, что указано в последнем абзаце, и проверить цену прямо перед тем, как пользователь решит оформить заказ. Если это не так, пусть они не говорят, что этот продукт теперь на сумму x, и не забудьте извиниться.

2 голосов
/ 21 ноября 2010

Короткий ответ, все зависит от того, как он был закодирован.

Я предполагаю, что транзакция, о которой вы говорите, выполняется.Если цена изменится после того, как пользователь завершит транзакцию, то это будет считаться «плохой вещью» с точки зрения обслуживания клиентов и потенциально может быть незаконным в глазах вашего обработчика платежей.

Мне нравится вашаИдея сравнения цены в корзине с новейшей ценой.Однако, если пользователь может изменить значение цены товара в запросе на просмотр корзины, это может вызвать много проблем с тем, с чего он фактически взимает плату.Например, если пользователь изменил цену ноутбука на 1200 долларов, а в своем коде вы уменьшили стоимость в своей корзине на разницу, он мог бы получить этот ноутбук за 0 долларов, что было бы «плохой вещью».

$ 1200 - Пользовательский ввод $ 600 - Фактическая цена - $ 600 - Корректировка с ценой $ 0 - цена с клиента взимается?

Другим примером будет, если вы сделаете цену предмета значением, которое пользователь может редактировать,и они злонамеренные пользователи, они могут потенциально изменить цену на - $ 600,00, что опять-таки будет «плохой вещью».

Более безопасный способ сделать это - сохранить идентификатор предмета.в корзине по ссылке, чтобы просмотреть корзину, затем извлекать / обновлять цену товара в корзине каждый раз, когда запрашиваются свойства (итоговые и т. д.) корзины.Таким образом, если злонамеренный пользователь попробует трюк с плюсом или минусом, он просто получит сообщение, что цена обновлена ​​до «текущей цены».

На сайте OWASP есть несколько инструментов безопасности с открытым исходным кодом, которые могут помочь протестировать ваш код на предмет ситуаций, когда пользователь пытается увеличить свою корзину покупок.Их адрес http://www.owasp.org

0 голосов
/ 21 ноября 2010

Если корзина просто содержит ссылку на товар (например, идентификатор / первичный ключ), вам не нужно хранить цену в двух местах.Вы просто загружаете объекты из корзины, когда они вам нужны, и цены автоматически отражают изменения.В большинстве случаев изменения будут достаточно редкими, чтобы с точки зрения пользователя это не имело большого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...