using maven build tools instead

This commit is contained in:
Sola
2015-11-13 17:33:58 +08:00
parent 2dd27b3524
commit 8959b33a04
17 changed files with 104 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
package love.sola.netsupport.wechat;
import me.chanjar.weixin.common.util.StringUtils;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.WxMpServiceImpl;
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* ***********************************************
* Created by Sola on 2015/11/2.
* Don't modify this source without my agreement
* ***********************************************
*/
@WebServlet(name = "WxMpServlet", urlPatterns = "/wechattest", loadOnStartup = 2)
public class WxMpServlet extends HttpServlet {
public static WxMpServlet instance;
protected WxMpInMemoryConfigStorage config;
protected WxMpService wxMpService;
protected WxMpMessageRouter wxMpMessageRouter;
public WxMpServlet() {
instance = this;
}
@Override
public void init() throws ServletException {
super.init();
config = new WxMpInMemoryConfigStorage();
config.setAppId("*****");
config.setSecret("*****");
config.setToken("*****");
// config.setAesKey("SolaAES");
wxMpService = new WxMpServiceImpl();
wxMpService.setWxMpConfigStorage(config);
wxMpMessageRouter = new WxMpMessageRouter(wxMpService);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
String signature = request.getParameter("signature");
String nonce = request.getParameter("nonce");
String timestamp = request.getParameter("timestamp");
if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
// Signature fail
response.getWriter().println("Access Denied");
return;
}
String echostr = request.getParameter("echostr");
if (StringUtils.isNotBlank(echostr)) {
// validate request
response.getWriter().println(echostr);
return;
}
String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? "raw" : request.getParameter("encrypt_type");
if ("raw".equals(encryptType)) {
WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream());
WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage);
response.getWriter().write(outMessage.toXml());
return;
}
if ("aes".equals(encryptType)) {
String msgSignature = request.getParameter("msg_signature");
WxMpXmlMessage inMessage = WxMpXmlMessage.fromEncryptedXml(request.getInputStream(), config, timestamp, nonce, msgSignature);
WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage);
response.getWriter().write(outMessage.toEncryptedXml(config));
return;
}
response.getWriter().println("Unknown encrypt-type");
return;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}

View File

@@ -0,0 +1,28 @@
package love.sola.netsupport.wechat.handler;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import java.util.HashMap;
import java.util.Map;
/**
* ***********************************************
* Created by Sola on 2015/11/5.
* Don't modify this source without my agreement
* ***********************************************
*/
public class HandlerList {
public static Map<String, Class<? extends WxMpMessageHandler>> handlers = new HashMap<>();
static {
handlers.put("Register", RegisterHandler.class);
}
public void init(WxMpMessageRouter router) {
}
}

View File

@@ -0,0 +1,33 @@
package love.sola.netsupport.wechat.handler;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import java.util.Map;
/**
* ***********************************************
* Created by Sola on 2015/11/4.
* Don't modify this source without my agreement
* ***********************************************
*/
public class RegisterHandler implements WxMpMessageHandler {
public RegisterHandler(WxMpMessageRouter router) {
router.rule().async(false).rContent("^").handler(this).end();
}
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager)
throws WxErrorException {
return null;
}
}

View File

@@ -0,0 +1,45 @@
package love.sola.netsupport.wechat.intercepter;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageInterceptor;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* ***********************************************
* Created by Sola on 2015/11/4.
* Don't modify this source without my agreement
* ***********************************************
*/
public class CheckSpamInterceptor implements WxMpMessageInterceptor {
private static class ValueLoader extends CacheLoader<String, Long> {
@Override
public Long load(String key) throws Exception {
return System.currentTimeMillis(); //TODO: CONFIGURATION
}
}
private static LoadingCache<String, Long> cache = CacheBuilder.newBuilder()
.concurrencyLevel(4)
.weakKeys()
.maximumSize(4096)
.expireAfterWrite(5, TimeUnit.SECONDS)
.build(new ValueLoader());
@Override
public boolean intercept(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
if (cache.getIfPresent(wxMessage.getFromUserName()) != null) {
}
return false;
}
}