Android使用微信、支付宝、qq钱包H5支付

来源:互联网 发布:男生护肤品知乎 编辑:程序博客网 时间:2024/06/12 00:19

之前有个项目是android端使用webview加载网页端的内容,然后再添加原生的功能做成的APP,这个项目里面有集成使用微信、支付宝、qq钱包等H5的支付方式。最近网页端那边对支付版本那块的内容进行了升级,从而导致在Android端这边进行支付时,微信支付出现了如下的错误:

这里写图片描述

遇到这个问题时,参考了微信支付的H5支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4

在开发文档中的常见问题中描述:

这里写图片描述

说是APP里调起H5支付,需要在webview中手动设置referer,然后在WebView加载的页面中做了如下的处理:

       webview.setWebViewClient(new WebViewClient() {            @Override            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {                view.stopLoading();                view.clearView();                wv.loadData("网络错误,请稍后重试.", "text/html; charset=UTF-8", null);            }            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                if (url == null) return false;                try {                    if (url.startsWith("weixin://") //微信                            || url.startsWith("alipays://") //支付宝                            || url.startsWith("mqqapi://") //qq钱包                        //其他自定义的scheme                            ) {                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));                        startActivity(intent);                        return true;                    } else if (url.contains("qq.com ")) {                        view.loadUrl(url);                    } else {                        Map<String, String> extraHeaders = new HashMap<String, String>();                        extraHeaders.put("Referer", "http://jy.xxxx.com");//http://jy.xxxx.com为加载首页的地址                        view.loadUrl(url, extraHeaders);                    }                } catch (Exception e) { //防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)                    return true;//没有安装该app时,返回true,表示拦截自定义链接,但不跳转,避免弹出上面的错误页面                }                //处理http和https开头的url                return true;            }            @Override            public void onPageFinished(WebView view, String url) {                progess.setVisibility(View.GONE);                wvTitle.setText(view.getTitle());            }            @Override            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {                handler.proceed(); // 接受所有网站的证书            }        });

以上的代码也对支付宝与qq钱包出现的问题一起做了处理,做了以上的处理之后,在页面中先判断客户端中有没安装微信、支付宝、qq等应用,要是安装了的话就调起客户端,要是用户没有安装的话就跳到网页端,经测试都能正常的调起支付。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 白带酸味 脚酸味 大便酸味 腋下酸味 下面有酸味 酸味 口中有酸味或是暗示这病 白带酸味什么原因 蜂蜜有点酸味正常吗 大便有酸味咋回事 好想你野酸味枣 床垫有酸味是甲醛吗 白带发黄有酸味是怎么回事 阴道为什么有酸味 阴道分泌物有酸味是什么原因 腋窝出汗手摸手有酸味 空腹喝酸奶 炸酸奶 酸奶怎么做 酸奶功效 螃蟹酸奶 酸奶好处 螃蟹喝酸奶 炸酸奶做法 空腹酸奶 柿子和酸奶 酸奶减肥 柿子喝酸奶 喝酸奶好处 香蕉酸奶 猫喝酸奶 酸奶解酒 酸奶加热 过期酸奶 孕妇喝酸奶 喝酸奶 晚上喝酸奶 宝宝喝酸奶 猫酸奶 酸奶过期 酸奶溶豆