# Jfinal Weixin 极速开发
JFinal Weixin 是基于 JFinal 的微信公众号极速开发 SDK,只需浏览 Demo 代码即可进行极速开发,自 JFinal Weixin 1.2 版本开始已添加对多公众号支持。
## 1、WeixinConfig配置
`详情请见`:[JFinal weixin中的WeixinConfig配置](http://git.oschina.net/jfinal/jfinal-weixin/wikis/JFinal-weixin%E4%B8%AD%E7%9A%84WeixinConfig%E9%85%8D%E7%BD%AE)
## 2、WeixinMsgController
``` java
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 ("news".equalsIgnoreCase(msgContent)) {
OutNewsMsg outMsg = new OutNewsMsg(inTextMsg);
outMsg.addNews("图文消息title", "图文消息description", "图文消息片 url", "图文消息 url");
render(outMsg);
}
// 音乐消息测试
else if ("music".equalsIgnoreCase(msgContent)) {
OutMusicMsg outMsg = new OutMusicMsg(inTextMsg);
outMsg.setTitle("Day By Day");
outMsg.setDescription("建议在 WIFI 环境下流畅欣赏此音乐");
outMsg.setMusicUrl("http://www.jfinal.com/DayByDay-T-ara.mp3");
outMsg.setHqMusicUrl("http://www.jfinal.com/DayByDay-T-ara.mp3");
outMsg.setFuncFlag(true);
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);
}
protected void processInVoiceMsg(InVoiceMsg inVoiceMsg) {
OutVoiceMsg outMsg = new OutVoiceMsg(inVoiceMsg);
// 将刚发过来的语音再发回去
outMsg.setMediaId(inVoiceMsg.getMediaId());
render(outMsg);
}
protected void processInVideoMsg(InVideoMsg inVideoMsg) {
/* 腾讯 api 有 bug,无法回复视频消息,暂时回复文本消息代码测试
OutVideoMsg outMsg = new OutVideoMsg(inVideoMsg);
outMsg.setTitle("OutVideoMsg 发送");
outMsg.setDescription("刚刚发来的视频再发回去");
// 将刚发过来的视频再发回去,经测试证明是腾讯官方的 api 有 bug,待 api bug 却除后再试
outMsg.setMediaId(inVideoMsg.getMediaId());
render(outMsg);
*/
OutTextMsg outMsg = new OutTextMsg(inVideoMsg);
outMsg.setContent("\t视频消息已成功接收,该视频的 mediaId 为: " + inVideoMsg.getMediaId());
render(outMsg);
}
protected void processInLocationMsg(InLocationMsg inLocationMsg) {
OutTextMsg outMsg = new OutTextMsg(inLocationMsg);
outMsg.setContent("已收到地理位置消息:" +
"\nlocation_X = " + inLocationMsg.getLocation_X() +
"\nlocation_Y = " + inLocationMsg.getLocation_Y() +
"\nscale = " + inLocationMsg.getScale() +
"\nlabel = " + inLocationMsg.getLabel());
render(outMsg);
}
protected void processInLinkMsg(InLinkMsg inLinkMsg) {
OutNewsMsg outMsg = new OutNewsMsg(inLinkMsg);
outMsg.addNews("链接消息已成功接收", "链接使用图文消息的方式发回给你,还可以使用文本方式发回。点击图文消息可跳转到链接地址页面,是不是很好玩 :)" , "http://mmbiz.qpic.cn/mmbiz/zz3Q6WSrzq1ibBkhSA1BibMuMxLuHIvUfiaGsK7CC4kIzeh178IYSHbYQ5eg9tVxgEcbegAu22Qhwgl5IhZFWWXUw/0", inLinkMsg.getUrl());
render(outMsg);
}
protected void processInFollowEvent(InFollowEvent inFollowEvent) {
OutTextMsg outMsg = new OutTextMsg(inFollowEvent);
outMsg.setContent("感谢关注 JFinal Weixin 极速开发,为您节约更多时间,去陪恋人、家人和朋友 :) \n\n\n " + helpStr);
// 如果为取消关注事件,将无法接收到传回的信息
render(outMsg);
}
protected void processInQrCodeEvent(InQrCodeEvent inQrCodeEvent) {
OutTextMsg outMsg = new OutTextMsg(inQrCodeEvent);
outMsg.setContent("processInQrCodeEvent() 方法测试成功");
render(outMsg);
}
protected void processInLocationEvent(InLocationEvent inLocationEvent) {
OutTextMsg outMsg = new OutTextMsg(inLocationEvent);
outMsg.setContent("processInLocationEvent() 方法测试成功");
render(outMsg);
}
protected void processInMenuEvent(InMenuEvent inMenuEvent) {
OutTextMsg outMsg = new OutTextMsg(inMenuEvent);
outMsg.setContent("processInMenuEvent() 方法测试成功");
render(outMsg);
}
protected void processInSpeechRecognitionResults(InSpeechRecognitionResults inSpeechRecognitionResults) {
OutTextMsg outMsg = new OutTextMsg(inSpeechRecognitionResults);
outMsg.setContent("processInSpeechRecognitionResults() 方法测试成功");
render(outMsg);
}
/**
* 如果要支持多公众账号,只需要在此返回各个公众号对应的 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;
}
}
```
DemoController 通过继承自 WeixinController 便拥有了接收消息和发送消息的便利方法
## 3、WeixinApiController
``` java
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 属性值
*/
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;
}
}
```
通过调用 MenuApi、UserApi 等 Api 的相关方法�
没有合适的资源?快使用搜索试试~ 我知道了~
收起资源包目录
java微信开发API demo JDK (361个子文件)
InMsgParser.class 13KB
HttpUtils$OkHttpDelegate.class 10KB
HttpKitExt.class 8KB
ReturnCode$1.class 8KB
ShakeAroundDeviceApi.class 8KB
MsgController.class 7KB
CustomServiceApi.class 7KB
WeixinMsgController.class 7KB
XMLMsgTest.class 7KB
PaymentApi.class 7KB
MediaApi.class 6KB
WXBizMsgCryptTest.class 6KB
WXBizMsgCrypt.class 6KB
DatacubeApi.class 6KB
PaymentKit.class 5KB
WeixinApiController.class 5KB
WeixinPayController.class 4KB
GroupsApi.class 4KB
MsgControllerAdapter.class 4KB
ShakeAroundPageApi.class 4KB
ApiResult.class 4KB
UserApi.class 4KB
JsonUtils.class 4KB
PaymentApiTest.class 4KB
SnsAccessTokenApi.class 4KB
Program.class 4KB
OutNewsMsg.class 3KB
SnsAccessToken.class 3KB
ShakeAroundStatisticsApi.class 3KB
RedPackApiController.class 3KB
MsgEncryptKit.class 3KB
JsTicket.class 3KB
MsgInterceptor.class 3KB
MenuApi.class 3KB
XmlKit.class 3KB
AccessToken.class 3KB
CustomServiceApiTest.class 3KB
OutMsgTest.class 3KB
QrcodeApi.class 3KB
RetryUtils.class 3KB
WeixinConfig.class 3KB
ApiConfig.class 3KB
JsTicketApi.class 3KB
HttpUtils.class 3KB
OutMsg.class 3KB
AccessTokenApi.class 3KB
AccessTokenApiTest.class 2KB
MessageApi.class 2KB
InShakearoundUserShakeEvent.class 2KB
HttpUtils$HttpKitDelegate.class 2KB
ShakeAroundAccountApi.class 2KB
OutMusicMsg.class 2KB
TemplateData.class 2KB
JsonTest.class 2KB
ApiConfigKit.class 2KB
InMassEvent.class 2KB
MediaApiTest.class 2KB
ShakeAroundUserApi.class 2KB
SHA1.class 2KB
OutVideoMsg.class 2KB
RedisAccessTokenCache.class 2KB
MediaFile.class 2KB
InMenuEvent.class 2KB
MediaArticles.class 2KB
JsonUtils$Jackson.class 2KB
XMLParse.class 2KB
ShakeAroundMaterialApi.class 2KB
DomTest.class 2KB
SignatureCheckKit.class 2KB
TemplateMsgApiTest.class 2KB
RedPackApi.class 2KB
ShorturlApi.class 2KB
IOUtils.class 2KB
DatacubeApiTest.class 2KB
InWifiEvent.class 2KB
PKCS7Encoder.class 2KB
InLocationMsg.class 2KB
TestToken.class 2KB
OutCustomMsg.class 1KB
Base64Utils.class 1KB
MediaApi$MediaType.class 1KB
InShakearoundUserShakeEvent$AroundBeacon.class 1KB
JsTicketApi$1.class 1KB
InPoiCheckNotifyEvent.class 1KB
ShakeAroundMaterialApi$MaterialType.class 1KB
InMsg.class 1KB
InMsgParserTest.class 1KB
SnsAccessTokenApi$1.class 1KB
News.class 1KB
InLinkMsg.class 1KB
UserApiTest.class 1KB
OutTextMsg.class 1KB
TemplateMsgApi.class 1KB
InCustomEvent.class 1KB
OutImageMsg.class 1KB
OutVoiceMsg.class 1KB
PaymentApi$TradeType.class 1KB
PaymentApi$BillType.class 1KB
AesException.class 1KB
InTemplateMsgEvent.class 1KB
共 361 条
- 1
- 2
- 3
- 4
资源推荐
资源预览
资源评论
2015-10-28 上传
2015-01-11 上传
2009-05-25 上传
185 浏览量
5星 · 资源好评率100%
132 浏览量
177 浏览量
193 浏览量
5星 · 资源好评率100%
103 浏览量
169 浏览量
2022-05-04 上传
资源评论
- wwwxxxkkk2016-06-30下下来学习一下
- 归否2018-04-13没有真正下载,就让我评价??
- DaKa2016-11-08浅显易懂,非常适合入门系统学习
- dadadidixh2016-05-27还可以,最终没用
scanneran
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功