美文网首页
android H5(WebView) 拉起微信支付和支付宝支付

android H5(WebView) 拉起微信支付和支付宝支付

作者: 舒童1024 | 来源:发表于2018-10-28 16:36 被阅读206次

    一微信支付做法:

    在 WebViewClient() 里重写shouldOverrideUrlLoading这个方法 ,注意的问题:网上一堆人说

    shouldOverrideUrlLoading(WebView webView, String s) 带两个参数的是android6.0以下调用,可是我小米五 8.0 还是调用这个

    建议大家 shouldOverrideUrlLoading(WebView webView, String s) 和shouldOverrideUrlLoading(WebView webView, WebResourceRequest webResourceRequest)  这两个都重写 !!!!!!!!!!!!!

    拉起微信支付 首先判断 Url 地址  https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?"  这是微信支付的 我的处理方法

    s = url (参数里的)

    if (s.startsWith("https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?")) {

    isPlayFlag =true;

    }

    // 如下方案可在非微信内部WebView的H5页面中调出微信支付

    if (s.startsWith("weixin://wap/pay?") &&isPlayFlag) {

    if(isWxInstall(mContext)){

    isPlayFlag =false;

            Intent intent =new Intent();

            intent.setAction(Intent.ACTION_VIEW);

            intent.setData(Uri.parse(s));

            mContext.startActivity(intent);

    return true;

        }else {

    Toast.makeText(mContext, "您未安装微信~ 请安装微信并支付,祝您生活愉快", Toast.LENGTH_SHORT).show();

            webView.goBack();

        }

    }

    这就是完整的 拉起微信支付  值得注意的是  如果没有安装微信 会闪退的 所以我做了判断 是否安装了微信客户端

    public  boolean isWxInstall(Context context) {

    final PackageManager packageManager = context.getPackageManager();

        // 获取packagemanager

        List pinfo = packageManager.getInstalledPackages(0);

        // 获取所有已安装程序的包信息

        if (pinfo !=null) {

    for (int i =0; i < pinfo.size(); i++) {

    String pn = pinfo.get(i).packageName;

                if (pn.equals("com.tencent.mm")) {

    return true;

                }

    }

    }

    return false;

    }

    嗯,H5拉起微信支付Ok了 经大量测试为问题 下面说一下 拉起支付宝支付

    同理 首先判断是否 安装了支付宝客户端

    public boolean isAliPayInstalled(Context context) {

    Uri uri = Uri.parse("alipays://platformapi/startApp");

        Intent intent =new Intent(Intent.ACTION_VIEW, uri);

        ComponentName componentName = intent.resolveActivity(context.getPackageManager());

        return componentName !=null;

    }

    阿里这个简单多了 

    没安装 支付宝的话 强行拉起客户端支付会闪退,判断一下 没有就网页支付

    /*此处应添加支付宝是否安装的验证,不然跳转会引发崩溃*/

    //唤起支付宝app

    if (s.startsWith("alipays://platformapi/startApp?")&& isAliPayInstalled(mContext)) {

    if(isAliPayInstalled(mContext)){

    Intent intent =new Intent();

            intent.setAction(Intent.ACTION_VIEW);

            intent.setData(Uri.parse(s));

            mContext.startActivity(intent);

    return true;

        }

    }

    然后这里记录了一下 支付宝支付网页链接 

    String h5AliPay ="https://mclient.alipay.com/h5Continue.htm?";

    String  h5AliPaycontiniu ="https://mclient.alipay.com/cashier/mobilepay.htm?";

    一个是进入到阿里支付的页面  一个是阿里跳转的页面 也就是h5AliPaycontiniu   这里判断一下是否允许回退

    相关文章

      网友评论

          本文标题:android H5(WebView) 拉起微信支付和支付宝支付

          本文链接:https://www.haomeiwen.com/subject/htxmtqtx.html