解决微信公众号服务器配置问题

今天花了一天时间给给公众号开发了一点小功能:

因为之前有过开发公众号的经历,本来以为会没啥问题的。功能大概完成后,准备部署到服务器,在微信后台配置服务器时token校验一直通不过,开发文档看了又看,一直看不出啥问题,本地测试也是预期结果。

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html

折腾了几个小时,人都要裂开

@JSON
@PostRoute("/usermsg")
public String userMsg(@Param(name = "signature") String signature,
                      @Param(name = "timestamp") String timestamp,
                      @Param(name = "nonce") String nonce,
                      @Param(name = "echostr") String echostr) {
    if (SignUtil.checkSignature(signature, timestamp, nonce)) {
        return echostr;
    }
    return "error";
}

最后,一篇博客的评论中发现了解决办法:

image-20210508205746908

@PostRoute("/usermsg")
public void userMsg(@Param(name = "signature") String signature,
                    @Param(name = "timestamp") String timestamp,
                    @Param(name = "nonce") String nonce,
                    @Param(name = "echostr") String echostr,
                    Response response) {
    String result = "error";

    if (SignUtil.checkSignature(signature, timestamp, nonce)) {
        result = echostr;
    }
    response.text(result);
}

重新部署,问题解决

最后安利一个Java MVC框架(https://github.com/lets-blade/blade),不同于Spring Boot,这个框架非常非常的轻量,基于netty 4,相比于Spring Boot打包后随随便便上百MB,它打包后之后十几MB

-rw-rw-r-- 1 sairo sairo 17M  5月  8 19:33 target/wechat-msg-1.0-SNAPSHOT-jar-with-dependencies.jar

学习成本也非常低,大概三四个小时就可以学会。

至于笔者为什么选择它,主要原因是服务器配置低,Spring Boot太重,性能上带不动。根本原因是穷~~img

参考资料

  • https://github.com/lets-blade/blade/blob/master/README_CN.md
  • https://blog.csdn.net/chmod_R_755/article/details/75554735
  • https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
  • https://blog.csdn.net/Thinkingcao/article/details/106677413
  • https://github.com/Wechat-Group/WxJava