【分享】JFinal weixin SDK 如何与单个微信小程序快速集成

1. 前言

目前,使用 JFinal 做微信公众平台和微信小程序的开发者越来越多,JFinal 与 JFinal Weixin SDK 也在紧跟趋势,快速迭代,目前已经支持公众平台服务号、订阅号、微信小程序的多账号管理。

本课将带你彻底搞定 JFinal 微信小程序的快速集成。

2. JFinal Weixin 项目简介

JFinal Weixin 是基于 JFinal 的微信公众号极速开发 SDK。

Gitee 地址:

https://gitee.com/jfinal/jfinal-weixin

Star 超 2.9K,开源中国 GVP 项目,开发者众多。

JFinal Weixin SDK 封装了公众平台、微信小程序以及微信支付的绝大多数 API,提供标准可继承的 Controller 和内置的 Interceptor,使其可方便快捷地用于开发公众平台、小程序、支付等业务开发。

3. 创建项目开发环境

3.1 项目环境依赖

  • IDE:Eclipse + JBolt 插件 (使用 IDEA 的同学请谅解)+微信开发者工具

  • 框架:JFinal 4.8、JFinal Weixin 2.5

  • 服务器:JFinal-undertow 2.0

  • 数据库:MySQL

  • 数据库连接池:Druid

  • JSON:Fastjson

  • 工具包:Hutool

  • 内网穿透:uTools

3.2 创建项目基础开发环境

Eclipse 下创建项目流程,请参考此文:

https://gitbook.cn/gitchat/activity/5e9bf58aa58adf47cb052d29

主要依赖库 Maven pom.xml。

服务器 Undertow:

<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>jfinal-undertow</artifactId>
    <version>2.0</version></dependency>

JFinal 4.8:

<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>jfinal</artifactId>
    <version>4.8</version></dependency>

JFinal Weixin 2.5:

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

Hutool 5.3.0:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.0</version></dependency>

Ehcache 2.6.11:

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.6.11</version></dependency>

Mysql-connector-java 8.0.18:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version></dependency>

Druid 1.1.18:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.18</version></dependency>

Fastjson 1.2.67:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.67</version></dependency>

4. 简单快速集成单个微信小程序

不管是单个还是多账号,不管是 Java 代码里直接配置还是读取配置文件,或者从缓存或者数据库总读取配置,最终都要在 JFinal 项目启动的时候,通过 JFinal Weixin SDK 提供的小程序配置工具类,进行配置。

4.1 Java 代码硬编码配置、局部变量或常量配置

首先,需要在微信小程序登录进入后台,找到左侧导航【开发】,进入第二个选项卡【开发配置】,第一个配置区域【开发者 ID】中,拿到需要配置的 AppID 和 AppSecret。

image.png

在 JFinalConfig 的主配置类中,覆写 onStart 方法,在 JFinal 项目启动后进行微信小程序配置初始化即可。

image.png

注意:这里的两个变量 APPID 和 APPSECRET 也可以提取到类上面做常量定义。

有同学可能会有疑问,为什么是在 onStart 中配置?

这个主要是因为 JFinalConfig 主配置类中,每个 configxxx 方法都有单独的作用。

  • configConstant 主要配置常量

  • configRoute 主要配置路由

  • configPlugin 主要配置自定义插件

  • configInterceptor 主要配置全局作用的拦截器

  • configHandler 主要配置全局处理器

  • configEngine 主要配置 模板引擎相关

  • 剩下的就是 onStart 和 onStop 还有 main 方法, onStop 是服务器停止或者重启时调用

那最后只剩下 onStart 了,而且 onStart 是在所有配置都加载初始化完成,整个项目正常启动后才调用的,非常合适。

当然我们也可以自己写一个 configWechat() 方法:

image.png

启动正常!而且成功调用了 API,拿到了微信小程序的 access_token。

大家都知道,调用微信小程序的其它 API,大多数都会要求携带 access_token 的。

至此,完成了最简单的单个账号,Java 代码里硬编码实现配置初始化。

4.2 使用配置文件

在 src/main/resourses 目录下,单独创建一个配置文件 wechat.properties。

image.png

这样就需要在 Java 中读取这个配置文件了。

image.png

测试启动也是没有问题的,从配置文件中读取到了配置数据后,在 Java 代码里正常使用。


详细视频教程在这里:https://space.bilibili.com/48578449


关注JFinal学院公众号(jfinalxueyuan)

JFinal学院群:362557641 JFinal学院


加我微信,随时交流:

mumengmeng


image.png


谁在使用JFinal极速开发平台开发项目?

点我查看:

https://mp.weixin.qq.com/s/9InIK3Uf_H0qgeK5k-f9pg



评论区

yunqi

2020-08-11 09:45

周中中

2020-08-13 08:52

eclipse上 JBolt 插件安装不了

jiren

2020-08-16 08:23

处理事件消息view_miniprogram 我看, 码云上面显示已经修复, 但是版本还是2.6, 请问,这个问题是要等下次2.7的时候一起发版么, 仓库2.6包重新再仓库拉取了, 还是会报错

山东小木

2020-08-16 12:06

@jiren 下载最新源码 本地自行编译安装到本地库里即可

JFinal

2020-08-16 13:11

@山东小木 view_miniprogram 有关支持,我看到就添加了一行常量代码:
public static final String EVENT_INMENU_VIEW_MINIPROGRAM = "view_miniprogram";

这行代码难道就是一个功能?

@jiren 如果这行代码仅仅只是一个常量定义,在 jfinal weixin 2.6 中应该可以自行添加这个常量来使用,不必等到 jfinal weixin 2.7

如果这行常量定义确实实现了功能,今天我推送一版到 maven 中心库

山东小木

2020-08-16 13:50

@JFinal InMsgParser 添加316行开始 前面的一些都改成了常量 还修复了一个写错的常量

山东小木

2020-08-16 13:52

@JFinal image.png

还添加了一个MenuId 属性 以及处理 整个view_miniprogram 相关的常量 关联属性 还有处理事件都加上去了

山东小木

2020-08-16 13:53

@JFinal 不提交新版3.6.01之类的话 就得让开发者本地库里自己clone代码去编译安装了

JFinal

2020-08-16 14:00

@山东小木 我现在推送一个新版本, 没有要提交的吧?

JFinal

2020-08-16 16:17

@jiren jfinal weixin 2.7 已推送至 maven 中心库,现在已经可以使用,升起来

山东小木

2020-08-16 17:34

@JFinal 恩恩 晚上我测试

山东小木

2020-08-16 17:35

@jiren 你测试新版2.7也给个反馈

山东小木

2020-08-16 17:36

@周中中 1、使用JEE版Eclipse 离线解压缩版就行了 版本直接下载最新版就行 还不行就扫码加我qq或者微信

jiren

2020-08-17 02:36

@山东小木 @JFinal 刚看到消息, 刚才升级到新版本了, 有一点疑问
com.jfinal.weixin.sdk.jfinal.MsgController.index() : /wx_kbc/msg?signature=
java.lang.RuntimeException: File not found : /srv/www/webapp/wx_kbc/msg/index.html
小程序消息,合并到用户菜单事件里面了,
小程序菜单不需要返回任何信息, 顶多是做下统计, 不需要返回信息的情况, 我应该怎样处理 render();

JFinal

2020-08-17 08:22

@jiren renderNull()

周中中

2020-08-17 10:50

@山东小木 可以了,我的eclipse是安装版,要稍微处理下的;

jiren

2020-08-18 10:53

@山东小木 @JFinal 升级完成, 运行几天, 没有发现什么问题