美文网首页
Android 微信H5支付,无法拉起微信支付页面

Android 微信H5支付,无法拉起微信支付页面

作者: 小猴猴_2d25 | 来源:发表于2021-05-24 15:14 被阅读0次

    最近我其中一个项目需要接入微信支付,实现方式是在WebView里利用Url拉起微信支付页面,但是实际操作的时候却发现始终无法拉起支付页面,最后排查了一段时间,发现原来是因为一个很简单的问题出错了,于是解决问题以后特意想把这个问题记录下来分享,也便于以后自己解决同类问题。

    在这里插入图片描述
    代码如上,每次微信支付走到https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=************,这个开头的url时,就停住了,根本不会跳到weixin://wap/pay?开头的url中,然后再调用startActivity打开微信客户端支付。当时我百思不得其解,到底那里出错了呢,为什么吊不起微信支付,后来我看了一下自己之前的项目,发现我原先的项目是这样的: 在这里插入图片描述

    可以看到,这里return 返回的是false,问题出在这里。这时我又在想,为什么会这样?

    查阅资料以后我发现shouldOverrideUrlLoading的返回值的意义为:

    • 若设置 WebViewClient 且该方法返回 true ,则说明由应用的代码处理该 url,WebView 不处理,也就是程序员自己做处理。
    • 若设置 WebViewClient 且该方法返回 false,则说明由 WebView 处理该 url,即用 WebView 加载该 url。
    • 若没有设置 WebViewClient 则由系统(Activity Manager)处理该 url,通常是使用浏览器打开或弹出浏览器选择对话框。

    那么这种情况下,返回值应该改为 false或者super .shouldOverrideUrlLoading(view, url); ,因为微信支付调用https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb这个开头的url后,会重定向到weixin://wap/pay开头的url,然后调用微信客户端支付,如果用true,则WebView不会自动重定向到weixin://wap/pay开头的url,需要程序员自行处理,这种情况下自然是无法吊起支付的。

    相关文章

      网友评论

          本文标题:Android 微信H5支付,无法拉起微信支付页面

          本文链接:https://www.haomeiwen.com/subject/mspxsltx.html