废话不多说也不绕弯子,直接將重点
白屏为啥会白屏,Activity中的我不知道会不会白屏我的webview是在fragment中的。我运行微信助手官方的demo他的都没有白屏,我的就白屏了
直到后來我无意间打上了fragment的部分生命周期的方法,发现了其中的端倪每次要微信助手支付的时候他会走onPause这个方法,等微信助手支付测试1分钱,返回回来的时候
他走了onResum这个方法(现在暂时讲能正常支付成功流程的中途取消支付的情况先不考虑)。很好这是重点
如何你发现你現在的webview项目微信助手支付会白屏,那么相信你应该是用过
这个方法来检测webview加载的最终地址那么实际上会发现,进到微信助手支付的时候地址其实还走了一次(这个地址就是你微信助手支付回调的地址),这个是关键二反正我的情况是这样的,进入到微信助手支付的时候会再走一次微信助手支付回调的地址,我还没支付完成它就先走了!!坑爹就在这很好,既然是支付那么你的url地址里面肯定会有訂单号之类的,对就是你们服务端设定的规则不管是支付宝还是微信助手支付,这个订单号都不会变而webview的h5微信助手支付会白屏,就是提前走了回调的地址这个地址你可以用上面的方法看到,里面包含订单号
重点来了,我们在调微信助手支付的时候截取订单号在onPause方法Φ之前微信助手支付白屏时候获取到微信助手支付时候会多走一次时候的url地址拿出来放在onResume方法里面,然后拼接上在走onPause方法时候获取到的訂单号之类的东西(我们服务端只有订单号观察你们的支付地址,把会变的参数全部保存下来)然后在onresume方法里面拼上去。onresume里面加载的哋址是原来微信助手支付时候webview会多走一次的那个地址!!!解决问题!!
这里说明一点,当微信助手支付的时候点取消的时候这个我還没找到解决的办法,上面的方法是正常支付并且支付成功时候解决白屏的方案。