微信公衆號開發java框架:wx4j(入門篇)

導航

  1. 入門 http://www.cnblogs.com/2333/p/6617819.html
  2. WxServlet介紹
  3. MaterialUtils 素材工具類使用說明 http://www.cnblogs.com/2333/p/6581059.html
  4. MenuUtils 菜單工具類使用說明 http://www.cnblogs.com/2333/p/6617889.html
  5. KefuUtils 客服工具類使用說明 http://www.cnblogs.com/2333/p/6617914.html
  6. MassUtils 羣發工具類使用說明
  7. WxUtils 微信工具類使用說明

 功能介紹

  -接收文本、視頻、圖片、語音等全部消息推送;html

  -接收關注、取消關注、掃碼、菜單點擊等全部事件推送;java

  -響應文本、視頻、圖片、語音、圖文內容;git

  -新增video、image、voice、thumbs、news永久素材;github

  -新增video、image、voice、thumb臨時素材web

  -刪除永久素材tomcat

  -支持明文和安全安全兩種模式安全

  -任意地方獲取AccessToken服務器

  -建立菜單、刪除菜單、獲取菜單、增長個性菜單、刪除個性菜單、測試匹配個性菜單、獲取當前菜單配置微信

  -新增客服、刪除客服、更新客服信息、上傳客服頭像、獲取客服列表app

  -羣發圖文、視頻、圖片、文本

配置部署

  一、準備java web開發環境,jdk版本1.6+,tomcat6.0+

  二、建立一個java web項目,並引入wx4j1.0.jar包,下載地址:

      github: https://github.com/zhourui123/wx4j

    (jar包在dist中)

    dependency:

      

 

  三、新建一個類WxAdapterImpl繼承AbstractWxAdapter,並實現其抽象方法。initMenu()方法須要返回一個Menu對象,你能夠先使用MenuUtils.getSampleMenu()來獲取一個實例菜單對象。

public class WxAdapterImpl extends AbstractWxAdapter { @Override public Menu initMenu() { System.out.println("on create menu"); return MenuUtils.getSampleMenu(); } @Override public void onReceiveText(ReceiveTextMessage message) { System.out.println("onReceiveTextMessage"); } @Override public void onReceiveVoice(ReceiveVoiceMessage message) { System.out.println("onReceiveVoice"); } @Override public void onReceiveImage(ReceiveImageMessage message) { System.out.println("onReceiveImage"); } //還有不少方法暫不列出 } 

 

  四、在web.xml中配置WxServlet,並將該servlet的load-on-startup設置爲1,保證其可以在web服務器啓動時初始化

    <servlet> <servlet-name>WxServlet</servlet-name> <servlet-class>cn.zr.wx4j.servlet.WxServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>WxServlet</servlet-name> <url-pattern>/WxServlet</url-pattern> </servlet-mapping>

  五、將sys.properties放在src根下並配置它

    app_id、app_secret、token能夠直接在公衆號基本配置中找到;

    adapterPath地址填寫步驟3中你建立的WxAdapterImpl的全路徑;

    若是是安全模式,is_safe設置爲true,並配置encodingAesKey,encodingAesKey一樣能夠在公衆號基本配置頁面找到,非安全模式,設置爲false,encodingAesKey能夠不用配置。

app_id=wx7cd11cb5c49exxxx
app_secret=ba787a886fe3158492e8a0056361xxxx
token=abc
adapterPath=cn.zr.wx4j.test.WxAdapterImpl
is_safe_mode=true
encodingAesKey=1k5oHRxklEy6YNueIOIyn7qE6XpKJSVl8uuUwcPxxxx

 

  六、以上配置完畢後,啓動tomcat服務,觀察控制檯信息。

 

在WxAdapterImpl中處理被動消息的響應

  一、在WxAdapterImpl中,你實現的每一個方法中均可以得到微信服務器發送過來的消息對象,下面是一個實例,用戶給你發送了一條message,你獲得了一個ReceiveTextMessage對象message,message主要包含如下信息:

      message.getFromUser();//得到消息來源

      message.getToUser();//得到消息去向

      message.getTimeStamp();//得到發送時間戳

      message.getContent();//得到消息內容

如今,你能夠建立一個TextMessage對象,直接調用AbstractWxAdapter繼承下來的sendTextMessage方法,完成一條text消息的發送。

@Override
public void onReceiveText(ReceiveTextMessage message) { System.out.println("onReceiveTextMessage"); TextMessage text = new TextMessage(); text.setContent("哈咯,這是一條文本消息"); text.setCreateTime(System.currentTimeMillis()); text.setFromUserName(message.getToUserName()); text.setToUserName(message.getFromUserName()); text.setMsgType(MessageType.TEXT); sendTextMessage(text); }

固然,你也能夠響應video、image等消息,可供調用的方法以下:

    public void sendTextMessage(TextMessage msg); public void sendNews(NewsMessage msg); public void sendImage(ImageMessage msg); public void sendVoice(VoiceMessage msg); public void sendVideo(VideoMessage msg); public void sendMusic(MusicMessage msg);

 

在WxAdapterImpl構建自定義菜單

  一、你只須要在WxAdapterImpl中的initMenu()方法中返回你須要的建立的Menu對象,框架會幫助你自動將它建立在公衆號上,若是你不知道如何構建一Menu,能夠調用MenuUtils.getSampleMenu()得到一個示例Menu,代碼以下:

public static Menu getSampleMenu() { Menu m = new Menu(); Button b1 = new Button(); b1.setName("客戶服務"); ViewButton b11 = new ViewButton(); b11.setName("測試1"); b11.setType(ButtonType.VIEW); b11.setUrl("http://www.zhour.net"); ViewButton b12 = new ViewButton(); b12.setName("測試2"); b12.setType(ButtonType.VIEW); b12.setUrl("http://www.zhour.net"); ViewButton b13 = new ViewButton(); b13.setName("test1"); b13.setType(ButtonType.VIEW); b13.setUrl("http://www.zhour.net"); ViewButton b14 = new ViewButton(); b14.setName("test2"); b14.setType(ButtonType.VIEW); b14.setUrl("http://www.zhour.net"); b1.setSub_button(new Button[] { b11, b12, b13, b14 }); Button b2 = new Button(); b2.setName("infomation"); ViewButton b21 = new ViewButton(); b21.setName("官網"); b21.setType(ButtonType.VIEW); b21.setUrl("http://www.huapengfei.com"); ViewButton b22 = new ViewButton(); b22.setName("APP"); b22.setType(ButtonType.VIEW); b22.setUrl("http://www.zhour.net"); b2.setSub_button(new Button[] { b21, b22 }); ViewButton b3 = new ViewButton(); b3.setName("聯繫咱們"); b3.setType(ButtonType.VIEW); b3.setUrl("http://www.zhour.net"); m.setButton(new Button[] { b1, b2, b3 }); return m; } 
相關文章
相關標籤/搜索