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

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

之前有个项目是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博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新疆好吃的干果 什么干果减肥 干果店装修图片 白兰地价格 大连买海鲜干货去哪里 新买的床单被罩要洗吗 新买的床单被套要洗吗 买床单好还是床笠好 怎么买床单 单买床单 买床单时怎么算尺寸 千万不要买金可儿床垫 床垫买什么的好 床垫买哪个牌子好 北京哪里买床垫 床垫买哪种好 买床垫去哪个网站好 买床垫什么品牌好 买什么床垫实惠又舒服 买床垫 买床垫注意事项 买床垫什么牌子好 床垫那里买 好的床垫品牌 爱买淘宝店铺权重查询 买淘宝店铺安全吗 买店铺网 淘宝店铺可以买吗 买55寸彩电 买徕卡相机 徕卡109 徕卡全画幅 徕卡照相机 徕卡摄像机 徕卡全站仪usb驱动 徕卡全站仪1201 徕卡全站仪ts09价格 徕卡全站仪数据线驱动 徕卡水印是什么 徕卡全站仪充电器价格 徕卡全站仪ts11