个人支付宝微信支付回调实现原理
2020-10-20
用户打开浏览器,先从sessionStorage读取订单号,如果本地没有则生成订单号,sessionStorage保存一份,post订单号和支付类型给后端
后端收到请求后,生成待付费用(整数+随机小数),将订单号,支付类型,待付费用,时间戳,写入订单表(id 订单号 待付费用 时间戳),将待支付费用返回前端;
前端收到响应后,渲染二维码,待付费用,订单号,开始倒计时,等待用户支付
用户支付后,收款方手机收到通知,收款方手机安装回调客户端,后台读取通知栏信息,post给后端
后端根据post数据判断出是来自哪个订单的(查询订单表2分钟内,待付金额和已支付金额相同的订单),将订单和支付信息插入支付成功表
前端post订单号轮询后端查询支付成功表确认是否支付成功
后端开一个任务定期清理一次4分钟以前的待支付订单记录
如果不用数据库存储临时订单信息,就需要在内存创建一个数据结构,订单号费用时间戳都存储在其中,对于前端轮询订单是否成功也是在这个数据结构中操作
注意:把APP常驻后台运行,不被后台关闭就可以了,微信,支付宝也要登录而且要开启收款到账语音提示,常驻后台运行。
apk的原理是获取通知栏的收款通知信息,然后把这些信息传到数据库
应用场景-论坛注册码
http://seczh.com/?user/add.html
前端
支付前
支付后