Android中WebView调起微信H5支付---踩过的坑

应产品需求,需要在webview中通过H5页面唤起native的微信支付![怒掀桌子表情]

其实很多坑前辈们都踩过了,我这里将代码粘出来,记录一下自己的坑,看看有没有相同经历的小伙伴

...
       @Override
       public boolean shouldOverrideUrlLoading(final WebView view, String url) {
if (url.startsWith("weixin://wap/pay?") || url.startsWith("http://weixin/wap/pay") ) {
               try {
                   startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));
                   return true;
               } catch (Exception e) {
                   new CancelOrOkDialog(H5PayActivity.this, getString(R.string.h5_pay_no_pay_app)) {
                       @Override
                       public void ok() {
                           Intent intent = new Intent(H5PayActivity.this, MainActivity.class);
                           intent.putExtra(Constants.SELECTTAB, 0);
                           startActivity(intent);
                       }
                   };
               }
           } else {
               Map extraHeaders = new HashMap();
               extraHeaders.put("Referer", H5Accessor.BASE_H5URL);
               if (url.startsWith("alipays:") || url.startsWith("alipay")) {
                   view.loadUrl(url);
               } else {
                   view.loadUrl(url, extraHeaders);
               }
           }
           // ------- 处理结束 -------
           if (!(url.startsWith("http") || url.startsWith("https"))) {
               return true;
           }
           return true;

}
...
主要想说的是
extraHeaders.put("Referer", H5Accessor.BASE_H5URL);

这里放的是域名,一定要和自己的域名相对应,否则极易出现问题

[掀桌表情]ios不需要这样做......

你可能感兴趣的:(Android中WebView调起微信H5支付---踩过的坑)