如果再有后段給你說预鬓,讓你自己處理訂單,你只需要返回給后段支付狀態(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ā)給后段衡查,后端比對(duì)之后加密返回給我所有的訂單信息瘩欺,包括回調(diào)什么的,后端統(tǒng)一管理
- 然后我們把收到的加密后的信息拌牲,發(fā)給支付寶俱饿,該怎么支付怎么支付,
- 支付完成之后塌忽,支付寶會(huì)給移動(dòng)端和后端分別發(fā)送支付信息
- 然后前端把收到的信息發(fā)給后端進(jìn)行比對(duì)
- 后端比對(duì)成功拍埠,更改自己訂單狀態(tài)
4,5兩步都是以后端收到的信息為準(zhǔn)
這樣才能達(dá)到數(shù)據(jù)安全土居,關(guān)于錢的問題枣购,放在前端做,這不是搞笑么擦耀,個(gè)人意見