收藏
回答

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支付后会有两个支付的窗口等待用户确认支付是否成功.


一个前端视角下的微信支付流程(调用两次后端接口, 一次前端微信浏览器对象):



仅供参考~

祝各位: 少踩坑, 少加班,早回家~

    

最后一次编辑于  03-11
回答关注问题邀请回答
收藏

1 个回答