1、注册略
2、登录
左侧是菜单栏
往下滑动
点击基本配置
2.1 启用开发者密码AppSecret
只有白名单里的ip才可以获取token
url就是微信用户给公众号发送的信息 都会转发到这个接口上
token我是随便起的 一个名字 “java_xxxx”
然后随机生成一个EncodingAESKey
为了方便调试、我这里直接用明文模式
这个url
需要自己实现 用于接收消息
其中get请求 用于token验证
post请求 用于接收微信用户发送给公众号的消息
package jo.weixin;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* 微信token验证、消息接收
* <p>
* 由官方文档介绍可知,当我们填入url与token的值,并提交后,微信发送的GET请求携带4个参数,
* 而signature参数结合了timestamp参数、nonce参数来做的加密签名,我们在后台需要对该签名进行校验,看是否合法。
* 通过微信传入的timestamp与nonce做相同算法的加密操作,若结果与微信传入的signature相同,即为合法,
* 则原样返回echostr参数,代表接入成功,否则不做处理,则接入失败。
*/
//@RestController
//@RequestMapping
public class WeixinBaseController {
/**
* 微信公众号签名认证接口
* 注意此请求是get请求
*
* @param: @param signature
* @param: @param timestamp
* @param: @param nonce
* @param: @param echostr
* @return: String
*/
//@GetMapping("weixin")
public String checkSignature(String signature, String timestamp, String nonce, String echostr) {
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (signature != null && JoWeixin.checkSignature(signature, timestamp, nonce)) {
return echostr;
}
return null;
}
//@PostMapping("weixin")
public void DoPost(HttpServletRequest request, HttpServletResponse response) {
try {
//接受微信服务器发送过来的XML形式的消息
InputStream in = request.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String xml = "";
String itemStr = "";//作为输出字符串的临时串,用于判断是否读取完毕
while ((itemStr = reader.readLine()) != null) {
xml += itemStr;
}
in.close();
reader.close();
System.out.println("收到消息:" + xml);
//防止中文乱码
response.setCharacterEncoding("UTF-8");
WeixinMessage message = JoWeixin.parseXml(xml, WeixinMessage.class);
} catch (Exception e) {
e.printStackTrace();
}
}
}
获取access_token
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html