当前位置:   article > 正文

android微信和支付宝h5支付[INFO:CONSOLE(98)] "Uncaught ReferenceError:_android交互中"uncaught referenceerror:

android交互中"uncaught referenceerror:

后端写好h5页面之后  需要Android段使用webview调用然后转native调起微信和支付宝进行支付

h5的就不说了,Android端只要设置WebViewClient重写shouldOverrideUrlLoading()就可以了,拦截方法里面处理微信或者支付宝的代码相信各位都能从网上搜到,网上同时处理支付宝和微信的代码大多数都是错的,主要原因就是判断是支付宝支付还是微信支付的方法不对,我总结了一下,亲测可用。

wvPay.setWebViewClient(new WebViewClient() {

    @Override
    public boolean shouldOverrideUrlLoading(final WebView view, String url) {
        
        if (url.startsWith("https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb")) {
            Map<String, String> extraHeaders = new HashMap<>();
            extraHeaders.put("Referer", "这里填写后台提交的微信支付回调的网址");
            view.loadUrl(url, extraHeaders);
            return true;
        } else if (url.startsWith("weixin://wap/pay?")) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            startActivity(intent);
            return true;
        } else {
            if (!(url.startsWith("http") || url.startsWith("https"))) {
                return true;
            }
            /**
             * 推荐采用的新的二合一接口(payInterceptorWithUrl),只需调用一次
             */
            final PayTask task = new PayTask(PayActivity.this);
            boolean isIntercepted = task.payInterceptorWithUrl(url, true, new H5PayCallback() {
                @Override
                public void onPayResult(final H5PayResultModel result) {
                    // 支付结果返回
                    final String url = result.getReturnUrl();
                    if (!TextUtils.isEmpty(url)) {
                        PayActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                view.loadUrl(url);
                            }
                        });
                    }
                }
            });
            if (!isIntercepted) {
                view.loadUrl(url);
            }
            return true;
        }
    }
});

这样处理就可以了  然后记得设置websetting

WebSettings settings = wvPay.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setJavaScriptEnabled(true);

在最后在说一个问题,遇到过低版本android系统无法调起支付的问题,shouldOverrideUrlLoading()这个方法都不进来,不要慌,是h5的问题,日志可以看到

[INFO:CONSOLE(98)] "Uncaught ReferenceError: $SERVERURL is not defined", source: e: e: http://d11.cto.shovesoft.com/res/js/youkedaPay.js (98 (98 (98)

然后在网上搜是js调用顺序的问题,具体的大家去搜吧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/122879
推荐阅读
相关标签
  

闽ICP备14008679号