2010-11-21 137 views
3

说我有一个600.00的笔记本电脑。说我把它改为$ 650.00。购物车如何处理?他们是否会将价格存储在购物车或商品中?他们如何确保他们能够得到他们想要的价格,但是如果不向他们询问新的变化,不向客户开账单?或者大部分存储在两个?购物车价格变化

我在想也许我可以把它存储在两个。 因此,如果当前价格超过购物车的购物车价格,请不要将其从购物车中移除/收取。然后,告诉他们什么是收费/电子邮件收据的项目,没有改变的收费(说他们有多一个项目),并从购物车中删除它。对于确实发生变化的物品,请说出“由于价格变化而留在购物车中的物品”,请检查您是否仍然希望以新价格购买物品。“因此,请保留购物车中已更改的物品,但更新购物车中的价格。

多数民众赞成我的想法如何做到这一点。我不认为语言应该重要。猜猜这更像是一个逻辑类型问题。大多数购物车是这样做还是有更好的方法?

回答

2

简单的购物车只是通过会话和cookie进行维护的产品阵列。你可以做任何你想做的事。只要确保用户无法做任何他们想要的事情,比如通过url更改价格。但最重要的是,用户可以非常方便地结帐。

大多数开发人员将创建一个包含产品对象的数组,因此如果对产品购物车进行任何更改都会反映此更改。然而,如果您更改价格,那么很明显,如果用户点击价格,但是您更改了价格,则用户会遇到问题,并且用户在付费或变得困惑之后才会看到此更改,为什么价格在购物体验中上升。

在维护订单项方面,如果您有用户登录后才能将商品添加到购物车,则无需担心创建Cookie /会话以存储订单项的数组,直到他们完成结账和订单项与他们的信息一起保存供以后参考。

在这种情况下,您需要创建一个与该对象关联的订单项,以便您可以获取所有产品信息,但同时将价格存储在该实际LineItem模型中,因此如果您更新您的价格不会影响购物者的中等购买体验。

如果您希望用户支付更高的价格,因为您改变主意并希望使用订单项模型,则只需执行最后一段中的内容,并在用户决定结账之前检查价格即可。如果它不同,那么让他们不要认为这款产品现在可以购买,不要忘记道歉。

2

简而言之,这一切都取决于它是如何编码的。

我假设您正在谈论的交易正在进行中。如果在用户完成交易后价格发生变化,那么在客户服务方面它将被视为“坏事”,并且可能在您的付款处理器中是非法的。

我喜欢你比较购物车价格和最新价格的想法。但是,如果用户可以在请求中更改物品的价格以查看购物车,则可能会导致许多实际收取的费用问题。例如,如果用户将笔记本电脑的价格更改为1200美元,并且在您的代码中,您减少了购物车中的价值差异,他们可以将该笔记本电脑的价格设为0美元,这将是一件“坏事”。

$ 12时 - 用户输入 $ 600 - 实际价格 - $ 600 - 对价格 调整$ 0 - 价格客户收费?

另一个例子是,如果您将该商品的价格设置为用户可以编辑的价值,并且他们是恶意用户,他们可能会将价格更改为 - $ 600.00,这也将是一件“坏事” 。

更安全的做法是将商品的商品ID存储在链接中以查看购物车,然后每次查看购物车中商品的价格(总数等)的要求。这样,如果恶意用户尝试了加号或减号技巧,他们只会收到消息,指出价格已更新为“当前价格”。

OWASP网站有一些开源的安全工具,可以帮助您测试代码,防止用户尝试高度插入购物车。他们的地址是http://www.owasp.org

0

如果购物车只包含对物品的引用(如id /主键),则根本不需要将价格存储在两个地方。您只需在购物车中加载物品时,它们就会自动反映这些变化。在大多数情况下,从用户的角度来看,这种变化并不是什么大不了的。