From 241efb39b7c09b2b4db5781b69116847e93c880b Mon Sep 17 00:00:00 2001 From: zeek <984294471@qq.com> Date: Thu, 19 Mar 2020 21:45:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 62 ++++++++++++------- .../com/qq/weixin/mp/aes/AesException.java | 59 ------------------ .../solo/{weixin => wechat}/WeXinApp.java | 2 +- .../solo/wechat/conf/WeChatBeans.java | 47 ++++++++++++++ .../conf/WeXinConfigure.java | 4 +- .../controller/WeXinController.java | 17 ++--- .../{weixin => wechat}/entity/Validate.java | 12 +++- .../solo/wechat/service/WeChatService.java | 12 ++++ .../solo/{weixin => wechat}/verify/SHA1.java | 6 +- src/main/resources/application-dev.properties | 6 +- .../solo/{weixin => wechat}/package-info.java | 2 +- 11 files changed, 127 insertions(+), 102 deletions(-) delete mode 100644 src/main/java/com/qq/weixin/mp/aes/AesException.java rename src/main/java/com/zeekling/solo/{weixin => wechat}/WeXinApp.java (92%) create mode 100644 src/main/java/com/zeekling/solo/wechat/conf/WeChatBeans.java rename src/main/java/com/zeekling/solo/{weixin => wechat}/conf/WeXinConfigure.java (93%) rename src/main/java/com/zeekling/solo/{weixin => wechat}/controller/WeXinController.java (72%) rename src/main/java/com/zeekling/solo/{weixin => wechat}/entity/Validate.java (80%) create mode 100644 src/main/java/com/zeekling/solo/wechat/service/WeChatService.java rename src/main/java/com/zeekling/solo/{weixin => wechat}/verify/SHA1.java (92%) rename src/test/java/com/zeekling/solo/{weixin => wechat}/package-info.java (75%) diff --git a/pom.xml b/pom.xml index 4de9c86..c4bd1f7 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,8 @@ UTF-8 1.8 1.8 + + 3.7.0 @@ -44,6 +46,11 @@ + + org.springframework.boot + spring-boot-starter-thymeleaf + + org.springframework.boot spring-boot-starter @@ -68,6 +75,38 @@ + + commons-codec + commons-codec + 1.9 + + + + + com.github.binarywang + weixin-java-mp + ${weixin-java-mp.version} + + + + org.projectlombok + lombok + provided + + + + redis.clients + jedis + 2.9.0 + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot spring-boot-test @@ -81,29 +120,6 @@ test - - com.github.binarywang - weixin-java-common - 3.7.0 - - - - com.github.binarywang - weixin-java-mp - 3.6.0 - - - - com.github.binarywang - wx-java-mp-spring-boot-starter - 3.7.0 - - - - commons-codec - commons-codec - 1.9 - junit diff --git a/src/main/java/com/qq/weixin/mp/aes/AesException.java b/src/main/java/com/qq/weixin/mp/aes/AesException.java deleted file mode 100644 index 1722b49..0000000 --- a/src/main/java/com/qq/weixin/mp/aes/AesException.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.qq.weixin.mp.aes; - -@SuppressWarnings("serial") -public class AesException extends Exception { - - public final static int OK = 0; - public final static int ValidateSignatureError = -40001; - public final static int ParseXmlError = -40002; - public final static int ComputeSignatureError = -40003; - public final static int IllegalAesKey = -40004; - public final static int ValidateAppidError = -40005; - public final static int EncryptAESError = -40006; - public final static int DecryptAESError = -40007; - public final static int IllegalBuffer = -40008; - //public final static int EncodeBase64Error = -40009; - //public final static int DecodeBase64Error = -40010; - //public final static int GenReturnXmlError = -40011; - - private int code; - - private static String getMessage(int code) { - switch (code) { - case ValidateSignatureError: - return "签名验证错误"; - case ParseXmlError: - return "xml解析失败"; - case ComputeSignatureError: - return "sha加密生成签名失败"; - case IllegalAesKey: - return "SymmetricKey非法"; - case ValidateAppidError: - return "appid校验失败"; - case EncryptAESError: - return "aes加密失败"; - case DecryptAESError: - return "aes解密失败"; - case IllegalBuffer: - return "解密后得到的buffer非法"; -// case EncodeBase64Error: -// return "base64加密错误"; -// case DecodeBase64Error: -// return "base64解密错误"; -// case GenReturnXmlError: -// return "xml生成失败"; - default: - return null; // cannot be - } - } - - public int getCode() { - return code; - } - - public AesException(int code) { - super(getMessage(code)); - this.code = code; - } - -} diff --git a/src/main/java/com/zeekling/solo/weixin/WeXinApp.java b/src/main/java/com/zeekling/solo/wechat/WeXinApp.java similarity index 92% rename from src/main/java/com/zeekling/solo/weixin/WeXinApp.java rename to src/main/java/com/zeekling/solo/wechat/WeXinApp.java index 4c4c2ae..1e31ee3 100644 --- a/src/main/java/com/zeekling/solo/weixin/WeXinApp.java +++ b/src/main/java/com/zeekling/solo/wechat/WeXinApp.java @@ -1,4 +1,4 @@ -package com.zeekling.solo.weixin; +package com.zeekling.solo.wechat; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; diff --git a/src/main/java/com/zeekling/solo/wechat/conf/WeChatBeans.java b/src/main/java/com/zeekling/solo/wechat/conf/WeChatBeans.java new file mode 100644 index 0000000..016de06 --- /dev/null +++ b/src/main/java/com/zeekling/solo/wechat/conf/WeChatBeans.java @@ -0,0 +1,47 @@ +package com.zeekling.solo.wechat.conf; + +import lombok.AllArgsConstructor; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; +import me.chanjar.weixin.mp.config.WxMpConfigStorage; +import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author zeekling [lingzhaohui@zeekling.cn] + * @version 1.0 + * @apiNote + * @since 2020-03-18 + */ +@AllArgsConstructor +@Configuration +public class WeChatBeans { + + @Resource + private WeXinConfigure weXinConfigure; + + @Bean + public WxMpService wxMpService() { + WxMpService service = new WxMpServiceImpl(); + WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl(); + configStorage.setAppId(weXinConfigure.getAppId()); + configStorage.setSecret(weXinConfigure.getSecret()); + configStorage.setToken(weXinConfigure.getToken()); + configStorage.setAesKey(weXinConfigure.getAesKey()); + Map configStorageMap = new HashMap<>(); + configStorageMap.put(weXinConfigure.getAppId(), configStorage); + service.setMultiConfigStorages(configStorageMap); + return service; + } + +// public WxMpInMemoryConfigStorage + +} diff --git a/src/main/java/com/zeekling/solo/weixin/conf/WeXinConfigure.java b/src/main/java/com/zeekling/solo/wechat/conf/WeXinConfigure.java similarity index 93% rename from src/main/java/com/zeekling/solo/weixin/conf/WeXinConfigure.java rename to src/main/java/com/zeekling/solo/wechat/conf/WeXinConfigure.java index 4fd600f..264616e 100644 --- a/src/main/java/com/zeekling/solo/weixin/conf/WeXinConfigure.java +++ b/src/main/java/com/zeekling/solo/wechat/conf/WeXinConfigure.java @@ -1,10 +1,8 @@ -package com.zeekling.solo.weixin.conf; +package com.zeekling.solo.wechat.conf; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import javax.validation.Valid; - /** * @author zeekling [lingzhaohui@zeekling.cn] * @version 1.0 diff --git a/src/main/java/com/zeekling/solo/weixin/controller/WeXinController.java b/src/main/java/com/zeekling/solo/wechat/controller/WeXinController.java similarity index 72% rename from src/main/java/com/zeekling/solo/weixin/controller/WeXinController.java rename to src/main/java/com/zeekling/solo/wechat/controller/WeXinController.java index 42bbeea..65e3415 100644 --- a/src/main/java/com/zeekling/solo/weixin/controller/WeXinController.java +++ b/src/main/java/com/zeekling/solo/wechat/controller/WeXinController.java @@ -1,9 +1,9 @@ -package com.zeekling.solo.weixin.controller; +package com.zeekling.solo.wechat.controller; -import com.qq.weixin.mp.aes.AesException; -import com.zeekling.solo.weixin.conf.WeXinConfigure; -import com.zeekling.solo.weixin.entity.Validate; -import com.zeekling.solo.weixin.verify.SHA1; +import com.zeekling.solo.wechat.conf.WeXinConfigure; +import com.zeekling.solo.wechat.entity.Validate; +import com.zeekling.solo.wechat.verify.SHA1; +import me.chanjar.weixin.mp.api.WxMpService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,8 +25,11 @@ public class WeXinController { @Resource private WeXinConfigure wechatConfig; + @Resource + private WxMpService wxMpService; + @RequestMapping(value = "/validate") - public String validate(Validate validate) throws AesException { + public String validate(Validate validate) { String token = wechatConfig.getToken(); String signature = SHA1.getSHA1(token, validate.getTimestamp(), validate.getNonce()); // 3.字符串校验 @@ -36,7 +39,7 @@ public class WeXinController { return validate.getEchostr(); } else { logger.error("微信-签名校验失败"); - return ""; + return "微信-签名校验失败"; } } diff --git a/src/main/java/com/zeekling/solo/weixin/entity/Validate.java b/src/main/java/com/zeekling/solo/wechat/entity/Validate.java similarity index 80% rename from src/main/java/com/zeekling/solo/weixin/entity/Validate.java rename to src/main/java/com/zeekling/solo/wechat/entity/Validate.java index d72d940..10b4c4f 100644 --- a/src/main/java/com/zeekling/solo/weixin/entity/Validate.java +++ b/src/main/java/com/zeekling/solo/wechat/entity/Validate.java @@ -1,4 +1,4 @@ -package com.zeekling.solo.weixin.entity; +package com.zeekling.solo.wechat.entity; /** * @author zeekling [lingzhaohui@zeekling.cn] @@ -16,6 +16,16 @@ public class Validate { private String echostr; + private String appid; + + public String getAppid() { + return appid; + } + + public void setAppid(String appid) { + this.appid = appid; + } + public String getSignature() { return signature; } diff --git a/src/main/java/com/zeekling/solo/wechat/service/WeChatService.java b/src/main/java/com/zeekling/solo/wechat/service/WeChatService.java new file mode 100644 index 0000000..a7fdf66 --- /dev/null +++ b/src/main/java/com/zeekling/solo/wechat/service/WeChatService.java @@ -0,0 +1,12 @@ +package com.zeekling.solo.wechat.service; + +/** + * @author zeekling [lingzhaohui@zeekling.cn] + * @version 1.0 + * @apiNote + * @since 2020-03-18 + */ +public interface WeChatService { + + +} diff --git a/src/main/java/com/zeekling/solo/weixin/verify/SHA1.java b/src/main/java/com/zeekling/solo/wechat/verify/SHA1.java similarity index 92% rename from src/main/java/com/zeekling/solo/weixin/verify/SHA1.java rename to src/main/java/com/zeekling/solo/wechat/verify/SHA1.java index f3c88de..e45b63b 100644 --- a/src/main/java/com/zeekling/solo/weixin/verify/SHA1.java +++ b/src/main/java/com/zeekling/solo/wechat/verify/SHA1.java @@ -1,6 +1,4 @@ -package com.zeekling.solo.weixin.verify; - -import com.qq.weixin.mp.aes.AesException; +package com.zeekling.solo.wechat.verify; import java.security.MessageDigest; import java.util.Arrays; @@ -21,7 +19,7 @@ public class SHA1 { * @param nonce 随机字符串 * @return 安全签名 */ - public static String getSHA1(String token, String timestamp, String nonce) throws AesException { + public static String getSHA1(String token, String timestamp, String nonce) { try { String[] array = new String[]{token, timestamp, nonce}; StringBuilder sb = new StringBuilder(); diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 274622a..99525af 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -2,7 +2,7 @@ server.port=9090 logging.file=/home/zeek/project/solo-weixin/logs/weixin.log # 公众号配置(必填) -wx.mp.appId=zeekling -wx.mp.secret=@secret +wx.mp.appId=wxa1de154d148ffc9e +wx.mp.secret=3b988f265ea9d5056657b5f5fc3ad566 wx.mp.token=zeekling -wx.mp.aesKey=@aesKey \ No newline at end of file +wx.mp.aesKey=MhHpsysI44QIZkEPTiIvTf96XbEJY3QAGUHyxF1Vp9W \ No newline at end of file diff --git a/src/test/java/com/zeekling/solo/weixin/package-info.java b/src/test/java/com/zeekling/solo/wechat/package-info.java similarity index 75% rename from src/test/java/com/zeekling/solo/weixin/package-info.java rename to src/test/java/com/zeekling/solo/wechat/package-info.java index 039ade1..e192e9f 100644 --- a/src/test/java/com/zeekling/solo/weixin/package-info.java +++ b/src/test/java/com/zeekling/solo/wechat/package-info.java @@ -4,4 +4,4 @@ * @author zeekling [lingzhaohui@zeekling.cn] * @since 2020-03-15 */ -package com.zeekling.solo.weixin; \ No newline at end of file +package com.zeekling.solo.wechat; \ No newline at end of file