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