微信支付支付窗口回退页问题解决方案

问题描述:我们的使用场景是微信的当面付,当用户扫码支付的流程概括如下:

用户扫码(前端地址)-->前端请求后端获取跳转微信授权url-->前端发起重定向跳转微信--> 微信授权下发auth_code--> 重定向到后端接口-->请求后端携带auth_code请求微信获取openId-->微信返回openid给后端,后端携带openid重定向给前端(h5)-->前端(h5)发起预下单请求服务端(JSAPI) --> 预下单成功之后返回预下单成功微信支付需要参数给前端-(h5)->前端(h5)调用微信sdk唤起支付。

上面流程即为用户扫码到唤起支付的流程,当这个流程上线之后,微信唤起支付窗口包含回退按钮,如图:

这个回退按钮虽然不影响支付,但是还是并不是完美。这是因为总共进入前端页面两次,第一次扫码进入页面没有openId,第二次又重定向到页面发起支付。

修改流程为:
用户扫码(后端地址)-->后端重定向跳转微信--> 微信授权下发auth_code--> 重定向到后端-->后端携带auth_code请求微信获取openId-->携带openid重定向前端(h5)-->前端(h5)发起预下单请求服务端(JSAPI) --> 预下单成功之后返回预下单成功微信支付需要参数给前端-(h5)->前端(h5)调用微信sdk唤起支付。

上面这个流程,只有最终携带openId才会跳转到前端h5,故次解决该问题。

注意:上面微信重定向可以重定向前端/后端地址,建议跳转后端地址,因为微信回调的时候,会携带app_id等信息 。为了安全起见,建议跳转到后端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值