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<String, String> extraHeaders = new HashMap<String, String>();
               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 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,118评论 25 709
  • 文/陌望 姑娘,你在一个人徘徊吗?也许你需要。 我知道,生活如梦,梦里泪雨滂沱。 总会在某个阳光耀眼的早上从梦中惊...
    陌望阅读 485评论 0 2
  • 迷鹿mirror阅读 229评论 0 1
  • 【知识点】 集中有限的资源办大事、精心会话“五到”、一正一清不相欠、正念日、培养新习惯、mece分析法 【想说的话...
    我是高太阅读 134评论 0 0