在微信平台配置
1、AppSecret需要管理员扫码生成,注意需要保存起来。
2、平台配置:
权限集-配置权限集;
开发资料-配置相关服务端Url(接口)、校验、解密token、调用IP白名单
在开发者资料中配置授权url:
服务端接口地址、三个ip前缀需一致、消息与事件中的Url A P P I D APPID APPID在回调时是动态的,哪个公众号事件就是哪个APPID
3、服务端开发:
根据以上配置的授权事件配置中的URL进行开发:
1、 接收URL中的各项参数:signature、timestamp、nonce、encrypt_type、msg_signature
推送的包体为XML加密格式
接收XML包体:
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
StringBuilder requestBody = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
requestBody.append(line);
}
2、、校验msg_signature签名是否正确,以判断请求是否来自微信服务器:
1、将token、timestamp(URL参数中的)、nonce(URL参数中的)、Encrypt(包体内的字段)四个参数进行字典序排序;
2、将四个参数字符串拼接成一个字符串,然后进行sha1计算签名: 6c12a4205838198b8fa631b3220723bb07f1015c,与URL参数中的msg_signature参 数进行对比,相等说明请求来自微信服务器,合法。
获取包体的Encrypt:
validateMsgSignature(TOKEN, timestamp, nonce, getEncryptContent(requestBody