需不需要开发服务器应该根据自己的业务需求来决定。如果你只是简单使用微信公众号,发送推文等简单需求,你就不需要的配置自己的开发服务器,微信公众号平台功能十分强大,不懂技术的用户也可以简单开发一个自己公众号。如果你有像成绩推送等需求,你就需要知道用户的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