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

2018-10-28  本文已影响206人  舒童1024

一微信支付做法:

在 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   这里判断一下是否允许回退

上一篇下一篇

猜你喜欢

热点阅读