如果再有后段给你说,让你自己处理订单,你只需要返回给后段支付状态就好了这样的话,你就抽他。。。
来到新公司查看老代码逻辑,发现一个很严重的问题:
我们的整个支付加密流程都是在前段做的,前段拿到订单信息,拿到钱数,自己生成描述,随便写一个回调地址,自己前端放私钥,前端加密,然后发给支付宝后段,支付成功之后返回给前段状态,前端把这个状态再返回给后端,整个全部都由前端来完成。
我们来分析一下这样有什么问题
- 第一条,前端拿到了支付成功,要往后段发送支付状态,这个时候断网了,发送失败,这个时候实际上客户是支付成功了的,但是后端拿不到,所以这个订单状态还会变成未支付。
- 第二条,因为整个加密流程是前端做的,我完全可以通过抓包的手段去更改这个信息,比如该支付100元改成支付1元,这样发给支付宝,也会收到支付成功的信息
- 第三条,更吓人的是,我完全可以直接返回给后端我已经支付成功的信息,不通过支付宝也能达到支付的效果,这不扯淡么
我们来理一下正确的逻辑
- 我们把需要的商品金额发给后段,后端比对之后加密返回给我所有的订单信息,包括回调什么的,后端统一管理
- 然后我们把收到的加密后的信息,发给支付宝,该怎么支付怎么支付,
- 支付完成之后,支付宝会给移动端和后端分别发送支付信息
- 然后前端把收到的信息发给后端进行比对
- 后端比对成功,更改自己订单状态
4,5两步都是以后端收到的信息为准
这样才能达到数据安全,关于钱的问题,放在前端做,这不是搞笑么,个人意见