|
|
@@ -13,7 +13,9 @@ import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.servlet.ServletInputStream;
|
|
|
@@ -43,7 +45,7 @@ public class WechatGatewayController extends BaseController {
|
|
|
*
|
|
|
* @param request
|
|
|
*/
|
|
|
- @RequestMapping(path = "/gateway")
|
|
|
+ @RequestMapping(path = "/gateway", method = RequestMethod.GET)
|
|
|
public ResponseEntity<String> gateway(HttpServletRequest request) {
|
|
|
|
|
|
String token = WechatConstant.TOKEN;
|
|
|
@@ -118,6 +120,82 @@ public class WechatGatewayController extends BaseController {
|
|
|
return new ResponseEntity<String>(responseStr, HttpStatus.OK);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 微信登录接口
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ */
|
|
|
+ @RequestMapping(path = "/gateway", method = RequestMethod.POST)
|
|
|
+ public ResponseEntity<String> gateway(@RequestBody String param, HttpServletRequest request) {
|
|
|
+
|
|
|
+ String token = WechatConstant.TOKEN;
|
|
|
+ String signature = request.getParameter("signature");
|
|
|
+ String timestamp = request.getParameter("timestamp");
|
|
|
+ String nonce = request.getParameter("nonce");
|
|
|
+ String responseStr = "";
|
|
|
+ logger.debug("token = " + token + "||||" + "signature = " + signature + "|||" + "timestamp = "
|
|
|
+ + timestamp + "|||" + "nonce = " + nonce);
|
|
|
+ String sourceString = "";
|
|
|
+ String[] ss = new String[]{token, timestamp, nonce};
|
|
|
+ Arrays.sort(ss);
|
|
|
+ for (String s : ss) {
|
|
|
+ sourceString += s;
|
|
|
+ }
|
|
|
+ String signature1 = AuthenticationFactory.SHA1Encode(sourceString).toLowerCase();
|
|
|
+ logger.debug("sourceString = " + sourceString + "||||" + "signature1 = " + signature1);
|
|
|
+ try {
|
|
|
+ if (signature1.equals(signature)) {
|
|
|
+ String postStr = param;//this.readStreamParameter(request.getInputStream());
|
|
|
+ if (StringUtil.isEmpty(postStr)) {
|
|
|
+ responseStr = "未输入任何内容";
|
|
|
+ } else {
|
|
|
+ /*if (postStr.equals(new String(postStr.getBytes("ISO-8859-1"), "ISO-8859-1"))) {
|
|
|
+ logger.debug(" This type is iso-8859-1");
|
|
|
+ postStr = new String(postStr.getBytes("ISO-8859-1"), "UTF-8");
|
|
|
+
|
|
|
+ }
|
|
|
+ if (postStr.equals(new String(postStr.getBytes("GB2312"), "GB2312"))) {
|
|
|
+ logger.debug(" This type is GB2312" + postStr);
|
|
|
+ postStr = new String(postStr.getBytes("GB2312"), "UTF-8");
|
|
|
+ logger.debug(" change postStr to utf-8 " + postStr);
|
|
|
+ }
|
|
|
+ if (postStr.equals(new String(postStr.getBytes("GBK"), "GBK"))) {
|
|
|
+ logger.debug(" This type is GBK");
|
|
|
+ postStr = new String(postStr.getBytes("GBK"), "UTF-8");
|
|
|
+
|
|
|
+ }
|
|
|
+ postStr = new String(postStr.getBytes("GB2312"), "UTF-8");*/
|
|
|
+ Document document = DocumentHelper.parseText(postStr);
|
|
|
+ Element root = document.getRootElement();
|
|
|
+ String fromUserName = root.elementText("FromUserName");
|
|
|
+ String toUserName = root.elementText("ToUserName");
|
|
|
+ String keyword = root.elementTextTrim("Content");
|
|
|
+ String msgType = root.elementTextTrim("MsgType");
|
|
|
+ String event = root.elementText("Event");
|
|
|
+ String eventKey = root.elementText("EventKey");
|
|
|
+ if (WechatConstant.MSG_TYPE_TEXT.equals(msgType)) {
|
|
|
+ responseStr = textResponseHandler(fromUserName, toUserName, keyword);
|
|
|
+ } else if (WechatConstant.MSG_TYPE_EVENT.equals(msgType)) {
|
|
|
+ responseStr = eventResponseHandler(fromUserName, toUserName, keyword, event, eventKey);
|
|
|
+ } else {
|
|
|
+ responseStr = eventResponseHandler(fromUserName, toUserName, keyword, event, eventKey);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ logger.debug(">>>>>>>>>>>>>..responseStr>>>>>>>>>>>>>>>" + responseStr);
|
|
|
+ } else {
|
|
|
+ responseStr = "亲,非法访问,签名失败";
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ // TODO Auto-generated catch block
|
|
|
+ logger.error("处理失败", e);
|
|
|
+ responseStr = "亲,网络超时,请稍后重试";
|
|
|
+ }
|
|
|
+
|
|
|
+ return new ResponseEntity<String>(responseStr, HttpStatus.OK);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 鏂囨湰淇℃伅鍥炲
|
|
|
*
|
|
|
@@ -161,7 +239,7 @@ public class WechatGatewayController extends BaseController {
|
|
|
public String eventResponseHandler(String fromUserName, String toUserName, String keyWords, String event,
|
|
|
String eventKey) throws Exception {
|
|
|
String resultStr = "";
|
|
|
- // 璁㈤槄
|
|
|
+ //
|
|
|
if (event.equals("subscribe")) {
|
|
|
resultStr = "HC小区物业管理系统是由java110团队于2017年4月份发起的前后端分离、分布式架构开源项目,目前我们的代码开源在github 和gitee上,开源项目由HC小区管理系统后端,HC小区管理系统前端,HC小区管理系统业主手机版和HC小区管理系统物业手机版,业务技术交流群:827669685";
|
|
|
} else if (event.equals("unsubscribe")) {
|