1. 前言
上一篇文章中说了,微信会将用户消息发送到我们(开发者)指定的服务器上。
所以我们需要通过微信公众平台,将我们的服务器信息填写上,以便微信给我们转发消息。
另外,微信也会验证下我们填写的服务器信息是否正确有效。
2. 填写服务器配置
登录微信公众平台,点击【设置与开发】-【基本配置】,点击【修改配置】如下图:
然后依次填入下列信息,注意Token自己设置一个就行,EncodingAESKey可以随机生成一个,加解密方式为了方便先选择明文模式。
最重要的是URL,我们使用之前选择的公网域名(或IP),后面的wx-server和checkToken分别代表接收验证消息的项目名和接口地址。
3. 验证有效性
此时如果我们点击提交,微信会提醒我们【请求URL超时】,这是因为微信会调用URL对应的接口来验证我们配置的服务器是否有效,也就是能不能正常的响应微信发出的消息。
3.1 构建项目
接下我们先创立wx-server项目,我们使用Maven快速构建一个Spring Boot项目,pom.xml配置如下。
注意我们用到了web和lombok两个配置,对Spring Boot和lombok不了解的同学还是需要先去了解下。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>cn.pandabrother</groupId>
<artifactId>wx-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.0.0</maven-jar-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
3.2 接受微信验证消息
接下来开发控制器,接受微信发送的消息:
@Controller
public class CheckController {
@RequestMapping("/checkToken")
@ResponseBody
public String checkToken(@RequestParam("echostr") String echostr) {
return echostr;
}
}
1
2
3
4
5
6
7
8
根据微信官方要求:开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败,我们此处直接返回echostr表示验证成功。
然后为了正常启动项目,配置下application.yml:
server:
port: 80 #端口
servlet:
context-path: /wx-server
1
2
3
4
并添加启动类:
@SpringBootApplication
public class WxServerApplication {
public static void main(String[] args) {
SpringApplication.run(WxServerApplication.class, args);
}
}
1
2
3
4
5
6
3.3 提交验证
启动WxServerApplication ,此时我们的项目就会监听80端口,监听地址为/wx-server/checkToken。
此时点击【基本配置】页面的【提交】按钮,因为我们的程序能正确返回要求的echostr,所以此次提交成功,我们填写的服务器配置验证通过。
3.4 启用服务器配置
服务器配置生效后,还需要启用,点击上图中的【启用】,系统提示如下,也就是说启用后,微信会正式将用户发送到公众号的消息,自动转发到我们配置的服务器URL上。
此处点击【确定】启用即可。
4. 小结
至此,我们配置的服务器已经跟微信建立了联系,另外我们也搭建了一个SpringBoot项目,用于后续开发微信公众号相关的功能。