jeecms添加微信推送认证接口(只是给自己用,留个编辑,文章写的不详细!!!!勿浏览)
2015-11-03 13:33
519 查看
//微信加密签名 public String getSignature(String timestamp,String nonce) { // TODO take token from db CmsConfig config=configMng.get(); String token=config.getWeixinToken(); String[] strarr = new String[]{token,timestamp,nonce}; String signature = ""; //对三个参数排序 Arrays.sort(strarr); StringBuffer content = new StringBuffer(); for (int i=0; i<strarr.length; i++) content.append(strarr[i]); //生成signature,最好此处将echostr存起来,以后每次校验消息来源都需要用到 signature = Sha1Encoder.encodeBySHA1(content.toString()).toLowerCase(); // 确认请求来至微信 return signature; } /** * 响应用户发送的消息,只是用来测试,没有实际用处 */ public void responseMsg(Map<String, String> paramMap) { String MsgType = WeiXinUtil.getMsgType(paramMap); //sendMessage(MsgTyep, null, MsgTyep, null, null, null); String token=weixinTokenCache.getToken(); switch(MsgType) { case WeiXinUtil.Message.Text: sendText(token, "未识别指令。将返回帮助菜单:1:帮助指令 2:获取最新消息 3:推送最新通知(管理员指令)"); break; case WeiXinUtil.Message.Image: sendText(token, "图片我喜欢,你是要我保存吗?"); break; case WeiXinUtil.Message.Voice: sendText(token, "最近上火听不清你说什么!"); break; default: sendText(token,"What are you 弄啥嘞?"); } }
jeecms本身带微信推送功能,并且在发文章的时候已经将推送的代码写进去了。
contentAct.java (package com.jeecms.cms.action.admin.main;)
//微信消息发送
weiXinSvc.sendMessage(sendType, selectImg, weixinImg, bean, ext, txt);
缺少的是微信公众号中token的认证,所有添加相应代码。(部分代码,时间关系不能都贴出来。代码在上面,csdn,,,,,,blog这么难用,想起了我就不想写东西了。)
前台找到action类,spring mvc controle 添加"sing.jspx"
public void signature(HttpServletRequest request,HttpServletResponse response) { String result = "Error"; /** 判断是否是微信接入激活验证,只有首次接入验证时才会收到echostr参数,此时需要把它直接返回 */ String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); String echostr = request.getParameter("echostr"); if (echostr != null && echostr.length() > 1) { if (wx.getSignature(timestamp,nonce).equals(signature)) result = echostr; } ResponseUtils.renderText(response, result); }
然后调用上面service。。。。。。(好像不符合mvc模式,是不是要写在其他包中????)管它呢。本来对jeecms分析就是不到位。
另外将token值加到数据库中,(这是我想记录的东西,其他都是顺便提一下。)jc_config_atrr追加一条记录weixinToken , test
在系统后台模板中找到api_edit.html添加
<@p.text colspan="1" width="50" label="cmsConfig.weixinToken" name="weixinToken" value=configAttr.weixinToken! style="width:200px" maxlength="100" /><@p.tr/>
然后修改cmsconfigattr.java(CmsCofig.java(com.jeecms.cor.entity.base包中),参照weixinid设置get 和set
public static final String WEIXIN_TOKEN = "weixinToken";
public String getWeixinToken() {
return getAttr().get(WEIXIN_TOKEN);
}
public void setWeixinToken(String token) {
getAttr().put(WEIXIN_TOKEN, token);
}
在cmsconfig.java中,在CmsCofig.java(com.jeecms.cor.entity.base包中,添加
public String getWeixinToken(){
CmsConfigAttr configAttr=getConfigAttr();
return configAttr.getWeixinToken();
}
api_edit.html后台api接口模板页添加下面内容:
<@p.text colspan="1" width="50" label="cmsConfig.weixinToken" name="weixinToken" value=configAttr.weixinToken! style="width:200px" maxlength="100" /><@p.tr/>
其中:cmsConfig.weixinToken 在后台模板文件夹languages\jeecms\admin\message_en_US.properties和对应的messages_zh_CN.properties中添加cmsConfig.weixinToken=Token 。
configAttr.weixinToken是从数据库中取出来,好像对应的类是CmsCofig.java(com.jeecms.cor.entity.base包中)。
从这里可以看到标签使用中,一部分来自数据库,一部分来自配置文件,例如需要显示的文字来自语言国际化的配置文件,数据来自数据库。
只是不知道如何判断从哪个类中读数据。
表:jc_config_attr中存放weixinToken ,appID, appsecret
相关文章推荐
- 移动前端工作的那些事---前端制作之微信小技巧篇
- 微信支付
- 微信公众平台开发(系列教程)
- 新开微信公众号,不定期分享技术,心情,见解等等等想说的
- 微信开发 -- 二维码生成
- 微信开发之客服消息的使用
- XMPP框架 微信项目开发之CoreData学习——CoreData的多表关联操作
- XMPP框架 微信项目开发之CoreData学习——CoreData的基本使用
- 微信手环1年多了,前主管终于出来聊了聊它是怎么诞生的
- Android录音播放工具类,仿微信语音聊天。
- 一个使用递归算法的小程序
- iOS 官方文档翻译 微信公众平台 和 github 同步上线
- ShareSDK微信分享时的坑
- 021.数组的二分查找
- 微信JS-SDK自定义分享链接
- Android 高仿微信 获取最近刚刚拍照的缩略图 功能实现
- 一个仿微信的Android图片选择组件:PhotoPicker
- C# 微信企业号--管理素材文件
- 微信客户端.NET版
- C# 微信企业号--发送消息