收藏
回答

安卓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 个回答

  • 微信支付技术社区运营-Tasting
    微信支付技术社区运营-Tasting
    03-29

    有没有什么报错信息,确认一下传递的数据是否有丢失,这种一般都是数据丢失,应用层逻辑没有处理好导致的

    03-29
    有用
    回复 5
    • D6
      D6
      03-29
      没有报错,其他安卓版本都能正常拉起微信支付
      03-29
      回复
    • D6
      D6
      03-29
      必现的,不是那种偶尔出现的情况
      03-29
      回复
    • 微信支付技术社区运营-Tasting
      微信支付技术社区运营-Tasting
      03-30回复D6
      那你卸载微信重新试试呢?之前也有用户遇到类似问题通过卸载微信重启得到了解决哈
      03-30
      回复
    • D6
      D6
      03-31回复微信支付技术社区运营-Tasting
      这个问题是必现的,我试了好多安卓系统8.1的真机都白屏,只要加了extraHeader.put("Referer",url)8.1就白屏
      03-31
      回复
    • 微信支付技术社区运营-Tasting
      微信支付技术社区运营-Tasting
      03-31回复D6
      真机调用应用层的问题,商户侧自己处理哈
      03-31
      回复
  • D6
    D6
    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;
          }
    


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