收藏
回答

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


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



仅供参考~

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

    

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

1 个回答

  • 微信支付技术助手
    微信支付技术助手
    2019-03-06

    您好,请参考:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4

    2019-03-06
    赞同
    回复 3
    • liyang
      liyang
      2019-09-20
      你们官方的都是吃屎的吗?微信支付有bug懂吗?一有人问这个问题你们就把文档地址复制过来,难道开发人员不看文档吗?!?!
      2019-09-20
      3
      回复
    • Eagle
      Eagle
      01-08
      你好,我参考的是你们微信提供的支付测试 https://wxpay.wxutil.com/mch/pay/h5.v2.php
      我有两个问题请教一下:
      1. 我在iphone手机上,使用chrome浏览器发起微信支付,支付完成之后,微信唤起的是safari浏览器,而不是chrome浏览器,我想问,这个可以控制在chrome浏览器唤起支付么?
      2.我在iphone手机上,使用safari浏览器发起微信支付,支付成功唤起的回调页面与发起页面是同一个,如果没有支付成功,唤起的回调页面是一个新的tab,请问,这个是可以通过某个参数来控制的么?
      01-08
      回复
    • Eagle
      Eagle
      01-08
      01-08
      回复
登录 后发表内容