ActionMapping->abstract
This commit is contained in:
parent
0427716348
commit
2d5d65ff0b
@ -17,6 +17,11 @@ weixin4j
|
|||||||
|
|
||||||
2).weixin4j-mp:用netty构建http服务器并支持消息分发
|
2).weixin4j-mp:用netty构建http服务器并支持消息分发
|
||||||
|
|
||||||
|
* 2014-10-28
|
||||||
|
|
||||||
|
1).weixin4j-mp:调整ActionMapping抽象化
|
||||||
|
|
||||||
|
|
||||||
接下来
|
接下来
|
||||||
------
|
------
|
||||||
公众号支付模块引入
|
公众号支付模块引入
|
||||||
|
|||||||
@ -71,24 +71,6 @@ public class MessageUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取对应的mapping key
|
|
||||||
*
|
|
||||||
* @param xmlMsg
|
|
||||||
* @return
|
|
||||||
* @throws DocumentException
|
|
||||||
* @see com.foxinmy.weixin4j.server.WeixinActionMapping
|
|
||||||
*/
|
|
||||||
public static String getMappingKey(String xmlMsg) throws DocumentException {
|
|
||||||
Document doc = DocumentHelper.parseText(xmlMsg);
|
|
||||||
String msgType = doc.selectSingleNode("/xml/MsgType").getStringValue();
|
|
||||||
if (msgType.equalsIgnoreCase(MessageType.event.name())) {
|
|
||||||
msgType += "_"
|
|
||||||
+ doc.selectSingleNode("/xml/Event").getStringValue();
|
|
||||||
}
|
|
||||||
return msgType;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xml消息转换为消息对象
|
* xml消息转换为消息对象
|
||||||
*
|
*
|
||||||
|
|||||||
@ -57,3 +57,7 @@ tencent weixin platform java sdk 微信公众平台开发工具包 http://mp.wei
|
|||||||
* 2014-10-27
|
* 2014-10-27
|
||||||
|
|
||||||
1).用netty构建http服务器并支持消息分发
|
1).用netty构建http服务器并支持消息分发
|
||||||
|
|
||||||
|
* 2014-10-28
|
||||||
|
|
||||||
|
1).调整ActionMapping抽象化
|
||||||
@ -7,12 +7,14 @@ import java.util.List;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||||
import com.foxinmy.weixin4j.http.BaseResult;
|
import com.foxinmy.weixin4j.http.BaseResult;
|
||||||
|
import com.foxinmy.weixin4j.model.WeixinAccountV2;
|
||||||
import com.foxinmy.weixin4j.mp.api.GroupApi;
|
import com.foxinmy.weixin4j.mp.api.GroupApi;
|
||||||
import com.foxinmy.weixin4j.mp.api.HelperApi;
|
import com.foxinmy.weixin4j.mp.api.HelperApi;
|
||||||
import com.foxinmy.weixin4j.mp.api.MassApi;
|
import com.foxinmy.weixin4j.mp.api.MassApi;
|
||||||
import com.foxinmy.weixin4j.mp.api.MediaApi;
|
import com.foxinmy.weixin4j.mp.api.MediaApi;
|
||||||
import com.foxinmy.weixin4j.mp.api.MenuApi;
|
import com.foxinmy.weixin4j.mp.api.MenuApi;
|
||||||
import com.foxinmy.weixin4j.mp.api.NotifyApi;
|
import com.foxinmy.weixin4j.mp.api.NotifyApi;
|
||||||
|
import com.foxinmy.weixin4j.mp.api.PayApi;
|
||||||
import com.foxinmy.weixin4j.mp.api.QrApi;
|
import com.foxinmy.weixin4j.mp.api.QrApi;
|
||||||
import com.foxinmy.weixin4j.mp.api.TmplApi;
|
import com.foxinmy.weixin4j.mp.api.TmplApi;
|
||||||
import com.foxinmy.weixin4j.mp.api.UserApi;
|
import com.foxinmy.weixin4j.mp.api.UserApi;
|
||||||
@ -27,6 +29,7 @@ import com.foxinmy.weixin4j.mp.model.UserToken;
|
|||||||
import com.foxinmy.weixin4j.mp.msg.model.Article;
|
import com.foxinmy.weixin4j.mp.msg.model.Article;
|
||||||
import com.foxinmy.weixin4j.mp.msg.model.BaseMsg;
|
import com.foxinmy.weixin4j.mp.msg.model.BaseMsg;
|
||||||
import com.foxinmy.weixin4j.mp.msg.notify.BaseNotify;
|
import com.foxinmy.weixin4j.mp.msg.notify.BaseNotify;
|
||||||
|
import com.foxinmy.weixin4j.mp.payment.Order;
|
||||||
import com.foxinmy.weixin4j.mp.response.TemplateMessage;
|
import com.foxinmy.weixin4j.mp.response.TemplateMessage;
|
||||||
import com.foxinmy.weixin4j.token.FileTokenApi;
|
import com.foxinmy.weixin4j.token.FileTokenApi;
|
||||||
import com.foxinmy.weixin4j.token.TokenApi;
|
import com.foxinmy.weixin4j.token.TokenApi;
|
||||||
@ -51,6 +54,7 @@ public class WeixinProxy {
|
|||||||
private final QrApi qrApi;
|
private final QrApi qrApi;
|
||||||
private final TmplApi tmplApi;
|
private final TmplApi tmplApi;
|
||||||
private final HelperApi helperApi;
|
private final HelperApi helperApi;
|
||||||
|
private final PayApi payApi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认采用文件存放Token跟配置文件中的appi信息
|
* 默认采用文件存放Token跟配置文件中的appi信息
|
||||||
@ -79,6 +83,7 @@ public class WeixinProxy {
|
|||||||
this.qrApi = new QrApi(tokenApi);
|
this.qrApi = new QrApi(tokenApi);
|
||||||
this.tmplApi = new TmplApi(tokenApi);
|
this.tmplApi = new TmplApi(tokenApi);
|
||||||
this.helperApi = new HelperApi(tokenApi);
|
this.helperApi = new HelperApi(tokenApi);
|
||||||
|
this.payApi = new PayApi(tokenApi);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -704,4 +709,44 @@ public class WeixinProxy {
|
|||||||
public String getShorturl(String url) throws WeixinException {
|
public String getShorturl(String url) throws WeixinException {
|
||||||
return helperApi.getShorturl(url);
|
return helperApi.getShorturl(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发货通知
|
||||||
|
*
|
||||||
|
* @param weixinConfig
|
||||||
|
* V2版本
|
||||||
|
* @param transid
|
||||||
|
* 交易单号
|
||||||
|
* @param orderNo
|
||||||
|
* 订单号
|
||||||
|
* @param status
|
||||||
|
* 成功|失败
|
||||||
|
* @param statusMsg
|
||||||
|
* status为失败时携带的信息
|
||||||
|
* @return
|
||||||
|
* @throws WeixinException
|
||||||
|
* @see com.foxinmy.weixin4j.mp.api.PayApi
|
||||||
|
*/
|
||||||
|
public BaseResult deliverNotify(WeixinAccountV2 weixinConfig,
|
||||||
|
String transid, String orderNo, boolean status, String statusMsg)
|
||||||
|
throws WeixinException {
|
||||||
|
return payApi.deliverNotify(weixinConfig, transid, orderNo, status,
|
||||||
|
statusMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单查询
|
||||||
|
*
|
||||||
|
* @param weixinConfig
|
||||||
|
* V2版本
|
||||||
|
* @param orderNo
|
||||||
|
* 订单号
|
||||||
|
* @return
|
||||||
|
* @throws WeixinException
|
||||||
|
* @see com.foxinmy.weixin4j.mp.api.PayApi
|
||||||
|
*/
|
||||||
|
public Order orderQuery(WeixinAccountV2 weixinConfig, String orderNo)
|
||||||
|
throws WeixinException {
|
||||||
|
return payApi.orderQuery(weixinConfig, orderNo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action;
|
package com.foxinmy.weixin4j.mp.action;
|
||||||
|
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.ImageMessage;
|
import com.foxinmy.weixin4j.msg.ImageMessage;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action;
|
package com.foxinmy.weixin4j.mp.action;
|
||||||
|
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.LinkMessage;
|
import com.foxinmy.weixin4j.msg.LinkMessage;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action;
|
package com.foxinmy.weixin4j.mp.action;
|
||||||
|
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.LocationMessage;
|
import com.foxinmy.weixin4j.msg.LocationMessage;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import org.dom4j.DocumentException;
|
import org.dom4j.DocumentException;
|
||||||
|
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
import com.foxinmy.weixin4j.util.ConfigUtil;
|
import com.foxinmy.weixin4j.util.ConfigUtil;
|
||||||
import com.foxinmy.weixin4j.util.MessageUtil;
|
import com.foxinmy.weixin4j.util.MessageUtil;
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action;
|
package com.foxinmy.weixin4j.mp.action;
|
||||||
|
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.mp.response.TextResponse;
|
import com.foxinmy.weixin4j.mp.response.TextResponse;
|
||||||
import com.foxinmy.weixin4j.msg.TextMessage;
|
import com.foxinmy.weixin4j.msg.TextMessage;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action;
|
package com.foxinmy.weixin4j.mp.action;
|
||||||
|
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.VideoMessage;
|
import com.foxinmy.weixin4j.msg.VideoMessage;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action;
|
package com.foxinmy.weixin4j.mp.action;
|
||||||
|
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.VoiceMessage;
|
import com.foxinmy.weixin4j.msg.VoiceMessage;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.LocationEventMessage;
|
import com.foxinmy.weixin4j.msg.event.LocationEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.MassEventMessage;
|
import com.foxinmy.weixin4j.msg.event.MassEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.menu.MenuEventMessage;
|
import com.foxinmy.weixin4j.msg.event.menu.MenuEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.menu.MenuLocationEventMessage;
|
import com.foxinmy.weixin4j.msg.event.menu.MenuLocationEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.menu.MenuPhotoEventMessage;
|
import com.foxinmy.weixin4j.msg.event.menu.MenuPhotoEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.menu.MenuScanEventMessage;
|
import com.foxinmy.weixin4j.msg.event.menu.MenuScanEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.menu.MenuEventMessage;
|
import com.foxinmy.weixin4j.msg.event.menu.MenuEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.ScanEventMessage;
|
import com.foxinmy.weixin4j.msg.event.ScanEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.ScribeEventMessage;
|
import com.foxinmy.weixin4j.msg.event.ScribeEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage;
|
import com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action.event;
|
package com.foxinmy.weixin4j.mp.action.event;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
|
||||||
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
import com.foxinmy.weixin4j.mp.action.DebugAction;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.Action;
|
||||||
import com.foxinmy.weixin4j.msg.event.ScribeEventMessage;
|
import com.foxinmy.weixin4j.msg.event.ScribeEventMessage;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package com.foxinmy.weixin4j.mp.action;
|
package com.foxinmy.weixin4j.mp.mapping;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
@ -1,19 +1,29 @@
|
|||||||
package com.foxinmy.weixin4j.mp.server;
|
package com.foxinmy.weixin4j.mp.mapping;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.Action;
|
import org.dom4j.DocumentException;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.WeixinAction;
|
import com.foxinmy.weixin4j.mp.action.WeixinAction;
|
||||||
import com.foxinmy.weixin4j.type.EventType;
|
import com.foxinmy.weixin4j.type.EventType;
|
||||||
import com.foxinmy.weixin4j.type.MessageType;
|
import com.foxinmy.weixin4j.type.MessageType;
|
||||||
import com.foxinmy.weixin4j.util.ClassUtil;
|
import com.foxinmy.weixin4j.util.ClassUtil;
|
||||||
|
|
||||||
public class WeixinActionMapping {
|
/**
|
||||||
|
* 注解实现的Mapping
|
||||||
|
*
|
||||||
|
* @className AnnotationActionMapping
|
||||||
|
* @author jy
|
||||||
|
* @date 2014年10月28日
|
||||||
|
* @since JDK 1.7
|
||||||
|
* @see com.foxinmy.weixin4j.mp.mapping.Action
|
||||||
|
*/
|
||||||
|
public class AnnotationActionMapping extends AbstractActionMapping {
|
||||||
private final Map<String, WeixinAction> actionMap;
|
private final Map<String, WeixinAction> actionMap;
|
||||||
|
|
||||||
public WeixinActionMapping() {
|
public AnnotationActionMapping() {
|
||||||
actionMap = new HashMap<String, WeixinAction>();
|
actionMap = new HashMap<String, WeixinAction>();
|
||||||
Set<Class<?>> weixinActions = ClassUtil.getClasses(WeixinAction.class
|
Set<Class<?>> weixinActions = ClassUtil.getClasses(WeixinAction.class
|
||||||
.getPackage());
|
.getPackage());
|
||||||
@ -42,7 +52,8 @@ public class WeixinActionMapping {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public WeixinAction getAction(String key) {
|
public WeixinAction getAction(String xmlMsg) throws DocumentException {
|
||||||
return actionMap.get(key.toLowerCase());
|
String key = getMappingKey(xmlMsg);
|
||||||
|
return actionMap.get(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ public class BaseResponse implements Serializable {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
Class<?>[] classes = ClassUtil.getClasses(
|
Class<?>[] classes = ClassUtil.getClasses(
|
||||||
TextResponse.class.getPackage()).toArray(new Class[0]);
|
BaseResponse.class.getPackage()).toArray(new Class[0]);
|
||||||
|
|
||||||
xmlStream.ignoreUnknownElements();
|
xmlStream.ignoreUnknownElements();
|
||||||
xmlStream.autodetectAnnotations(true);
|
xmlStream.autodetectAnnotations(true);
|
||||||
|
|||||||
@ -25,16 +25,16 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.foxinmy.weixin4j.mp.action.WeixinAction;
|
import com.foxinmy.weixin4j.mp.action.WeixinAction;
|
||||||
import com.foxinmy.weixin4j.util.MessageUtil;
|
import com.foxinmy.weixin4j.mp.mapping.ActionMapping;
|
||||||
|
|
||||||
public class WeixinServerHandler extends ChannelInboundHandlerAdapter {
|
public class WeixinServerHandler extends ChannelInboundHandlerAdapter {
|
||||||
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final WeixinActionMapping weixinActionMapping;
|
private final ActionMapping actionMapping;
|
||||||
|
|
||||||
public WeixinServerHandler(WeixinActionMapping weixinActionMapping) {
|
public WeixinServerHandler(ActionMapping actionMapping) {
|
||||||
this.weixinActionMapping = weixinActionMapping;
|
this.actionMapping = actionMapping;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -54,8 +54,7 @@ public class WeixinServerHandler extends ChannelInboundHandlerAdapter {
|
|||||||
String xmlMsg = req.content().toString(StandardCharsets.UTF_8);
|
String xmlMsg = req.content().toString(StandardCharsets.UTF_8);
|
||||||
log.info("\n=================message in=================\n{}",
|
log.info("\n=================message in=================\n{}",
|
||||||
xmlMsg);
|
xmlMsg);
|
||||||
String key = MessageUtil.getMappingKey(xmlMsg);
|
WeixinAction action = actionMapping.getAction(xmlMsg);
|
||||||
WeixinAction action = weixinActionMapping.getAction(key);
|
|
||||||
if (action == null) {
|
if (action == null) {
|
||||||
ctx.write(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
|
ctx.write(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
|
||||||
HttpResponseStatus.NOT_FOUND));
|
HttpResponseStatus.NOT_FOUND));
|
||||||
|
|||||||
@ -6,12 +6,15 @@ import io.netty.channel.socket.SocketChannel;
|
|||||||
import io.netty.handler.codec.http.HttpObjectAggregator;
|
import io.netty.handler.codec.http.HttpObjectAggregator;
|
||||||
import io.netty.handler.codec.http.HttpServerCodec;
|
import io.netty.handler.codec.http.HttpServerCodec;
|
||||||
|
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.ActionMapping;
|
||||||
|
import com.foxinmy.weixin4j.mp.mapping.AnnotationActionMapping;
|
||||||
|
|
||||||
public class WeixinServerInitializer extends ChannelInitializer<SocketChannel> {
|
public class WeixinServerInitializer extends ChannelInitializer<SocketChannel> {
|
||||||
|
|
||||||
private final WeixinActionMapping weixinActionMapping;
|
private final ActionMapping actionMapping;
|
||||||
|
|
||||||
public WeixinServerInitializer() {
|
public WeixinServerInitializer() {
|
||||||
this.weixinActionMapping = new WeixinActionMapping();
|
this.actionMapping = new AnnotationActionMapping();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -19,6 +22,6 @@ public class WeixinServerInitializer extends ChannelInitializer<SocketChannel> {
|
|||||||
ChannelPipeline pipeline = channel.pipeline();
|
ChannelPipeline pipeline = channel.pipeline();
|
||||||
pipeline.addLast(new HttpServerCodec());
|
pipeline.addLast(new HttpServerCodec());
|
||||||
pipeline.addLast(new HttpObjectAggregator(65536));
|
pipeline.addLast(new HttpObjectAggregator(65536));
|
||||||
pipeline.addLast(new WeixinServerHandler(weixinActionMapping));
|
pipeline.addLast(new WeixinServerHandler(actionMapping));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,6 +69,10 @@ shorturl_uri={api_base_url}/shorturl?access_token=%s
|
|||||||
updateremark_uri={api_base_url}/user/info/updateremark?access_token=%s
|
updateremark_uri={api_base_url}/user/info/updateremark?access_token=%s
|
||||||
# \u6a21\u677f\u6d88\u606f
|
# \u6a21\u677f\u6d88\u606f
|
||||||
template_send_uri={api_base_url}/message/template/send?access_token=%s
|
template_send_uri={api_base_url}/message/template/send?access_token=%s
|
||||||
|
# \u67e5\u8be2\u8ba2\u5355
|
||||||
|
orderquery_uri={api_base_url}/pay/orderquery?access_token=%s
|
||||||
|
# \u53d1\u8d27\u901a\u77e5
|
||||||
|
delivernotify_uri={api_base_url}/pay/delivernotify?access_token=%s
|
||||||
|
|
||||||
# token\u5b58\u653e\u8def\u5f84
|
# token\u5b58\u653e\u8def\u5f84
|
||||||
token_path=/tmp/weixin/token
|
token_path=/tmp/weixin/token
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user