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