JFinal Weixin 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
JFinal Weixin 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票

软件简介

JFinal Weixin 是基于 JFinal 的微信公众号极速 SDK,只需参考 Demo 代码即可进行极速开发。自 JFinal Weixin 1.2 版本开始已添加对多公众号支持

0、Maven 坐标

<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>jfinal-weixin</artifactId>
    <version>2.8</version>
</dependency>

1、WeixinConfig

public class WeixinConfig extends JFinalConfig {
  public void configConstant(Constants me) {
    loadPropertyFile("a_little_config.txt");
    me.setDevMode(getPropertyToBoolean("devMode", false));
		
    // ApiConfigKit 设为开发模式可以在开发阶段输出请求交互的 xml 与 json 数据
    ApiConfigKit.setDevMode(me.getDevMode());
  }
	
  public void configRoute(Routes me) {
    // 从 jfinal 3.6 版本开始,需设置 setMappingSuperClass(true) 才能支持 jfinal weixin
    me.setMappingSuperClass(true);
    me.add("/msg", WeixinMsgController.class);
    me.add("/api", WeixinApiController.class, "/api");
  }
	
  public void configPlugin(Plugins me) {}
  public void configInterceptor(Interceptors me) {}
  public void configHandler(Handlers me) {}
}

以上通过 configRoute 方法配置了访问路由 "/msg" 与 "/api"。项目启动后,在微信服以务器上配置 url:http://域名/msg

重要:后续新版本的配置方式有所改进,详情见官方文档:https://gitee.com/jfinal/jfinal-weixin/wikis/JFinal-weixin%E4%B8%AD%E7%9A%84WeixinConfig%E9%85%8D%E7%BD%AE

2、WeixinMsgController

public class WeixinMsgController extends MsgController {
  protected void processInTextMsg(InTextMsg inTextMsg) {
   String msgContent = inTextMsg.getContent().trim();
   // 帮助提示
   if ("help".equalsIgnoreCase(msgContent)) {
     OutTextMsg outMsg = new OutTextMsg(inTextMsg);
     outMsg.setContent(helpStr);
     render(outMsg);
   }	
   else if ("美女".equalsIgnoreCase(msgContent)) {
     OutNewsMsg outMsg = new OutNewsMsg(inTextMsg);
     outMsg.addNews("秀色可餐", "JFinal Weixin 极速开发就是这么爽,有木有 ^_^", "http://mmbiz.qpic.cn/mmbiz/zz3Q6WSrzq2GJLC60ECD7rE7n1cvKWRNFvOyib4KGdic3N5APUWf4ia3LLPxJrtyIYRx93aPNkDtib3ADvdaBXmZJg/0", "http://mp.weixin.qq.com/s?__biz=MjM5ODAwOTU3Mg==&mid=200987822&idx=1&sn=7eb2918275fb0fa7b520768854fb7b80#rd");
     render(outMsg);
   }
   // 其它文本消息直接返回原值 + 帮助提示
   else {
     OutTextMsg outMsg = new OutTextMsg(inTextMsg);
     outMsg.setContent("\t文本消息已成功接收,内容为: " + inTextMsg.getContent() + "\n\n" + helpStr);
     render(outMsg);
   }
  }

  protected void processInImageMsg(InImageMsg inImageMsg) {
    OutImageMsg outMsg = new OutImageMsg(inImageMsg);
    // 将刚发过来的图片再发回去
    outMsg.setMediaId(inImageMsg.getMediaId());
    render(outMsg);
  }
  

  /**
   * 如果要支持多公众账号,只需要在此返回各个公众号对应的  ApiConfig 对象即可
   * 可以通过在请求 url 中挂参数来动态从数据库中获取 ApiConfig 属性值
   *
   * 注意:后续新版本改进了配置方式,下面的配置不再需要,详情见下面的官方文档:
   *      https://gitee.com/jfinal/jfinal-weixin/wikis/Home
   */
  public ApiConfig getApiConfig() {
    return new ApiConfig(...);
  }

  // 其她自动接收并解析消息的便利方法省略
}

WeixinMsgController 通过继承自 MsgController 便拥有了接收消息和发送消息的便利方法。

3、WeixinApiController

public class WeixinApiController extends ApiController {
  public void index() {
    render("/api/index.html");
  }
	
  /**
  * 获取公众号菜单
  */
  public void getMenu() {
    ApiResult apiResult = MenuApi.getMenu();
    if (apiResult.isSucceed())
      renderText(apiResult.getJson());
    else
      renderText(apiResult.getErrorMsg());
    }
	
    /**
    * 获取公众号关注用户
    */
    public void getFollowers() {
      ApiResult apiResult = UserApi.getFollows();
      renderText(apiResult.getJson());
    }

  /**
   * 如果要支持多公众账号,只需要在此返回各个公众号对应的  ApiConfig 对象即可
   * 可以通过在请求 url 中挂参数来动态从数据库中获取 ApiConfig 属性值
   * 
   * 注意:后续新版本改进了配置方式,下面的配置不再需要,详情见下面的官方文档:
   *      https://gitee.com/jfinal/jfinal-weixin/wikis/Home
   */
  public ApiConfig getApiConfig() {
    return new ApiConfig(...);
  }
}

通过调用 MenuApi、UserApi 等 Api 的相关方法即可获取封装成 ApiResult 对象的结果,使用 render 系列方法即可快捷输出结果。

4、更多支持

JFinal Weixin 官方文档: https://gitee.com/jfinal/jfinal-weixin/wikis/Home

关注官方微信号马上体验 demo 功能:

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (54)

加载中
JFinal软件作者

引用来自“科技范麒麟才子”的评论

支持 开发小程序吗?
支持微信小程序开发,挺好用
2019/01/31 15:44
回复
举报
maven打包报错ase加密失败怎么办
2018/09/22 16:16
回复
举报
支持 开发小程序吗?
2018/09/06 14:20
回复
举报
打分: 力荐
一体式微信公众平台开发利器
2018/04/28 20:53
回复
举报
http://git.oschina.net/jfinal/jfinal-weixin和jfinal-weixin-1.9-bin-with-src到底是用哪个???无语
2017/12/06 23:41
回复
举报
打分: 力荐
jfinal好几个项目是否会导致投票分散啊,但这个的确很好用
2017/11/28 19:58
回复
举报
已经投票
2017/11/28 11:38
回复
举报
打分: 力荐
JFinal-weixin确实很强大,开发公众号很快哦
2017/11/07 15:30
回复
举报
现在 jfinal-weixin 支不支持微信投票内容的获取?比如:https://www.oschina.net/question/98011_2266889
2017/09/24 15:42
回复
举报
留一个阿里云免费优惠券->http://aliyun.izhuanyer.com
2017/09/18 05:49
回复
举报
更多评论
发表了资讯
10/13 17:04

JFinal weixin 2.8 发布,爽爽这六年

jfinal weixin 是一个很老牌的 weixin 开发工具包。虽然很老牌,但一点也不过时。采用 jfinal 极简设计,用起来的学习成本极低,每个 API 都是直接上手调用,简单粗爆,没有中间环节,爽爽的。 微信开发包这种东西,很少有变动,可靠、稳定很重要,开源 6 年来已用于大量的项目之中,良好的口碑,稳定的用户,回头客相当...

9
12
发表于服务端专区
2019/02/01 15:05

JFinal Weixin 2.3 发布,支持微信小程序开发

jfinal weixin 项目早在五年前就发布了第一个版本,是老牌的微信公众号开发 SDK,已稳定、可靠服役多年。因为极简设计、良好的开发体验,所以深受开发者的喜爱。 五年来 jfinal weixin 一直紧跟微信公众平台的动向,不断跟随添加新的功能,大大方便了用户开发微信公众平台项目。但是鲜有人知道的是 JFinal Weixin 很早就...

6
29
发表于AI & 大数据专区
2018/07/10 12:10

JFinal Weixin 2.1 发布,微信极速 SDK

JFinal Weixin 发布四年多以来,以其简单性、稳定性,获得了大量用户的喜爱,这四年多以来 JFinal Weixin 紧跟微信官方动态,不断增加、完善功能,例如跟随本次微信官方发布的 XXE 漏洞,第一时间进行了版本更新。 在微信官方通知 XXE 的第一时间,JFinal Weixin 向 maven 中心库发布了 jfinal-weixin 2.0, 但是在 2.0 ...

23
18
发表了资讯
2017/05/22 15:03

JFinal Weixin 1.9 发布,微信极速 SDK

JFinal Weixin 1.9 正式发布!离上一次 JFinal weixin 1.8 发布,已经过去 10 个月。在过去的 10 个月时间里 JFinal Weixin 紧随微信公众平台的演化,不断增加了新的 API,同时也在不断完善原有 API,力求打造一个完备的微信公众平台 SDK,让开发更快速、更开心! JFinal Weixin 1.9 共有 18 项新增与改进,新增功能主要...

54
97
发表了资讯
2016/07/13 00:00

JFinal Weixin 1.8 发布,微信极速 SDK

离上一次 JFinal weixin 1.7 发布,已经过去了 6 个月。在过去的半年时间里 JFinal Weixin 紧随微信公众平台的演化,不断增加了新的 API,同时也在不断完善原有 API,力求打造一个完备的微信公众平台 SDK,让开发更快速、更开心! JFinal Weixin 1.8 共有 27 项新增与改进,新增功能主要有:微信红包接口、微信支付对账单...

96
135
发表了资讯
2016/01/12 00:00

JFinal Weixin 1.7发布,用 JFinal 开发,就这么定了

JFinal Weixin 1.7 增加了 Wap支付功能,改进jackson,支持用户信息中含有特殊字符时的json转换,并且修复了一个支付模块中的一个 bug,建议升级。 maven 升级坐标: <dependency>   <groupId>com.jfinal</groupId>   <artifactId>jfinal-weixin</artifactId>   <version>1.7</version> </dependency> 最新的 jar ...

35
75
发表了资讯
2015/12/30 00:00

JFinal Weixin 1.6,用 JFinal 开发,就这么定了

继昨日JFinal 2.1发布之后,再来一发JFinal Weixin 1.6,让所有JFinaler们更加Happy,本次升级主要添加了微信摇一摇周边API、高级群发API、客户账号管理API。此外还对原有依赖jar包进行了缩减,更加轻量化、极速化。 JFinal Weixin不断朝着越来越完备的方向迈进,力求成为最完善、可靠、简洁的微信极速开发工具,依然感谢...

34
89
发表了资讯
2015/11/12 00:00

JFinal Weixin 1.5 发布,微信极速 SDK

JFinal Weixin 1.5 大幅完善了对微信公众平台API的支持,以便满足更多开发者的需求。主要添加了微信摇一摇、微信支付、素材管理MediaApi,分布式Token存储等实用功能。 本次版本所有功能来源于@卢春梦 和他的小伙伴们的贡献,在此特别表示感谢。春梦大牛@孤独的3 不仅对 jfinal weixin 项目有很多的贡献,而且对 jfinal...

136
210
发表了资讯
2015/07/03 00:00

JFinal Weixin 1.4 发布,微信极速 SDK

JFinal weixin 是第一个微信公众平台极速SDK,基于 jfinal weixin 开发不仅可以立即拥有简单易用的API,而且将立即拥有JFinal 所有的极速化支持,让开发更加轻松自如,节省更多时间去陪家人、恋人和朋友 :) 做为一款微信公众号项目开发利器,除了简单易用以外,功能的全面性至关重要,jfinal weixin 项目正在此方向持续加...

70
89
发表了资讯
2015/06/25 00:00

JFinal Weixin 1.3 发布,微信极速 SDK

JFinal Weixin 1.3 主要是将JFinal升级到了2.0版,并对原有代码进行小幅重构,其它添加的功能如下: 1:添加 CustomMsgApi 支持多客服消息 2:添加 QrcodeApi 支持带参数的二维码生成 该版本最大的变化是引入了团队开发,此版本的CustomMsgApi、QrcodeApi 由 @小强哥unas 所贡献(http://my.oschina.net/u/923337/blog/47...

47
93
发表了资讯
2014/12/11 00:00

JFinal Weixin 1.2 发布,微信极速 SDK

JFinal Weixin 1.2 主要添加了对多公众号账户的支持,并对原有代码进行小幅重构,具体变化如下: 改进内容: 添加 ApiConfigKit,便于将 ApiConfig 对象与当前线程进行绑定,方便在各处通过 ApiConfigKit.getApiConfig() 进行获取 原有 ApiCofig 对象中的所有属性与方法去掉 static 关键字 WeixinController 更名为 MsgC...

61
66
发表了资讯
2014/12/04 00:00

JFinal Weixin 1.1 发布,微信极速 SDK

JFinal Weixin 1.1 主要添加了消息加密功能,以及对 access token 意外失效问题做出了处理。 access token 通常会因为外部原因而意外失效: 1:项目中 AccessTokenApi 在获取到 access token 之后,在微信公众平台利用在线调试工具再次获取了该公众号的 access token 2:项目中 AccessTokenApi 在获取到 access token 之...

17
73
发表了资讯
2014/10/21 00:00

JFinal Weixin 极速 SDK 1.0 正式发布

JFinal Weixin 是基于 JFinal 的微信公众号极速 SDK,只需参考 Demo 代码即可进行极速开发。 1、WeixinConfig public class WeixinConfig extends JFinalConfig {   public void configConstant(Constants me) {     loadPropertyFile("a_little_config.txt");     me.setDevMode(getPropertyToBool...

86
180
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2014/10/22 11:33

jfinal weixin使用

工作记录用,帮助有需要的人。

3
7
发表了博客
2014/11/22 02:09

Jfinal_weixin demo的使用分析

Jfinal_weixin已经出了有好一段时间了!!一直也没有去关注他,知道今天,工作上可能需要用到这个东西,所以,今天晚上话了两个小时来看看这个东西,看完demo以后,豁然开朗,原理微信和一般的web项目什么的都是一样的!!所以,为了让后面的同学能够少走一些弯路,我觉得我很有必要把这个学习的过程记录下来,然后给大家...

49
36
发表了博客
2014/12/15 13:40

新手开发jfinal_weixin的过程

jfinal_weixin开发,新手的体会

0
1
发表于服务端专区
2015/04/11 15:04

JFinal之JFinal学习日记

记录JFinal学习过程中遇到的问题、心得

1
1
发表了博客
2015/05/14 18:03

jfinal_weixin_1.2版本本地调试

在使用“微信开发调试小工具”时调试jfinal_weixin_1.2版本时,注释了@Before(MsgInterceptor.class)发现会报一个错误,经过阅读源码找出问题所在

5
4
发表了博客
10/03 10:05

jfinal(1)—jfinal-undertow 下开发 jfinal项目

1、创建标准的 maven web项目 没装maven和没创建maven web项目的可以看这三篇! maven安装 Eclipse和maven工具的集成 Eclipse使用maven创建web项目 2、添加 jfinal-undertow 与 jfinal 依赖 <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal-undertow</artifactId> <version>2.1</version> <...

0
0
发表于AI & 大数据专区
07/01 07:52

jfinal-weixin自定义配置支持多公众号

spring-boot-starter-weixin是jfinal-weixin的spring boot版本,以前一直在用jfinal-weixin做为开发工具包,也一直没有尝试过支持多公众号,最近正好有需求要求支持多公众号,就来研究一番它是如何支持多公众号的...

0
0
发表于服务端专区
2015/03/19 10:51

JFinal源码走读_1_jfinal初始化

jfinal的入口 步进分析 jfinal核心初始化方法jfinalinit分析 ConfigconfigJFinaljfinalConfig分析 ConfigconfigJFinaljfinalConfig分析 startPlugins分析 url到action映射的核心实现 initHandler分析 initRender分析 renderFactoryinitconstants servletContext分析 initOreillyCos分析 initI18n分析 initTokenManager分...

2
6
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于软件架构专区
2019/06/27 10:27

jfinal-weixin 项目我打包成功,放入Tomcat运行,访问不到。怎么回事?

1
0
发表了问答
2016/04/20 16:35

jfinal_weixin开发问题

@JFinal 你好,想跟你请教个问题: jfinal_weixin开发怎么在启动之后,访问http://localhost/msg报500错误,本人是新手,希望能得到你的帮助! ------------------------------------------------------------------------------------------------ 接收消息: [Fatal Error] :1:1: 文件提前结束。 四月 20, 2016 3:21:56...

3
0
发表于AI & 大数据专区
2019/02/26 17:34

jfinal-weixin 启动报错-找不到或无法加载主类 com.jfinal.weixin.demo.WeixinConfig

今天想学习一下jfinal-weixin框架,下载后启动发现报错,本人的开发工具是IDEA 2018,具体错误为: 错误: 找不到或无法加载主类 com.jfinal.weixin.demo.WeixinConfig 如下图。 尝试了创建一个新类User再运行,却又是正常的。 此时如果让User类继承JfinalConfig再运行,又会报错。 不知道为什么会这样。请问有谁遇到这个...

1
0
发表于开发技能专区
2019/01/10 15:02

jfinal使用druidPlugin插件,绑定表,实体中@TableBind注入,使用dao,find/findFrist查询报空指针,该怎么解决呢?

1.configPlugin DruidPlugin druidPlugin = new DruidPlugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password")); druidPlugin.setFilters("stat,log4j"); me.add(druidPlugin); me.add(new EhCachePlugin()); // 配置ActiveRecord插件 AutoTable...

1
0
发表了问答
2016/01/16 18:20

JFinal Weixin怎么添加自定义菜单?

添加了出不来啊,在哪里调用那个接口 /** * 查询菜单 */ MenuApi.getMenu(); /** * 创建菜单 */ MenuApi.createMenu(String jsonStr); 看网上写的下面这样不好用啊 me.add("/msg", WeixinMsgController.class,"/msg"); me.add("/api", WeixinApiController.class, "/api"); me.add("/menu",MenuController.class);...

4
0
发表了问答
2015/01/30 19:18

JFinal Weixin怎么创建自定义菜单啊,没看懂

@JFinal 你好,想跟你请教个问题:JFinal Weixin怎么创建自定义菜单啊,没看懂

4
3
2018/09/23 20:06

Jfinal Weixin调用接口报错

在处理菜单点击事件的方法里 WeixinMsgController.processInMenuEvent ,调用CustomServiceApi.sendMpNews,发送图文消息报下面的错误,信息能正常接收到,什么原因   SEVERE: /jwx/msg?signature=d8e707c605aa05633ae508908527749f2e65e180×tamp=1537689035&nonce=1093934862&openid=o6fbwt0kWHoj4qYaq8I8YsP5ACI...

3
0
发表了问答
2015/01/14 17:20

JFinal Weixin怎样接入微信?

demo代码中没有给出如何接入微信

3
2
发表了问答
2015/07/07 16:39

在微信公众号开发中,当完成某个任务后如何推送一条消息,让用户知晓?

在微信公众号开发中,当完成某个任务后如何在聊天界面推送一条消息,让用户知晓?并在消息中嵌入某个h5页面的链接。新手求指点。。。。

2
1
发表了问答
2014/12/18 00:36

【JFinal-Weixin】自定义菜单问题

JFinal 微信所处理的消息类型是不是还不包括以下几种: scancode_push:扫码推事件 scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框 pic_sysphoto:弹出系统拍照发图 pic_photo_or_album:弹出拍照或者相册发图 pic_weixin:弹出微信相册发图器 location_select:弹出地理位置选择器 如果需要扩展以上几种事件类...

3
0
发表了问答
2015/09/28 10:23

jfinal-weixin获取OPENID问题

@JFINAL 波总您好,想请教你一个问题,我参考jfinal-weixin里面的WeixinMsgController的MsgController的MsgInterceptor写了个拦截器,主要是用来判断是否能获取到参数code的,如果没有这个参数,我就调用微信那边的授权接口,现在code是能获取得到,但是用两个微信号访问时,获取OPENID时都获取了第一个微信号访问的OPE...

3
0
发表了问答
2016/08/18 11:19

微信退款抛javax.crypto.BadPaddingException: Given final block not properly padded

@JFinal 你好,想跟你请教个问题: 使用退款refund API时, 报这个错误,证书是从微信上下载的。 Caused by: java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore...

7
0
发表了问答
2016/02/02 21:26

JFinal weixin是否还没支持企业号?近期有支持企业号的开发计划吗?

JFinal weixin是否还没支持企业号?近期有支持企业号的开发计划吗? 谢谢!

3
1
发表了问答
2017/02/28 23:40

有没有不用官方API开发微信的朋友? 直接用http模拟登录的朋友?

需求:因为客服信息接口需要认证后才有权限调用,而认证又需要300大洋。我只需要普通公众号加客服信息接口,因为有时候用户发了命令后,后台处理业务的时候5秒内处理不完,可能会30秒才有结果。 场景:免费的普通个人订阅号可以直接登录网页版后,和48小时内有互动的人主动发送信息,并且每天可以群发一条信息。然后微信并...

5
1
发表了问答
2015/03/03 20:57

jfinal_weixin 配置测试用号总是显示配置失败,感觉后台打印结果是正常的

@JFinal 你好,想跟你请教个问题:jfinal_weixin 配置测试用号总是显示配置失败,后台打印结果,求告知

3
0
发表了问答
2017/01/12 10:04

服务器tomcat重启后,微信网页反应慢的问题

我们做了一个网页,pc可以登,然后微信公众号有个链接也可以登。但是现在有个问题,每次Linux服务器tomcat重启过后,直接用微信登录网页的话 数据一直不显示,但是呢,先登录pc端,再登录微信,他就会正常显示,这是什么原因呢?

1
0
发表了问答
2015/04/22 17:01

点击自定义菜单中二级菜单时怎么获取微信用户的信息?

用jFinal weixin demo 项目,用微信公众平台测试号,创建自定义菜单后,点击二级菜单时如何获取微信用户信息? 二级菜单跳转的路径如图:

5
1
发表了问答
2016/11/20 17:57

jfinal-weixin写图文消息

我想问一下jfinal-weixin写一个图文消息,就像官方自带的那种,该写哪个类中,怎么写啊?

2
0
发表了问答
2015/01/22 15:08

JFinal Weixin Maven 生成一直出错

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.1:sign (sign-artifacts) on project jfinal-weixin: Cannot obtain passphrase in batch mode -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using th...

3
1
发表了问答
2016/11/09 13:46

出入JFinal,该如何爬坑

@JFinal 你好,想跟你请教个问题:osc上的那个jfinal-weixin 的sdk,我clone了下来,里面有个 AccessTokenApiTest 我每次执行下面main方法的时候,总是会报错: public static void main(String[] args) throws IOException { init(); useRedis(); test(); } 查了好久都没有解决的办法。...

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
54 评论
742 收藏
分享
返回顶部
顶部