mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2026-03-10 00:13:40 +08:00
整理及重构
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package me.chanjar.weixin.mp.demo;
|
||||
|
||||
import me.chanjar.weixin.mp.api.WxInMemoryConfigStorage;
|
||||
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
@@ -16,7 +16,7 @@ import java.io.InputStream;
|
||||
*/
|
||||
@XmlRootElement(name = "xml")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
class WxTestConfigStorage extends WxInMemoryConfigStorage {
|
||||
class WxMpDemoInMemoryConfigStorage extends WxMpInMemoryConfigStorage {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
@@ -25,11 +25,11 @@ class WxTestConfigStorage extends WxInMemoryConfigStorage {
|
||||
}
|
||||
|
||||
|
||||
public static WxTestConfigStorage fromXml(InputStream is) throws JAXBException {
|
||||
Unmarshaller um = JAXBContext.newInstance(WxTestConfigStorage.class).createUnmarshaller();
|
||||
public static WxMpDemoInMemoryConfigStorage fromXml(InputStream is) throws JAXBException {
|
||||
Unmarshaller um = JAXBContext.newInstance(WxMpDemoInMemoryConfigStorage.class).createUnmarshaller();
|
||||
InputSource inputSource = new InputSource(is);
|
||||
inputSource.setEncoding("utf-8");
|
||||
return (WxTestConfigStorage) um.unmarshal(inputSource);
|
||||
return (WxMpDemoInMemoryConfigStorage) um.unmarshal(inputSource);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,14 +6,14 @@ import org.eclipse.jetty.servlet.ServletHandler;
|
||||
/**
|
||||
* @author Daniel Qian
|
||||
*/
|
||||
public class WxTestServer {
|
||||
public class WxMpDemoServer {
|
||||
public static void main(String[] args) throws Exception {
|
||||
Server server = new Server(8080);
|
||||
|
||||
ServletHandler handler = new ServletHandler();
|
||||
server.setHandler(handler);
|
||||
|
||||
handler.addServletWithMapping(WxTestServlet.class, "/*");
|
||||
handler.addServletWithMapping(WxMpDemoServlet.class, "/*");
|
||||
server.start();
|
||||
server.join();
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package me.chanjar.weixin.mp.demo;
|
||||
|
||||
import me.chanjar.weixin.mp.api.*;
|
||||
import me.chanjar.weixin.mp.bean.WxXmlMessage;
|
||||
import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
|
||||
import me.chanjar.weixin.mp.bean.WxXmlOutTextMessage;
|
||||
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
|
||||
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
|
||||
import me.chanjar.weixin.mp.bean.WxMpXmlOutTextMessage;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
@@ -18,34 +18,34 @@ import java.util.Map;
|
||||
/**
|
||||
* @author Daniel Qian
|
||||
*/
|
||||
public class WxTestServlet extends HttpServlet {
|
||||
public class WxMpDemoServlet extends HttpServlet {
|
||||
|
||||
protected WxService wxService;
|
||||
protected WxConfigStorage wxConfigStorage;
|
||||
protected WxMessageRouter wxMessageRouter;
|
||||
protected WxMpService wxMpService;
|
||||
protected WxMpConfigStorage wxMpConfigStorage;
|
||||
protected WxMpMessageRouter wxMpMessageRouter;
|
||||
|
||||
@Override public void init() throws ServletException {
|
||||
//
|
||||
super.init();
|
||||
try {
|
||||
InputStream is1 = ClassLoader.getSystemResourceAsStream("test-config.xml");
|
||||
WxTestConfigStorage config = WxTestConfigStorage.fromXml(is1);
|
||||
WxMpDemoInMemoryConfigStorage config = WxMpDemoInMemoryConfigStorage.fromXml(is1);
|
||||
|
||||
wxConfigStorage = config;
|
||||
wxService = new WxServiceImpl();
|
||||
wxService.setWxConfigStorage(config);
|
||||
wxMpConfigStorage = config;
|
||||
wxMpService = new WxMpServiceImpl();
|
||||
wxMpService.setWxMpConfigStorage(config);
|
||||
|
||||
WxMessageHandler handler = new WxMessageHandler() {
|
||||
@Override public WxXmlOutMessage handle(WxXmlMessage wxMessage, Map<String, Object> context) {
|
||||
WxXmlOutTextMessage m
|
||||
= WxXmlOutMessage.TEXT().content("测试加密消息").fromUser(wxMessage.getToUserName())
|
||||
WxMpMessageHandler handler = new WxMpMessageHandler() {
|
||||
@Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context) {
|
||||
WxMpXmlOutTextMessage m
|
||||
= WxMpXmlOutMessage.TEXT().content("测试加密消息").fromUser(wxMessage.getToUserName())
|
||||
.toUser(wxMessage.getFromUserName()).build();
|
||||
return m;
|
||||
}
|
||||
};
|
||||
|
||||
wxMessageRouter = new WxMessageRouter();
|
||||
wxMessageRouter
|
||||
wxMpMessageRouter = new WxMpMessageRouter();
|
||||
wxMpMessageRouter
|
||||
.rule()
|
||||
.async(false)
|
||||
.content("哈哈") // 拦截内容为“哈哈”的消息
|
||||
@@ -67,7 +67,7 @@ public class WxTestServlet extends HttpServlet {
|
||||
response.setContentType("text/html;charset=utf-8");
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
|
||||
if (!wxService.checkSignature(timestamp, nonce, signature)) {
|
||||
if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
|
||||
// 消息签名不正确,说明不是公众平台发过来的消息
|
||||
response.getWriter().println("非法请求");
|
||||
return;
|
||||
@@ -84,30 +84,27 @@ public class WxTestServlet extends HttpServlet {
|
||||
"raw" :
|
||||
request.getParameter("encrypt_type");
|
||||
|
||||
WxXmlMessage inMessage = null;
|
||||
WxMpXmlMessage inMessage = null;
|
||||
|
||||
if ("raw".equals(encryptType)) {
|
||||
// 明文传输的消息
|
||||
inMessage = WxXmlMessage.fromXml(request.getInputStream());
|
||||
inMessage = WxMpXmlMessage.fromXml(request.getInputStream());
|
||||
} else if ("aes".equals(encryptType)) {
|
||||
// 是aes加密的消息
|
||||
String msgSignature = request.getParameter("msg_signature");
|
||||
inMessage = WxXmlMessage.fromEncryptedXml(
|
||||
request.getInputStream(),
|
||||
wxConfigStorage,
|
||||
timestamp, nonce, msgSignature);
|
||||
inMessage = WxMpXmlMessage.fromEncryptedXml(request.getInputStream(), wxMpConfigStorage, timestamp, nonce, msgSignature);
|
||||
} else {
|
||||
response.getWriter().println("不可识别的加密类型");
|
||||
return;
|
||||
}
|
||||
|
||||
WxXmlOutMessage outMessage = wxMessageRouter.route(inMessage);
|
||||
WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage);
|
||||
|
||||
if (outMessage != null) {
|
||||
if ("raw".equals(encryptType)) {
|
||||
response.getWriter().write(outMessage.toXml());
|
||||
} else if ("aes".equals(encryptType)) {
|
||||
response.getWriter().write(outMessage.toEncryptedXml(wxConfigStorage));
|
||||
response.getWriter().write(outMessage.toEncryptedXml(wxMpConfigStorage));
|
||||
}
|
||||
return;
|
||||
}
|
||||
Reference in New Issue
Block a user