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

android 专栏收录该内容
3 篇文章 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,需要程序员自行处理,这种情况下自然是无法吊起支付的。

  • 2
    点赞
  • 5
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值