微信公众号开发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 微信工具类使用说明

功能介绍

  -接收文本、视频、图片、语音等所有消息推送;

  -接收关注、取消关注、扫码、菜单点击等所有事件推送;

  -响应文本、视频、图片、语音、图文内容;

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

  -新增video、image、voice、thumb临时素材

  -删除永久素材

  -支持明文和安全安全两种模式

  -任意地方获取AccessToken

  -创建菜单、删除菜单、获取菜单、增加个性菜单、删除个性菜单、测试匹配个性菜单、获取当前菜单配置

  -新增客服、删除客服、更新客服信息、上传客服头像、获取客服列表

  -群发图文、视频、图片、文本

配置部署

  1、准备java web开发环境,jdk版本1.6+,tomcat6.0+

  2、创建一个java web项目,并引入wx4j1.0.jar包,下载地址:

    

    dependency:

      

  3、新建一个类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");

    }

        //还有很多方法暂不列出
}    

  4、在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>

  5、将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=trueencodingAesKey=1k5oHRxklEy6YNueIOIyn7qE6XpKJSVl8uuUwcPxxxx

  6、以上配置完毕后,启动tomcat服务,观察控制台信息。

在WxAdapterImpl中处理被动消息的响应

  1、在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构建自定义菜单

  1、你只需要在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;
}        
时间: 2024-08-10 17:09:30

微信公众号开发java框架:wx4j(入门篇)的相关文章

微信公众号开发java框架:wx4j(MenuUtils篇)

wx4j-MenuUtils使用 函数说明:发送http请求到微信服务器,完成菜单创建 参数:构造菜单对象 返回值:微信响应的json字符串 public static String createMenu(Menu m) 函数说明:获得一个示例菜单对象,可直接用于createMenu(); 返回值:Menu对象 public static Menu getSampleMenu() 函数说明:发送http请求到微信服务器,完成菜单删除 返回值:微信响应的json字符串 public static

微信公众号开发java框架:wx4j(MaterialUtils篇)

wx4j-MaterialUtils的使用 函数说明:上传永久视频素材 参数:文件路径.视频描述(通过setter填充内容即可) 返回值:微信服务器返回的json字符串 public static String addPerpetualVideoMaterial(String filePath, VideoDescription description) 函数说明:上传永久图文素材 参数:构造图文素材对象 返回值:微信服务器返回的json字符串 public static String addP

微信公众号开发java框架:wx4j(KefuUtils篇)

wx4j-KefuUtils介绍 函数说明:添加客服 参数:Kefu对象 返回值:微信服务器响应的json字符串 public String addKefu(Kefu kefu) 函数说明: 参数:KefuInvite对象 返回值:微信服务器响应的json字符串 public String inviteWorker(KefuInvite info) 函数说明:删除客服 参数:客服账号 返回值:微信服务器响应的json字符串 public String deleteKefu(String kefu

微信公众号开发java版-消息回复(普通文字消息和语音消息)

关于微信公众号的消息自动回复功能开发,本文将做一个系统介绍,开发语言为java 话不多说,直接上代码 1.控制器代码 package webapp.controller; import org.springframework.context.annotation.Scope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.R

JAVA微信公众号开发入门

好久没进博客,最近应某人的要求,要每周写一篇博客,故此今天就把我这周刚学的微信公众号开发的知识在此总结总结,以供后人查阅.我写博客都是简要白话文,勿喷. 1.为什么要学微信公众号开发 微信的用户量庞大,微信公众号的完善和不断的开放力度,企业市场对公众号开发的需求不断增加 2.如何搭建微信开发平台 开发工具什么的就不说了,因为微信是要外网访问的,所有你必须有个网上的服务器资源,而且你必须申请一个微信公众号. 2.1申请微信公众号 公众号有3种:订阅号,服务号,企业号 区别是企业号适合内部人使用,因

带领技术小白入门——基于java的微信公众号开发(包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证)

微信公众号对于每个人来说都不陌生,但是许多人都不清楚是怎么开发的.身为技术小白的我,在闲暇之余研究了一下基于java的微信公众号开发.下面就是我的实现步骤,写的略显粗糙,希望大家多多提议! 一.申请服务器 1.我购买的是阿里云服务器,购买后要设置一下服务器密码,默认用户名是administrator,购买好后如下: 2.申请好后,copy一下此服务器的IP地址(公有),在本地ping一下看看是否可用,j键盘Win+R,输入cmd,输入ping+IP回车,如下即为成功: 二.配置服务器 1.下载远

微信公众号开发入门笔记(一):知识及技术路线图

注:本系列博客所使用的编程语言为Java,内容主要来自于慕课网课程:初识Java微信公众号开发(课程链接:http://www.imooc.com/learn/368)的学习收获和总结. 因为微信的大规模普及性,微信公众号开发可以开发出跨平台使用的功能,并且使用起来简单方便.个人使用Java作为工作语言,对Java比较熟悉,所以本系列的笔记采用Java语言来进行开发.此外,慕课网的课程"初识Java微信公众号开发"为我带来了很大的启发,很适合想要做微信公众平台开发的朋友们的入门. 那么

《初识Java微信公众号开发》 学习中遇到的困难

前一段时间无聊的时候,在慕课网上自学了一点点微信公众号开发(受学姐威胁). 慕课网教程的地址:http://www.imooc.com/learn/368 毕竟是免费的课程,不可能讲的那么详细.所以我吧我遇到的问题跟大家分享一下. 这是我照着课程敲的代码(IDE是Eclipse): https://github.com/Zuosy/WeiXin 发到github上面了. 为了这个,我还专门到廖大的网站上学了一遍Git. 廖大的Git教程传送们:https://www.liaoxuefeng.co

nodejs 中koa框架下的微信公众号开发初始篇

最近在搞微信公众号开发,后端采用的是nodejs下的koa框架,初识后端的菜鸟,自己搞难度太大了,网上找了很多文章,采用的中间件大都是express框架下的,不过好在爬了许多坑之后总算看见点曙光了,遂把探索出来的一点东西拿出来分享,毕竟能力有限,拿出来也是希望大神看到了给点建议, 主要用 koa-wechat 处理验证和消息解析 ,用wechat-api来进行按钮组等api操作,刚开始没什么内容,大家随意看看就好, 废话不多说,直接上代码(这是一个route的代码): var koa = req