鍍金池/ 問答/HTML5  HTML/ H5商城項(xiàng)目里關(guān)于價(jià)格運(yùn)算是由前端來做還是后端來做?

H5商城項(xiàng)目里關(guān)于價(jià)格運(yùn)算是由前端來做還是后端來做?

公眾號(hào)里的h5商城項(xiàng)目,比如買下選擇了三個(gè)糖果,點(diǎn)立即購買跳到結(jié)算頁,結(jié)算頁有個(gè)“合計(jì)”多少錢,像這種運(yùn)算都是把商品價(jià)格和數(shù)量傳給后端再從后端拿到,還是前端自己算出來?不過js浮點(diǎn)運(yùn)算有精度問題,是都交給后端來算吧?

回答
編輯回答
遺莣

此類業(yè)務(wù),一般要求前后端都要進(jìn)行計(jì)算的!
理由:

前端計(jì)算價(jià)格用于快速顯示,提高用戶體驗(yàn),并減少服務(wù)端壓力。

比如有些需要?jiǎng)討B(tài)計(jì)算價(jià)格的業(yè)務(wù),此類業(yè)務(wù)前端一般是onchange事件,根據(jù)輸入不同,價(jià)格不同。如果前端依賴后端計(jì)算出來的價(jià)格,需要頻繁的請(qǐng)求接口,那服務(wù)端的壓力就會(huì)變得很大,同樣的頁面上價(jià)格顯示會(huì)有短暫延遲!不過您也可以選擇將onchange事件改為onblur失去焦點(diǎn)事件,這樣確實(shí)可以變向的減輕服務(wù)端壓力,但這樣體驗(yàn)又不好!因此前端很有必要計(jì)算價(jià)格!

后端計(jì)算價(jià)格用于安全把控。

如果僅僅前端計(jì)算價(jià)格,完完全全可以劫持?jǐn)?shù)據(jù)請(qǐng)求更改價(jià)格,到時(shí)候就有可能出現(xiàn)1分錢買100塊錢的物品!

2017年11月8日 14:33
編輯回答
病癮

其實(shí)這個(gè)問題根本就不用問,因?yàn)楸仨毢蠖怂?。并且過程是這樣的 。
1、后臺(tái)加載訂單或者商品,這里訂單的總價(jià)可以是前端算,但是注意精度。
2、當(dāng)有代金券或者優(yōu)惠券等減少金額的也可以在前端算 。但是只是提供展示。
3、訂單提交,把訂單中的商品信息帶過去,包括訂單金額、優(yōu)惠券之類都提交過去。
4、后端接到信息后,應(yīng)該根據(jù)訂單中有的商品,重新查數(shù)據(jù)庫得到準(zhǔn)確的價(jià)格,重新計(jì)算然后如果有代金券要校驗(yàn)代金券的真實(shí)性和有效性,然后再計(jì)算總價(jià)。這個(gè)總價(jià)是有意義的,決定著最后支付的金額多少。
5、有人肯定會(huì)問、那前端的總金額提交后臺(tái)有什么用?可以做一個(gè)對(duì)比,如果計(jì)算的結(jié)果和前端的總價(jià)有區(qū)別,那證明這個(gè)訂單有問題 。要么是頁面沒刷新,導(dǎo)致商品價(jià)格、代金券之類有偏差,可以直接返回到對(duì)應(yīng)的提示頁面,告訴用戶刷新重新提交訂單。另外有可能信息被篡改,那同樣的處理,如果是0.01這種,需要記錄日志做對(duì)應(yīng)的處理懲罰或者預(yù)防 。

手機(jī)打字不容易,有幫助請(qǐng)采納和點(diǎn)贊。?

2018年7月17日 19:56
編輯回答
愚念

初始時(shí),后端返給前端商品單價(jià),前端根據(jù)所購數(shù)量計(jì)算總價(jià)=單價(jià)*數(shù)量,然后提交給后端。

2018年2月2日 19:25
編輯回答
眼雜

后端算的。
前端不能算不是因?yàn)榫?,而是因?yàn)樽罱K價(jià)格通常會(huì)受其它因素影響,比如折扣規(guī)則,滿減規(guī)則等,前端算是不劃算的。

2018年6月7日 09:23
編輯回答
笑忘初

因?yàn)闋砍兜藉X的問題,可以前端進(jìn)行計(jì)算,之后將計(jì)算結(jié)果和數(shù)量及商品等信息傳給后端進(jìn)行二次驗(yàn)證,前端精度不夠的話,以后端返回?cái)?shù)據(jù)為準(zhǔn)。

2018年3月29日 17:42
編輯回答
兮顏

展示的價(jià)格由前端來算,實(shí)際訂單價(jià)格由后臺(tái)生成。
因?yàn)榍岸耸遣话踩?,?shù)據(jù)是可以被變更的,所以價(jià)格必須后臺(tái)算,也就是說,前端計(jì)算的價(jià)格,只是給用戶看的,實(shí)際價(jià)格,是后臺(tái)生成的。所以就產(chǎn)生了另外一個(gè)問題,前后端計(jì)算價(jià)格一致的問題,當(dāng)然如果后臺(tái)兄弟夠好的話,也可以給前端開一個(gè)接口,專門用來給前端計(jì)算價(jià)格而不生成訂單數(shù)據(jù),這就要取決于和后臺(tái)的情感了,畢竟這不是后臺(tái)必須做的事情。
以前也發(fā)生過前端計(jì)算價(jià)格傳給后臺(tái),然后數(shù)據(jù)被有心人攔截,價(jià)格全部改為0.01元,而正常的購買商品的案列,為了安全,現(xiàn)在后臺(tái)是不會(huì)使用前端的計(jì)算價(jià)格的,其他數(shù)據(jù)也是一樣的道理,涉及到安全性的,都應(yīng)該后臺(tái)來做。

2018年9月16日 10:08
編輯回答
離夢(mèng)

我問了下我們公司同事,結(jié)果一般是由后臺(tái)計(jì)算的

2017年1月17日 01:19
編輯回答
愿如初

涉及錢的事情,前后端都要計(jì)算
前端計(jì)算主要是為了快速響應(yīng),提升用戶體驗(yàn)
后端計(jì)算是為了訂單時(shí)確定
這就好比JD之類,一般瀏覽購物車時(shí)的計(jì)算是客戶端計(jì)算,但正式訂單付錢時(shí)是后端計(jì)算確認(rèn)的。
特別有促銷行為計(jì)算規(guī)則,涉及用卷、用折扣卡之類,必須后端確認(rèn)用戶是否有這些東西啊。

2017年6月17日 16:17
編輯回答
深記你

涉及錢的話,一般以分為單位,例如5元就是500,這樣不會(huì)出現(xiàn)小數(shù),就不會(huì)出現(xiàn)浮點(diǎn)誤差。
但是后端也要計(jì)算價(jià)格,前端只是給客戶看的,隨時(shí)都可以直接改請(qǐng)求發(fā)個(gè)不用錢,所以后端要驗(yàn)證實(shí)際的價(jià)格。

2018年2月17日 07:27