• 【微信Java开发 --番外篇】错误解析


    虽然在微信开发过程中,会有微信公众平台开发者文档中的《全局返回码》作为错误的参考对比;但是依旧的,会觉得有时候的问题莫名其妙。【注:本人使用weixin-java-tools进行开发】

    下面吧微信开发过程中碰到的各种问题做一个归类【注:错误总结会在开发过程中一一补充】

    一.自定义菜单---错误集合

    1.创建自定义菜单{"errcode":40019,"errmsg":"invalid button key size hint: [a90WaA0296vr19]"}

    错误代码:

    十月 14, 2016 5:11:27 下午 org.apache.catalina.core.StandardContext loadOnStartup
    严重: Servlet [rest] in web application [/wxFirst] threw load() exception
    me.chanjar.weixin.common.exception.WxErrorException: {"errcode":40019,"errmsg":"invalid button key size hint: [a90WaA0296vr19]"}
        at me.chanjar.weixin.mp.api.impl.WxMpServiceImpl.executeInternal(WxMpServiceImpl.java:476)
        at me.chanjar.weixin.mp.api.impl.WxMpServiceImpl.execute(WxMpServiceImpl.java:425)
        at me.chanjar.weixin.mp.api.impl.WxMpServiceImpl.post(WxMpServiceImpl.java:414)
        at me.chanjar.weixin.mp.api.impl.WxMpMenuServiceImpl.menuCreate(WxMpMenuServiceImpl.java:35)
        at com.sxd.controller.CenterController.<init>(CenterController.java:97)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1088)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1040)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:505)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725)
        at org.spring

    这种错误对应代码错误的位置:

    WxMenuButton button3=new WxMenuButton();
                button3.setName("进入百度");
                button3.setType("click");
                button3.setUrl("http://www.baidu.com");  //URL类型的自定义按钮

    错误分析:

    发生这样的错误是因为,这个自定义菜单是用来做页面跳转的,即点击完了之后是要跳转到下一个页面的。所以:button3.setType("click");按钮的类型应该修改为button3.setType("view");

    解决问题:

    WxMenuButton button3=new WxMenuButton();
                button3.setName("进入百度");
                button3.setType("view");
                button3.setUrl("http://www.baidu.com");  //URL类型的自定义按钮

    ------------------------------------------------------------------------------------------------------redirect_url参数异常----------------------------------------------------------------------------------------------------------

    二.点击公众号上按钮,报错redirect_url参数异常

    微信公众号下面的按钮,点击之后,报错redirect_url参数异常。

    查找原因的方法:

    因为做微信公众号开发,只能在手机微信上进行访问,没有办法调试,所以如果想在手机上看到微信访问的地址和传输的数据有哪些,可以在手机上下载一个【无root抓包】

    启动之后界面如下:

    点击启动按钮,绿色的按钮,然后去微信访问

    找到微信访问的包,可以在里面看到详细信息。

    解决方法:

    1.设置按钮的这个地方的appId和redirect_uri后面跟的地址,直接写死,在一定程度上能避免这个问题

    这样的话,需要取消关注,重新关注这个公众号,让按钮重新初始化一次,就能解决

     private WxMenu createMenu()
      {
        WxMenu wxMenu = new WxMenu();
        
        WxMenuButton firstMenuButton = new WxMenuButton();
        firstMenuButton.setType("view");
        firstMenuButton.setName("个人中心");
        firstMenuButton.setKey("member");
        firstMenuButton.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + "wx40263796f5de033c" + "&redirect_uri=" + "http://weixin.myagen.cn/" + "wx/member/showAllMemberInfo.jhtml&&response_type=code&scope=snsapi_base&state=xxxx_state#wechat_redirect");
        WxMenuButton secondMenuButton = new WxMenuButton();
        secondMenuButton.setType("view");
        secondMenuButton.setName("订单");
        secondMenuButton.setKey("member");
        secondMenuButton.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + "wx40263796f5de033c" + "&redirect_uri=" + "http://weixin.myagen.cn/" + "wx/member/showAllMemberOrder.jhtml&&response_type=code&scope=snsapi_base&state=xxxx_state#wechat_redirect");
        
        WxMenuButton threeMenuButton = new WxMenuButton();
        threeMenuButton.setType("view");
        threeMenuButton.setName("报告");
        secondMenuButton.setKey("institution");
        threeMenuButton.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + "wx40263796f5de033c" + "&redirect_uri=" + "http://weixin.myagen.cn/" + "wx/member/memberReport.jhtml&&response_type=code&scope=snsapi_base&state=xxxx_state#wechat_redirect");
        
        List<WxMenuButton> firstMenuButtons = new ArrayList();
        firstMenuButtons.add(firstMenuButton);
        firstMenuButtons.add(secondMenuButton);
        firstMenuButtons.add(threeMenuButton);
        
        wxMenu.setButtons(firstMenuButtons);
        
        return wxMenu;
      }
    View Code

    2.除此之外,还会因为微信公众平台上  网页授权地址也需要更改

     

    这个文件放置在你项目的根目录下  webRoot下面

     

     修改完成之后再去访问 就好了。

    ===========================================================================================================================

    三。公众号初始化时候创建的自定义按钮,公众号上没有创建出来,捕捉之后发现错误码40164

    错误码如下:

    me.chanjar.weixin.common.exception.WxErrorException: {"errcode":40164,"errmsg":"invalid ip 113.139.190.118, not in whitelist hint: [fEjFNA0604e544]"}

    解决方法:

    是因为上面的IP地址,并没有添加到白名单中,导致按钮不能创建成功。

    所以

    可以在微信公众平台进入

    修改,然后换行,将白名单填进去即可。

  • 相关阅读:
    检测.netcore环境是否安装
    vc获取特殊路径
    vc 获取系统版本
    vs2019集成vcpkg
    vc 打开外部线程并等待结束
    cmd常用命令
    nodejs mongodb3.6.2 insertOne callback问题
    Effective Python Ver2.0_StudyNotes___getattr__、__getattribute__及__setattr__的一些知识点
    Python数据类型--集合简介
    Effective Python Ver2.0_StudyNotes_用描述符来改写需要复用的@property方法
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/5961319.html
Copyright © 2020-2023  润新知