收藏
回答

安卓8.1系统,微信H5支付,webview白屏

安卓8.1系统版本,微信H5支付通道,webview白屏,其他系统版本能正常拉起微信支付,不加extraHeaders.put("Referer", "商户申请H5时提交的授权域名");这个就会提示商家参数格式有误,请联系商家解决,加了就8.1系统会白屏


1. 当前调起H5支付的referer为空导致,一般是因为直接访问页面调起H5支付,请按正常流程进行页面跳转后发起支付,或自行抓包确认referer值是否为空

2. 如果是APP里调起H5支付,需要在webview中手动设置referer,如(

Map extraHeaders = new HashMap();

extraHeaders.put("Referer", "商户申请H5时提交的授权域名");//例如 http://www.baidu.com ))


回答关注问题邀请回答
收藏

2 个回答

  • 梁木东
    梁木东
    2021-11-12

    你好,解决了么? 我也遇到了

    2021-11-12
    有用
    回复
  • D6
    D6
    2021-03-31
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
             String url = request.getUrl().toString();
             Logger.msg("sdk > 21 shouldOverrideUrlLoading:"+url);
    
             if (url.startsWith("weixin:")){
                startActivity(new Intent("android.intent.action.VIEW",
                      Uri.parse(url)));
                finish();
                return true;
             }else if(url.startsWith("alipays:") || url.startsWith("alipay")){
                boolean visit = Util.isAliPayInstalled(mContext);
                if(visit){
                   Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                   startActivity(intent);
                   finish();
                }else {
                   ToastUtil.getInstance(WFTPayActivity.this,"未检测到支付宝客户端,请安装后重试。").show();
                }
                return true;
             }
    
             // ------- 处理结束 -------
             if (!(url.startsWith("http") || url.startsWith("https"))) {
                return true;
             }
    
             Map<String,String> extraHeaders = new HashMap<String, String>();
             extraHeaders.put("Referer", referer);
             view.loadUrl(url, extraHeaders);
             referer = url;
    //       view.loadUrl(url);
             return true;
          }
    


    2021-03-31
    有用
    回复
登录 后发表内容
问题标签