如果再有后段給你說,讓你自己處理訂單,你只需要返回給后段支付狀態(tài)就好了這樣的話,你就抽他。。。
來到新公司查看老代碼邏輯,發(fā)現(xiàn)一個(gè)很嚴(yán)重的問題:
我們的整個(gè)支付加密流程都是在前段做的,前段拿到訂單信息,拿到錢數(shù),自己生成描述,隨便寫一個(gè)回調(diào)地址,自己前端放私鑰,前端加密,然后發(fā)給支付寶后段,支付成功之后返回給前段狀態(tài),前端把這個(gè)狀態(tài)再返回給后端,整個(gè)全部都由前端來完成。
我們來分析一下這樣有什么問題
- 第一條,前端拿到了支付成功,要往后段發(fā)送支付狀態(tài),這個(gè)時(shí)候斷網(wǎng)了,發(fā)送失敗,這個(gè)時(shí)候?qū)嶋H上客戶是支付成功了的,但是后端拿不到,所以這個(gè)訂單狀態(tài)還會(huì)變成未支付。
- 第二條,因?yàn)檎麄€(gè)加密流程是前端做的,我完全可以通過抓包的手段去更改這個(gè)信息,比如該支付100元改成支付1元,這樣發(fā)給支付寶,也會(huì)收到支付成功的信息
- 第三條,更嚇人的是,我完全可以直接返回給后端我已經(jīng)支付成功的信息,不通過支付寶也能達(dá)到支付的效果,這不扯淡么
我們來理一下正確的邏輯
- 我們把需要的商品金額發(fā)給后段,后端比對之后加密返回給我所有的訂單信息,包括回調(diào)什么的,后端統(tǒng)一管理
- 然后我們把收到的加密后的信息,發(fā)給支付寶,該怎么支付怎么支付,
- 支付完成之后,支付寶會(huì)給移動(dòng)端和后端分別發(fā)送支付信息
- 然后前端把收到的信息發(fā)給后端進(jìn)行比對
- 后端比對成功,更改自己訂單狀態(tài)
4,5兩步都是以后端收到的信息為準(zhǔn)
這樣才能達(dá)到數(shù)據(jù)安全,關(guān)于錢的問題,放在前端做,這不是搞笑么,個(gè)人意見