H5 微信支付 IOS 系统 支付成功返回safari 浏览器
详细描述: H5(直接用浏览器打开), 打开下单成功返回的(mwebUrl) 后端接口返回. 打开方式.【window.location.href = data['mwebUrl']】, 在IOS系统中支付成功后会自动返回safari浏览器中. 【mwebUrl】 例子: https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx05150425827461fd2debf9942616791604&package=625169381 IOS版本 [ 9.* , 12.*] Android 系统正常. ps: 网上只查询到设置referrer 为 scheme:// , 但是浏览器不让设置referrer. 是否我哪里做的不对? 另外官方的demo, 也有这个问题. 问题已解决: H5浏览器用微信支付在IOS系统支付完成后停留微信. 解决办法: 最终url结果: https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx09190637968384b7d3824f640214976674&package=1388087927&redirect_url=localhost%3A8080%2F%23%2FpaySuccess%3ForderNum%3D201903091609360471001512227 核心问题: 1. redirect_url=uaterp.aihuaol.com这个uaterp.aihuaol.com不要带有协议,如http:// https://, 如带有协议,会打开safari浏览器并打开网站首页. -- 我就是用的域名带有协议的域名,坑了好一段时间. redirect_url 的格式为: uaterp.aihuaol.com/要跳转的界面; (虽然不会真的跳转, 但是如果没有会报404错误,不会停在微信) 其他问题: 1. 跳转地址需要进行urlencoder 编码. 编码方法: encodeURIComponent, 不要使用encodeURI 2. 只编码跳转地址.不要连&redirect_url= 一起进行编码. -- 否则 会签名验证失败. 3. 打开支付页面的方法, 其他浏览器 window.location.href, safari 使用window.open(url, '微信支付', '', true) -- 否者IOS支付成功后返回页面是个空白页,支付取消也是个空界面. 4. Safari 浏览器 调用window.open,回调之后没有反应. 解决办法: https://www.cnblogs.com/eyunhua/p/5960819.html?utm_source=itdadao&utm_medium=referral PS: 遗留问题, IOS支付后会有两个支付的窗口等待用户确认支付是否成功. 一个前端视角下的微信支付流程(调用两次后端接口, 一次前端微信浏览器对象): [图片] 仅供参考~ 祝各位: 少踩坑, 少加班,早回家~