1、背景:
我方开发了一套h5商城,购买、下单、唤起微信进行微信h5支付、使用等都由h5页面端开发完成,第三方app端只管给个入口访问这套h5商城部署后的链接即可。
2、声明:
一说起微信h5支付,很多人都以为是微信jssdk支付(在微信公众号使用的支付方式),实际h5端微信支付分为两种:jssdk支付、微信h5支付,我这里说的就是微信h5支付(非微信环境使用的微信支付方法)。
3、遇到的问题:
第三方app访问我方h5商城链接,到唤起微信支付时,拿到mweb_url后安卓端却直接用手机自动浏览器打开,然后就报错:“商家参数格式有误,请联系商家解决”。
4、问题分析原因:
拿到mweb_url后安卓端不应该直接唤起自带浏览器直接打开mweb_url,而是应该让h5页面拿到mweb_url后,直接打卡即可,否则前往微信端后会丢失 referer 。
以下是我遇到问题时跳转代码:
至于该打开url方式为什么会唤起自带浏览器,我没有去研究具体原因,因为经我测试只有部分app用这样的方法是唤起自带浏览器,部分app根本不会出现这样的问题,很有可能是第三方app的原因导致,这种问题很难定位,比较诡异
那怎么办?把问题抛给对方解决?第三方往往是爸爸,人家会管你? 只能自己硬着头皮各种尝试,各种研究调试了,不是自己的问题也得找问题,哎,,,,,,,,,,,,,,,。
5、解决方案1(不推荐,因为需要双方配合):
h5页面拿到mweb_url后发送给app端,app拿到后进行二次打开,实现代码大致如下:
解决方案2(推荐,ios和安卓都支持):
在ios app端,嵌入的h5支付,支付完成后会自动跳转到safari浏览器无法返回app,此时在safari浏览器打开的刚刚好是h5页面的主页,所以,机会点来了:在safari浏览器打开的那个h5页面判断是否是safari浏览器,如果是通过app协议跳转回到app: