微信公众号开发总结

这里只是对微信公众号开发一些基本知识的总结,形成微信开发的基本思路。

详情文档还是要参考微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html


1、微信公众号是什么

微信公众号分为订阅号和服务号,那订阅号和服务号有什么区别呢,所有的订阅号都会显示在微信订阅号消息会话列表里,而服务号则会有一个单独的会话,并且订阅号和服务号的所拥有的功能也不同。订阅号和服务号也分别未认证和认证两种。微信公共号是需要进行个人信息认证的。它们之间的区别详情请见:

https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Explanation_of_interface_privileges.html

但是个人只能申请订阅号,服务号只有企业才能申请,但是订阅号很多功能无法体验,这时候就需要接口测试号


2、接口测试号

接口测试号无法像其它公众号一样让他人搜索到,其无法该接口测试号的名字,但是它其它的功能还是挺全的。申请地址如下:

https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,登陆成功后会需要填写一些信息,如下面的图片。

appID和appsecret是微信服务器帮我们生成的,暂时不用管这个,把它们当成公众号的一个电子身份。

为什么还需要域名和接口呢,因为我们在微信公众号上面的操作都是反馈给微信服务器的,那么开发人员又怎么会知道这个信息呢,必须通过微信服务器发送给我们自己的服务器,这个域名就是我们自己服务器外网ip的域名,注意是外网,内网微信服务器是无法直接访问的。所以你需要在腾讯云或者阿里云申请一台云服务器,然后在什么一个域名,将域名解析到云服务器的IP,可能有点贵。没关系,用自己的电脑也能代建服务器,需要借助内网穿透工具,什么是内网穿透,可以自己baidu,下面就是用内网穿透工具ngrok生成的外网IP,要注意的是内网穿透工具要支持http或者https协议。

有了域名之后,还需要填写一个url,这个url就是微信服务器像我们服务器发起请求的地址。分为get和post请求,get请求主要用于验证,验证双方服务器是否能够建立连接,post主要用于微信服务器向我们服务器发送数据。

token可以随意填写,不过后面需要用到

 


3、get请求验证

只有验证通过才能成为开发者,详细请看官网文档

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

 我下面给了一个Java SpringBoot框架下面的一个简单例子

@GetMapping(value = "/index")
    public String index(HttpServletRequest request) {
        //微信加密签名 : 结合了开发者填写的token参数和请求中的timestamp参数、nonce参数
        String signature = request.getParameter("signature");
        // 时间戳
        String timestamp = request.getParameter("timestamp");
        // 随机数
        String nonce = request.getParameter("nonce");
        // 随机字符串
        String echostr = request.getParameter("echostr");
        String token = "abcdefg";

        // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
        if (checkSignature(token, signature, timestamp, nonce)) {
            return echostr;
        } else {
            return  "error";
        }
    }

 这个checkSigature()方法主要用来进行校验,校验的内容主要如下:

 

 


4、access_token

在开始开发前还需要搭建一个服务来获取access_token,当我们的服务器访问微信服务器的api时都需要在参数中带上access_token,然后服务器为了避免同一时间有大量的请求来访问这个接口,所以对这个接口进行了访问次数限制,如果你仅仅用来个人测试,不搭建access_token的中控服务也行,但是用于生产,当人数多了之后很快次数就会用完的。

搭建这个access_token中控服务的主要目的在于缓存access_token,微信服务器的access_token是2小时有效的,获取下一个access_token后上一个access_token会失效,所以我们缓存一个access_token,时间控制在2小时以内,到了是时间后获取下一个access_token。


5、开始开发

做好上面的准备后就可以开始开发了。

(1)菜单模块

微信公众号上面很多都是有菜单的,我们大致上能做的有下面这些功能,这些都比较号理解.

个性化菜单就是根据用户标签、用户性别,手机操作系统、用户所在地区或手机语言来设置不同的菜单

 

 

 (2)消息管理:主要是微信服务器和我们自己服务器之间的各自消息传递

接收普通消息:用户输入文本、图片消息等等后微信服务器将消息转发给我们服务器,下面是这些消息的涵盖范围

 

 

 

 

 

 接收事件消息,这个一般表示用户的某个动作

 

 

被动回复消息,主要用于在微信公众号进行相关操作后,我们自己的服务器自己进行相应,回复给用户的消息

 

 

 

 

 

posted @ 2020-11-16 17:15  一花一世界!  阅读(587)  评论(0编辑  收藏  举报