jeecms添加微信推送认证接口(只是给自己用,留个编辑,文章写的不详细!!!!勿浏览)

来源:互联网 发布:win10设置网络自动连接 编辑:程序博客网 时间:2024/05/24 06:32

//微信加密签名public String getSignature(String timestamp,String nonce) {// TODO take token from dbCmsConfig 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 

0 0
原创粉丝点击