微信公众号开发之配置开发服务器

微信公众号开发详细教程

微信公众号开发文档

需不需要开发服务器应该根据自己的业务需求来决定。如果你只是简单使用微信公众号,发送推文等简单需求,你就不需要的配置自己的开发服务器,微信公众号平台功能十分强大,不懂技术的用户也可以简单开发一个自己公众号。如果你有像成绩推送等需求,你就需要知道用户的openid,那就需要使用自己的开发服务器。废话不多说,我们来配置吧。

微信公众平台->开发->开发者工具->公众平台测试账号

appid:是微信公众号的唯一标识,通过和appsecret进行验证。

URL:开发服务器的路径,接收微信服务器发送的数据。

Token:自设定的token,和开发服务器中进行验证的token保持一致。

微信公众号用户,微信服务器和开发服务器三者之间的关系:微信公众号用户发送信息时,发送到微信服务器,微信服务器将消息转发给开发服务器,交互都是通过xml格式。

如果你是用本地tomcat,可以使用像ngrok这样的内网穿透工具,生成一个外网域名,通过域名访问本地localhost:8080.

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

参数描述
signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp时间戳
nonce随机数
echostr随机字符串

微信公众平台提供了大量的接口,如果我们使用这些接口进行开发就需要自己去封装参数等,发送请求到微信服务器。微信提供了开发工具。工具内封装了接口,我们只需要简单调用接口就可以,极大的简化了开发过程。

wei-java-tools依赖

         <dependency>
            <groupId>me.chanjar</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>1.3.3</version>
        </dependency>
        <dependency>
            <groupId>me.chanjar</groupId>
            <artifactId>weixin-java-common</artifactId>
            <version>1.3.3</version>
        </dependency>

代码:

    //微信配置服务器 验证
    @RequestMapping(value="/wxserver",method={RequestMethod.GET})
    public  void check(HttpServletRequest request, HttpServletResponse response)  {
        //微信服务器get传递的参数
        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");

        //微信工具服务类
        WxMpService wxService=new WxMpServiceImpl();
        //注入token的配置参数
        /**
         * 生产环境 建议将WxMpInMemoryConfigStorage持久化
         */
        WxMpInMemoryConfigStorage wxConfigProvider=new WxMpInMemoryConfigStorage();
        //注入token值
        wxConfigProvider.setToken("weixin");
        wxService.setWxMpConfigStorage(wxConfigProvider);
        boolean flag=wxService.checkSignature(timestamp, nonce, signature); //验证token跟微信配置的是否一样
        PrintWriter out= null;
        try {
            out = response.getWriter();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if(flag){
            out.print(echostr);
        }
        out.close();
    }

signature: signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。将这三个参数采用sha1算法进行加密.

boolean flag=wxService.checkSignature(timestamp, nonce, signature)

根据这三个参数,在开发服务器里面重新sha1算法加密,生成新的signature,然后和请求参数中的signature比较,相同则验证成成,成功之后返回随机字符串。配置阶段则成功。

微信开发之关键词回复:https://blog.csdn.net/qq_41662696/article/details/89535040

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页