MPSDK4JJAVA微信公平臺(tái)開發(fā)SDK
MPSDK4J 是 JAVA 微信公平臺(tái)開發(fā) SDK,沒有復(fù)雜的功能,一切源于微信 API。
1.介紹
MPSDK4J,非常直觀的闡述了此項(xiàng)目的意義所在。沒錯(cuò),它就是JAVA語(yǔ)言環(huán)境下的微信公眾平臺(tái)開發(fā)SDK。其中MP代表的是微信公眾平臺(tái)的域名前綴,SDK表示開發(fā)工具包,4同音英文“for”,J代表了JAVA。雖然現(xiàn)網(wǎng)絡(luò)上已經(jīng)有不少JAVA版本的SDK現(xiàn)身,但是***[MPSDK4J]*** 的出現(xiàn)也并非只是造輪子的重復(fù)工作。它遵循單一設(shè)計(jì)模式規(guī)則,所有的設(shè)計(jì)與功能都是源于微信公眾平臺(tái)API,一切都是為了追求簡(jiǎn)單與速度。
a.設(shè)計(jì)簡(jiǎn)單:整體設(shè)計(jì)非常的簡(jiǎn)單,僅有7個(gè)包39個(gè)類對(duì)象(其中VO對(duì)象占據(jù)一半之多,詳見結(jié)構(gòu)設(shè)計(jì)圖),核心功能部分就4類(WxBase,WxApi,WxOpenApi,WxHandler);
b.解析速度:基本SAX驅(qū)動(dòng)式XML處理,結(jié)合JDK7的新特性,能夠快速的解析收到用戶發(fā)送的微信消息,放棄JAVA反射功能直接編碼生成VO對(duì)象更加快速;
c.敏捷開發(fā):微信交互信息全都統(tǒng)一封裝VO對(duì)象,所有VO的屬性都是微信公眾平臺(tái)API原生狀態(tài)。開發(fā)者無(wú)須再關(guān)心它來(lái)源是XML還JSON格式,其中消息的收發(fā)只需掌握2個(gè)VO(ReceiveMsg,OutPutMsg)即可;
d.支持力度:API功能分為三個(gè)部分(后續(xù)會(huì)不斷更新升級(jí)),微信基本消息的交互,高級(jí)接口(Token,自定義菜單,模板消息,群發(fā)消息等等)及開放平臺(tái)功能接口的調(diào)用。
2. 結(jié)構(gòu)設(shè)計(jì)
3. 交互時(shí)序圖
4. 示例代碼
MPSDK4J在Web環(huán)境中暫時(shí)提供了以下三種支持,歡迎提交其它環(huán)境擴(kuò)展。在實(shí)際的使用過(guò)程中只需要繼承相應(yīng)環(huán)境的Wx***Support父類,重寫init初始化方法修改其中的公眾號(hào)信息及微信消息處理器,添加環(huán)境的入口(Servlet環(huán)境無(wú)需此步驟),調(diào)用wxInteract方法,最后發(fā)布上線即可。
4.1 HttpServlet環(huán)境
@WebServlet(name = "weixinServlet", urlPatterns = "/weixin/mp/core.ser")
public class WeiXinServlet extends WxServletSupport {
@Override
public void init() throws ServletException {
super.init();
MPAct mpAct = new MPAct();
// 修改為實(shí)際的公眾號(hào)信息,可以在開發(fā)者欄目中查看
mpAct.setAppId("wx****");
mpAct.setAppSecert("***");
mpAct.setToken("***");
mpAct.setAESKey("******");
this.setMpAct(mpAct);
// 可實(shí)現(xiàn)自己的WxHandler
this.setWxHandler(new WxDefaultHandler());
}
}
4.2 SpringMVC環(huán)境
@Controller
@RequestMapping("/weixin/mp")
public class WeiXinController extends WxSpringSupport {
@Override
protected void init() {
MPAct mpAct = new MPAct();
// 修改為實(shí)際的公眾號(hào)信息,可以在開發(fā)者欄目中查看
mpAct.setAppId("wx****");
mpAct.setAppSecert("***");
mpAct.setToken("***");
mpAct.setAESKey("******");
this.setMpAct(mpAct);
// 可實(shí)現(xiàn)自己的WxHandler
this.setWxHandler(new WxDefaultHandler());
}
@RequestMapping(value = "/core",produces = {"text/plain;charset=UTF-8"})
@ResponseBody
public String wxCore(HttpServletRequest req) {
String reply = "";
try {
reply = wxInteract(req);
} catch (IOException e) {
log.error(e.getLocalizedMessage(), e);
}
return reply;
}
}
4.3 Struts2環(huán)境
public class WeiXinAction extends WxStruts2Support {
@Override
protected void init() {
super.init();
MPAct mpAct = new MPAct();
// 修改為實(shí)際的公眾號(hào)信息,可以在開發(fā)者欄目中查看
mpAct.setAppId("wx****");
mpAct.setAppSecert("***");
mpAct.setToken("***");
mpAct.setAESKey("******");
this.setMpAct(mpAct);
// 可實(shí)現(xiàn)自己的WxHandler
this.setWxHandler(new WxDefaultHandler());
}
public void wxCore() throws IOException {
wxInteract();
}
}
5. ISSUE
評(píng)論
圖片
表情
