Android集成支付宝,H5支付页面点击无反应

时间:2024-03-31 09:58:24

前段时间项目需求,集成了支付宝手机支付功能,集成过程中一切顺利,禁不住感叹大厂提供的东西就是给力。然而今天测试拿手机过来,跟我说手机未安装支付宝的时候,使用H5支付某些按钮点击无效。然后我去看了一下,还真是,但是奇怪的是部分手机没有问题,小部分手机出现了这个情况,同样一套代码,怎么会有两种区别这么大的结果。第一反应是想是不是支付宝的包出问题了,然后就去支付宝论坛查阅,并没用招到解决的方案。

Android集成支付宝,H5支付页面点击无反应

操作如上图所示,

情况1:当点击返回按钮时,会有个确认退出的提示框,测试点击"否"是有效的,但是点击"是",则没用一点相应。

情况2:当输入手机号结束后,点击下一步,也是任何相应都没有。

最后,我联系上了支付宝的技术支持工程师,加了钉钉来一起解决问题,当时,他给我抛了这样一个链接https://tech.open.alipay.com/support/knowledge/index.htm?knowledgeId=201602156692&categoryId=24120#/?_k=p616ot,链接中给出了两个方案,如下

Android集成支付宝,H5支付页面点击无反应

问题描述与我当前碰到的情况相当吻合,我立即尝试了第一种方案,但是并没有效果。比较失望的否定了方案一,然后看了下方案二,要调用一个webview的方法,当时第一反应是比较懵逼的,明明调用的是支付宝的H5Activity,WebView对象再那页面里,我如何去拿到这个WebView的实例呢?难道要集成支付宝提供的H5Activity去做相关的操作嘛?但是这样操作的话,AndroidManifest.xml文件中的Activity配置就会对应不上啊。就在万分纠结的时候,我重新阅读了方案二,一句话敲醒了我,

pauseTimers是一个全局方法

全局方法说明是任何WebView实例去调用都能生效的,那等于说我随便创建一个WebView对象调用一下resumeTimers方法即可?没错,就是这么简单,

Android集成支付宝,H5支付页面点击无反应

出现这个问题的原因是因为我的项目中用到了Activity中使用WebView 的情况,然后我对这样的用法进行了封装,当Activity中有WebView的时候,我会在Activity生命周期的onResume/onPause中对webview对象做相应的启动/暂停操作,提高app执行性能。代码如下
Android集成支付宝,H5支付页面点击无反应
离开这样的Activity的时候会调用WebView的pauseTimers方法,导致全局生效,因此使得支付宝H5支付页面的js无法正常加载运行。