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

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

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

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

微信支付支付窗口回退页问题解决方案_第1张图片

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

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

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

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

你可能感兴趣的:(微信)