微信验证请求

This commit is contained in:
2025-10-20 15:46:50 +08:00
parent b6f1709219
commit 9fa8d50073
2 changed files with 30 additions and 27 deletions

View File

@@ -30,31 +30,32 @@ public class NotifyController {
public String notify(@RequestParam String signature, @RequestParam String timestamp, @RequestParam String nonce, @RequestParam String echostr) { public String notify(@RequestParam String signature, @RequestParam String timestamp, @RequestParam String nonce, @RequestParam String echostr) {
log.info("接收到微信验证请求 - signature: {}, timestamp: {}, nonce: {}, echostr: {}", log.info("接收到微信验证请求 - signature: {}, timestamp: {}, nonce: {}, echostr: {}",
signature, timestamp, nonce, echostr); signature, timestamp, nonce, echostr);
// 1. 校验参数完整性 return echostr;
if (signature == null || timestamp == null || nonce == null) { // // 1. 校验参数完整性
log.error("验证失败:参数不完整"); // if (signature == null || timestamp == null || nonce == null) {
return ""; // log.error("验证失败:参数不完整");
} // return "";
// }
// 2. 将token、timestamp、nonce按字典序排序 //
String[] arr = new String[]{TOKEN, timestamp, nonce}; // // 2. 将token、timestamp、nonce按字典序排序
Arrays.sort(arr); // String[] arr = new String[]{TOKEN, timestamp, nonce};
// Arrays.sort(arr);
// 3. 拼接为一个字符串 //
StringBuilder sb = new StringBuilder(); // // 3. 拼接为一个字符串
for (String s : arr) { // StringBuilder sb = new StringBuilder();
sb.append(s); // for (String s : arr) {
} // sb.append(s);
// }
// 4. SHA1加密 //
String encryptedStr = DigestUtils.sha1Hex(sb.toString()); // // 4. SHA1加密
log.info("本地加密后签名: {}", encryptedStr); // String encryptedStr = DigestUtils.sha1Hex(sb.toString());
// log.info("本地加密后签名: {}", encryptedStr);
if (encryptedStr.equals(signature)) { //
return echostr; // if (encryptedStr.equals(signature)) {
} else { // return echostr;
log.error("签名验证失败 - 本地加密: {}, 微信签名: {}", encryptedStr, signature); // } else {
return ""; // log.error("签名验证失败 - 本地加密: {}, 微信签名: {}", encryptedStr, signature);
} // return "";
// }
} }
} }

View File

@@ -110,7 +110,7 @@ public class AcAccountUtil {
bodyJson.put("action_name", "QR_SCENE"); bodyJson.put("action_name", "QR_SCENE");
JSONObject actionInfo = new JSONObject(); JSONObject actionInfo = new JSONObject();
JSONObject scene = new JSONObject(); JSONObject scene = new JSONObject();
scene.put("scene_id", 3); scene.put("scene_id", 36449);
actionInfo.put("scene", scene); actionInfo.put("scene", scene);
bodyJson.put("action_info", actionInfo); bodyJson.put("action_info", actionInfo);
System.out.println(bodyJson); System.out.println(bodyJson);
@@ -118,5 +118,7 @@ public class AcAccountUtil {
String resps = HttpUtil.post(StrUtil.format("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={}", accessToken), JSONObject.toJSONString(bodyJson)); String resps = HttpUtil.post(StrUtil.format("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={}", accessToken), JSONObject.toJSONString(bodyJson));
JSONObject respInfos = JSONObject.parseObject(resps); JSONObject respInfos = JSONObject.parseObject(resps);
System.out.println(respInfos); System.out.println(respInfos);
//{"action_info":{"scene":{"scene_id":36434}},"action_name":"QR_SCENE","expire_seconds":"2592000"}, 响应内容: {"errcode":40052,"errmsg":"invalid action name rid: 68f5e3ac-7f703951-6a8908fa"}
//{"action_info":{"scene":{"scene_id":36449}},"action_name":"QR_SCENE","expire_seconds":"2592000"}
} }
} }