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

薄洪涛6年前JAVA4365

今天遇到一个恼火的问题,我们对接微信的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


相关文章

设计模式之策略模式

在开始之前,我们先看一下一个令人不爽的写法if ($k == 0) {   // do something } ...

docker-swarm部署java项目

技术栈Java 版本: 17Spring Boot 版本: 3.xMyBatis-Plus: 简化 MyBatis 操作的增强工具PostgreSQL: 关系型数据库Redis: 分布式缓存解决方案R...

spring AOP概念及应用场景

spring AOP概念及应用场景

概念面向切面编程,通过预编译和运行期间动态代理实现在不修改源代码的情况下给程序动态统一添加功能的技术思想就是把很多类中对象中横切问题点,从业务逻辑中分离出来,达到解耦的目的,增加代码的重用性,提高开发...

springboot实现定时任务

springboot实现定时任务

之前做php的时候,如果想做个定时任务,或者想特定时间调用某个脚本/接口,我们都会考虑使用linux的crontab来实现,比较对于单线程脚本语言来说,做定时不是那么容易然后最近因为开始学习java,...

spring循环依赖

spring循环依赖

什么是循环依赖? 很简单,就是A对象依赖了B对象,B对象依赖了A对象在Spring中,⼀个对象并不是简单new出来了,⽽是会经过⼀系列的Bean的⽣命周期,就是因为 Bean的⽣命周期所以才会出现循环...

zookeeper安装

zookeeper安装

1. 下载安装包解压https://archive.apache.org/dist/zookeeper/2. 修改配置文件新建文件夹创建配置文件,修改路径配置文件参数详细介绍tickTime=2000...

评论列表

发表评论    

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