|
|
|
@@ -10,6 +10,7 @@ import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.http.MediaType; |
|
|
|
import org.springframework.stereotype.Controller; |
|
|
|
import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
@@ -74,7 +75,7 @@ public class WechatCalllbackController extends BaseController { |
|
|
|
return "success"; |
|
|
|
} |
|
|
|
|
|
|
|
@RequestMapping("/{appId}/callback") |
|
|
|
@RequestMapping(value = "/{appId}/callback", method = RequestMethod.POST, produces = MediaType.TEXT_XML_VALUE) |
|
|
|
public Object callback(@PathVariable("appId") String appId, HttpServletRequest request) throws IOException { |
|
|
|
logger.info("[" +getIpAddr() + "]接收微信请求 /{appId}/callback"); |
|
|
|
InputStream inStream = request.getInputStream(); |
|
|
|
@@ -110,7 +111,7 @@ public class WechatCalllbackController extends BaseController { |
|
|
|
// aes加密的消息 |
|
|
|
WxMpXmlMessage inMessage = WxOpenXmlMessage.fromEncryptedMpXml(resultxml, |
|
|
|
wxOpenService.getWxOpenConfigStorage(), timestamp, nonce, msgSignature); |
|
|
|
this.logger.debug("\n消息解密后内容为:\n{} ", inMessage.toString()); |
|
|
|
logger.debug("\n消息解密后内容为:\n{} ", inMessage.toString()); |
|
|
|
// 全网发布测试用例 |
|
|
|
if (StringUtils.equalsAnyIgnoreCase(appId, "wxd101a85aa106f53e", "wx570bc396a51b8ff8")) { |
|
|
|
try { |
|
|
|
@@ -136,11 +137,22 @@ public class WechatCalllbackController extends BaseController { |
|
|
|
logger.error("callback", e); |
|
|
|
} |
|
|
|
} else { |
|
|
|
WxMpXmlOutMessage outMessage = wxOpenService.getWxOpenMessageRouter().route(inMessage, appId); |
|
|
|
if (outMessage != null) { |
|
|
|
out = WxOpenXmlMessage.wxMpOutXmlMessageToEncryptedXml(outMessage, wxOpenService.getWxOpenConfigStorage()); |
|
|
|
/**判断消息类型,调用对应的方法*/ |
|
|
|
switch (inMessage.getMsgType()){ |
|
|
|
/* |
|
|
|
case "event": |
|
|
|
case "text": |
|
|
|
WxMpXmlOutMessage outMessage = wxOpenService.getWxOpenMessageRouter().route(inMessage, appId); |
|
|
|
if (outMessage != null) { |
|
|
|
out = WxOpenXmlMessage.wxMpOutXmlMessageToEncryptedXml(outMessage, wxOpenService.getWxOpenConfigStorage()); |
|
|
|
} |
|
|
|
*/ |
|
|
|
default: |
|
|
|
return "success"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
logger.info(out); |
|
|
|
return out; |
|
|
|
} |
|
|
|
} |