web app中支付问题

前阶段我做的h5支付(微信/支付宝),各个功能都弄好了,可以使用了,但是,我们总监让我把这个h5支付移植到我们前阶段做的web app中,这一下子,让我懵逼了。带着懵逼的心情,苦逼的看代码吧。在进行支付的时候,本来就分的有app支付的sdk,现在一下子把h5支付的sdk,弄到app里面,这不是很扯吗?

然而还是要干活滴,好了,问题来了,开始分析问题:解决app支付?有两种方式。

第一种:去官网下载app支付的sdk,弄app的sdk,可是在弄app支付的sdk的时候,需要两个sdk啊,客户端sdk和服务器端sdk。两个啊,这是很痛苦的。本来Android看着就烦,算了先不想这个。

第二种:就是把h5支付的sdk,移植到app,里面,可是支付的时候,调用不起来微信客户端和支付宝客户端啊。但是想想,现在好多是app都是webapp加载的,肯定有h5支付,别人能做,为啥我就不能尼?带着干劲投入进百度中,生活总是会给你无限的希望滴。下面是解决办法:

我们在进行app开发的时候,用的都是webview加载网页来进行页面展示,在进行webview初始化的时候,需要初始化webviewClient,然而webViewClient就是处理各种通知,请求事件的,所以我们可以在这里面来重写里面的shouldOverrideUrlLoading方法来支持我们的h5支付:

/设置具体的webViewClient
webView.setWebViewClient(new MyWebViewClient(webView));
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    try {
        url = URLDecoder.decode(url, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    //微信h5支付支持
    if (url.startsWith("weixin://wap/pay?")) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(url));
        startActivity(intent);
        return true;
    }
    //支付宝h5支付支持
    if (url.contains("alipays://platformapi")) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
    return super.shouldOverrideUrlLoading(view, url);
}
这样我们在webview中加载h5支付的时候,就可以了。本来以为很难,没想到就是拦截的问题。所以我们在遇到问题时候,要仔细分析。还要记住一点,我们目前遇到的问题,网上肯定都有解决办法,而我们要做的就是冷静的分析。就比如这个web app支付加载h5支付的时候,别人肯定有人做的支付是在webview中加载的,所以这个问题是有解决办法的。其次就是我们对待问题要,找关键词,然后才能不浪费时间在百度中大海捞针。





展开阅读全文

没有更多推荐了,返回首页