如何开发微信?,这个东西大家可以去参考TX的那个微信开发文档,今天主要讲的都是Jfinal_weixin这个东西(如何创建一个WEB项目,如何获取Jfinal_weixin的开发包),也就是官网的那个demo。JFinal官网地址:http://www.jfinal.com/ 开源社区 http://git.oschina.net/jfinal/jfinal-weixin
一:开源社区下载jfinal-weixin源码
下载解压的目录如下
二:将jfinal-weixin源码导入到IDE
三:分析源码如何使用jfinal-weixin
1、WeixinConfig 微信开发环境的配置
public class WeixinConfig extends JFinalConfig {
/**
* 如果生产环境配置文件存在,则优先加载该配置,否则加载开发环境配置文件
* @param pro 生产环境配置文件
* @param dev 开发环境配置文件
*/
public void loadProp(String pro, String dev) {
try {
PropKit.use(pro);
}
catch (Exception e) {
PropKit.use(dev);
}
}
public void configConstant(Constants me) {
loadProp("a_little_config_pro.txt", "a_little_config.txt");
me.setDevMode(PropKit.getBoolean("devMode", false));
// ApiConfigKit 设为开发模式可以在开发阶段输出请求交互的 xml 与 json 数据
ApiConfigKit.setDevMode(me.getDevMode());
}
public void configRoute(Routes me) {
me.add("/msg", WeixinMsgController.class);
me.add("/api", WeixinApiController.class, "/api");
}
public void configPlugin(Plugins me) {
// C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
// me.add(c3p0Plugin);
// EhCachePlugin ecp = new EhCachePlugin();
// me.add(ecp);
}
public void configInterceptor(Interceptors me) {
}
public void configHandler(Handlers me) {
}
public static void main(String[] args) {
JFinal.start("webapp", 80, "/", 5);
}
}
以上通过 configRoute 方法配置了访问路由 "/msg" 与 "/api"。项目启动后,在微信服以务器上配置 url:http://域名/msg 填写Token时需要与配置文件(a_little_config.txt)中的保持一次
2、WeixinMsgController 微信消息处理
package com.jfinal.weixin.demo;
import com.jfinal.kit.PropKit;
import com.jfinal.log.Logger;
import com.jfinal.weixin.sdk.api.ApiConfig;
import com.jfinal.weixin.sdk.jfinal.MsgController;
import com.jfinal.weixin.sdk.msg.in.*;
import com.jfinal.weixin.sdk.msg.in.event.*;
import com.jfinal.weixin.sdk.msg.in.speech_recognition.InSpeechRecognitionResults;
import com.jfinal.weixin.sdk.msg.out.*;
/**
* 将此 DemoController 在YourJFinalConfig 中注册路由,
* 并设置好weixin开发者中心的 URL 与 token ,使 URL 指向该
* DemoController 继承自父类 WeixinController 的 index
* 方法即可直接运行看效果,在此基础之上修改相关的方法即可进行实际项目开发
*/
public class WeixinMsgController extends MsgController {
static Logger logger = Logger.getLogger(WeixinMsgController.class);
private static final String helpStr = "\t发送 help 可获得帮助,发送\"视频\" 可获取视频教程,发送 \"美女\" 可看美女,发送 music 可听音乐 ,发送新闻可看JFinal新版本消息。公众号功能持续完善中";
/**
* 如果要支持多公众账号,只需要在此返回各个公众号对应的 ApiConfig 对象即可
* 可以通过在请求 url 中挂参数来动态从数据库中获取 ApiConfig 属性值
*/
public ApiConfig getApiConfig() {
ApiConfig ac = new ApiConfig();
// 配置微信 API 相关常量
ac.setToken(PropKit.get("token"));
ac.setAppId(PropKit.get("appId"));
ac.setAppSecret(PropKit.get("appSecret"));
/**
* 是否对消息进行加密,对应于微信平台的消息加解密方式:
* 1:true进行加密且必须配置 encodingAesKey
* 2:false采用明文模式,同时也支持混合模式
*/
ac.setEncryptMessage(PropKit.getBoolean("encryptMessage", false));
ac.setEncodingAesKey(PropKit.get("encodingAesKey", "setting it in config file"));
return ac;
}
// protected void processInTextMsg(InTextMsg inTextMsg)
// {
// //转发给多客服PC客户端
// OutCustomMsg outCustomMsg = new OutCustomMsg(inTextMsg);
// render(outCustomMsg);
// }
//
// @Override
// protected void processInVoiceMsg(InVoiceMsg inVoiceMsg)
// {
// //转发给多客服PC客户端
// OutCustomMsg outCustomMsg = new OutCustomMsg(inVoiceMsg);