H5商城项目里关于价格运算是由前端来做还是后端来做?

唐伯虎点蚊香
  • 374

公众号里的h5商城项目,比如买下选择了三个糖果,点立即购买跳到结算页,结算页有个“合计”多少钱,像这种运算都是把商品价格和数量传给后端再从后端拿到,还是前端自己算出来?不过js浮点运算有精度问题,是都交给后端来算吧?

评论
阅读 4.5k
9 个回答

其实这个问题根本就不用问,因为必须后端算 。并且过程是这样的 。
1、后台加载订单或者商品,这里订单的总价可以是前端算,但是注意精度。
2、当有代金券或者优惠券等减少金额的也可以在前端算 。但是只是提供展示。
3、订单提交,把订单中的商品信息带过去,包括订单金额、优惠券之类都提交过去。
4、后端接到信息后,应该根据订单中有的商品,重新查数据库得到准确的价格,重新计算然后如果有代金券要校验代金券的真实性和有效性,然后再计算总价。这个总价是有意义的,决定着最后支付的金额多少。
5、有人肯定会问、那前端的总金额提交后台有什么用?可以做一个对比,如果计算的结果和前端的总价有区别,那证明这个订单有问题 。要么是页面没刷新,导致商品价格、代金券之类有偏差,可以直接返回到对应的提示页面,告诉用户刷新重新提交订单。另外有可能信息被篡改,那同样的处理,如果是0.01这种,需要记录日志做对应的处理惩罚或者预防 。

手机打字不容易,有帮助请采纳和点赞。?

此类业务,一般要求前后端都要进行计算的!
理由:

前端计算价格用于快速显示,提高用户体验,并减少服务端压力。

比如有些需要动态计算价格的业务,此类业务前端一般是onchange事件,根据输入不同,价格不同。如果前端依赖后端计算出来的价格,需要频繁的请求接口,那服务端的压力就会变得很大,同样的页面上价格显示会有短暂延迟!不过您也可以选择将onchange事件改为onblur失去焦点事件,这样确实可以变向的减轻服务端压力,但这样体验又不好!因此前端很有必要计算价格!

后端计算价格用于安全把控

如果仅仅前端计算价格,完完全全可以劫持数据请求更改价格,到时候就有可能出现1分钱买100块钱的物品!

后端算的。
前端不能算不是因为精度,而是因为最终价格通常会受其它因素影响,比如折扣规则,满减规则等,前端算是不划算的。

展示的价格由前端来算,实际订单价格由后台生成。
因为前端是不安全的,数据是可以被变更的,所以价格必须后台算,也就是说,前端计算的价格,只是给用户看的,实际价格,是后台生成的。所以就产生了另外一个问题,前后端计算价格一致的问题,当然如果后台兄弟够好的话,也可以给前端开一个接口,专门用来给前端计算价格而不生成订单数据,这就要取决于和后台的情感了,毕竟这不是后台必须做的事情。
以前也发生过前端计算价格传给后台,然后数据被有心人拦截,价格全部改为0.01元,而正常的购买商品的案列,为了安全,现在后台是不会使用前端的计算价格的,其他数据也是一样的道理,涉及到安全性的,都应该后台来做。

因为牵扯到钱的问题,可以前端进行计算,之后将计算结果和数量及商品等信息传给后端进行二次验证,前端精度不够的话,以后端返回数据为准。

涉及钱的事情,前后端都要计算
前端计算主要是为了快速响应,提升用户体验
后端计算是为了订单时确定
这就好比JD之类,一般浏览购物车时的计算是客户端计算,但正式订单付钱时是后端计算确认的。
特别有促销行为计算规则,涉及用卷、用折扣卡之类,必须后端确认用户是否有这些东西啊。

初始时,后端返给前端商品单价,前端根据所购数量计算总价=单价*数量,然后提交给后端。

涉及钱的话,一般以分为单位,例如5元就是500,这样不会出现小数,就不会出现浮点误差。
但是后端也要计算价格,前端只是给客户看的,随时都可以直接改请求发个不用钱,所以后端要验证实际的价格。

视尚觉品牌设计
  • 2
新手上路,请多包涵

我问了下我们公司同事,结果一般是由后台计算的

宣传栏