微信H5支付安卓提示"商家参数格式有误请联系商家解决"

薄洪涛5年前JAVA4307

今天遇到一个恼火的问题,我们对接微信的H5支付,采用了前后端分离,后端接口返回了支付的url,ios正常唤起微信支付,android却始终提示商家参数格式有误请联系商家解决,如图

image.png

按照微信提供的文档,我们先加了header,并确保了加的Referer就是微信商户配置的域名

image.png

发现并没有什么卵用,作为一个被微信文档坑过无数次的有为青年来说,早就习以为常了

    private void loadUrl(String loadUrl) {

        Map<String, String> headers = new HashMap<>();
        headers.put("Referer", "huaaiangel.com");

        Log.i("Ok", "Url :" + loadUrl);
        if (null != mContentWv && !TextUtils.isEmpty(loadUrl)) {
            mContentWv.loadUrl(loadUrl, headers);
        }

    }
public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //微信H5支付核心代码
            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 {
                Map<String, String> extraHeaders = new HashMap<>();
                extraHeaders.put("Referer", realm);
                view.loadUrl(url, extraHeaders);
            }
            return true;
        }
 
        //处理https请求
        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) {
            handler.proceed();
        }

其实到这一步,大多数人的问题都可以解决,但是我的还没有解决

但是我发现,可以只重写onReceivedSslError,拦截url那里不写else就可以,然后返回false,真的是莫名其妙


image.png

这就可以了,真的是莫名其妙啊

后端偶然去做做客户端的东西,你就会发现当初的决定多么重要,心里有又默念一遍:幸亏当初没做android


相关文章

redis缓存雪崩,缓存击穿,缓存穿透

redis缓存雪崩,缓存击穿,缓存穿透

缓存雪崩同一时间大量redis缓存数据失效,造成大量请求涌入数据库,数据库压力增大崩掉解决方案缓存过期时间加随机值增加过期表示,缓存过期后,自动更新缓存缓存穿透缓存和数据库中都没有的数据,每次查询都会...

Springboot+Kotlin的搭建

Springboot+Kotlin的搭建

不少公司觉得php的性能较低,于是采用java做逻辑处理,php做表现层的做法,个人觉得对于业务量比较复杂,安全性要求较高的项目,可以采用此类做法;于是我学着搭建了一个基于spring boot的接口...

接口熔断器resilience4j的使用

pom引入<!-- 熔断器 : https://mvnrepository.com/artifact/io.github.resilience4j/resilien...

jenkins部署maven项目

1. 环境配置jenkins安装 Maven Integration plugin插件配置maven,java等路径2. 2.新建item,选择构建maven项目a. 2.1 源码管理填入git地址、...

springboot 数据校验

使用import javax.validation.constraints.NotNull import javax.validation.constraints.Size cl...

RabbitMq交换机类型

RabbitMq交换机类型

direct路由键和队列名完全匹配,才可以消费如果绑定时设置了routing key为”abc”,那么客户端提交的消息,只有设置了key为”abc”的才会投递到队列fanout还有一种不需要key的,...

评论列表

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。