From 75f34f6d14a4b9a4198ebc9389ac15d51c207b4c Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Mon, 24 Mar 2025 13:58:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=96=87=E4=BB=B6=E5=8C=85=E4=B8=8Eservice=20?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/order/config/AuthConfig.java | 1 + .../controller/notify/WxNotifyController.java | 47 +++++++++++++++++++ .../java/com/hfkj/common/utils/WxUtils.java | 40 ++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 order/src/main/java/com/order/controller/notify/WxNotifyController.java diff --git a/order/src/main/java/com/order/config/AuthConfig.java b/order/src/main/java/com/order/config/AuthConfig.java index 0c44c5c..08222fd 100644 --- a/order/src/main/java/com/order/config/AuthConfig.java +++ b/order/src/main/java/com/order/config/AuthConfig.java @@ -91,6 +91,7 @@ public class AuthConfig implements WebMvcConfigurer { .excludePathPatterns("/cqNotify/*") .excludePathPatterns("/meiTuan/*") .excludePathPatterns("/orderCinema/queryOrder") + .excludePathPatterns("/wxNotify/verifyWxToken") ; } diff --git a/order/src/main/java/com/order/controller/notify/WxNotifyController.java b/order/src/main/java/com/order/controller/notify/WxNotifyController.java new file mode 100644 index 0000000..2e7339b --- /dev/null +++ b/order/src/main/java/com/order/controller/notify/WxNotifyController.java @@ -0,0 +1,47 @@ +package com.order.controller.notify; + +import com.hfkj.common.utils.WxUtils; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + + +@Controller +@RequestMapping(value = "/wxNotify") +@Api(value = "微信通知") +public class WxNotifyController { + + private static Logger log = LoggerFactory.getLogger(WxNotifyController.class); + + + @RequestMapping(value = "/verifyWxToken", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "验证servlet") + public String verifyWxToken( + @RequestParam(name = "signature", required = false) String signature, + @RequestParam(name = "timestamp", required = false) String timestamp, + @RequestParam(name = "nonce", required = false) String nonce, + @RequestParam(name = "echostr", required = false) String echostr + ) { + + try { + + String signatureStr = WxUtils.getSHA1("PHGWX" , timestamp , nonce); + log.info("signatureStr!!!!!" + signatureStr); + log.info("signature!!!!!" + signature); + if (signature.equals(signatureStr)) { + log.info("验证通过!!!!!"); + return echostr; + } + log.info("验证失败!!!!!"); + return null; + } catch (Exception e) { + return null; + } + + } +} diff --git a/service/src/main/java/com/hfkj/common/utils/WxUtils.java b/service/src/main/java/com/hfkj/common/utils/WxUtils.java index 20a6fa0..daae202 100644 --- a/service/src/main/java/com/hfkj/common/utils/WxUtils.java +++ b/service/src/main/java/com/hfkj/common/utils/WxUtils.java @@ -211,6 +211,46 @@ public class WxUtils { } } + /** + * 用SHA1算法生成安全签名 + * @param token 票据 + * @param timestamp 时间戳 + * @param nonce 随机字符串 + * @return 安全签名 + * @throws Exception + */ + public static String getSHA1(String token, String timestamp, String nonce) throws Exception + { + try { + String[] array = new String[] { token, timestamp, nonce}; + StringBuffer sb = new StringBuffer(); + // 字符串排序 + Arrays.sort(array); + for (int i = 0; i < 3; i++) { + sb.append(array[i]); + } + String str = sb.toString(); + // SHA1签名生成 + MessageDigest md = MessageDigest.getInstance("SHA-1"); + md.update(str.getBytes()); + byte[] digest = md.digest(); + + StringBuffer hexstr = new StringBuffer(); + String shaHex = ""; + for (int i = 0; i < digest.length; i++) { + shaHex = Integer.toHexString(digest[i] & 0xFF); + if (shaHex.length() < 2) { + hexstr.append(0); + } + hexstr.append(shaHex); + } + return hexstr.toString(); + } catch (Exception e) { + e.printStackTrace(); + throw new Exception(String.format("Invalid sign_type: %s")); + } + } + /** * 拼接签名数据 *