关于安卓webview中的H5微信支付返回白屏的问题解决方案

本文介绍了解决WebView在微信支付过程中出现白屏的问题。通过在onPause方法中捕获订单号,并在onResume中利用该订单号重新构建支付回调URL,可以有效避免白屏现象。此方案适用于支付成功的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


废话不多说,也不绕弯子,直接将重点。

 

白屏为啥会白屏,Activity中的我不知道会不会白屏,我的webview是在fragment中的。我运行微信官方的demo,他的都没有白屏,我的就白屏了。

直到后来我无意间打上了fragment的部分生命周期的方法,发现了其中的端倪。每次要微信支付的时候他会走onPause这个方法,等微信支付,测试1分钱,返回回来的时候

他走了onResum这个方法(现在暂时讲能正常支付成功流程的,中途取消支付的情况先不考虑)。很好这是重点。

如何你发现你现在的webview项目微信支付会白屏,那么相信你应该是用过

onPageFinished

这个方法来检测webview加载的最终地址,那么实际上会发现,进到微信支付的时候,地址其实还走了一次(这个地址就是你微信支付回调的地址),这个是关键二,反正我的情况是这样的,进入到微信支付的时候,会再走一次微信支付回调的地址,我还没支付完成它就先走了!!坑爹就在这。很好,既然是支付,那么你的url地址里面肯定会有订单号之类的,对就是你们服务端设定的规则,不管是支付宝还是微信支付,这个订单号都不会变。而webview的h5微信支付会白屏,就是提前走了回调的地址,这个地址你可以用上面的方法看到,里面包含订单号。

 

重点来了,我们在调微信支付的时候截取订单号在onPause方法中,之前微信支付白屏时候获取到微信支付时候会多走一次时候的url地址拿出来放在onResume方法里面,然后拼接上在走onPause方法时候获取到的订单号之类的东西(我们服务端只有订单号,观察你们的支付地址,把会变的参数全部保存下来),然后在onresume方法里面拼上去。onresume里面加载的地址是原来微信支付时候,webview会多走一次的那个地址!!!解决问题!!

这里说明一点,当微信支付的时候点取消的时候,这个我还没找到解决的办法,上面的方法是正常支付,并且支付成功时候解决白屏的方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值