JAVA折腾微信公众平台(Token验证)
JAVA折腾微信公众平台(Token验证)
独角兽企业重金招聘Python工程师标准>>>
最近微信的公众平台比较火,于是我也想弄个微信来玩玩。如何注册微信公众号?点击之后就可以看到官方的答案了(额,比较坑爹)。
注册之后,可以选择编辑模式和开发模式,这里要说的是开发模式。
首先要开启开发模式必须要进行Token的一个验证,你给出一个地址,微信发送请求,然后你给出相应,就这么简单。虽然说是简单,但是这是事后才说的,官方只有PHP的DEMO,我用JAVA开发的时候各种蛋疼不会弄,不过好在还是弄出来了。
上传代码
以下代码是校验Token的关键代码,其中还有一个SHA1加密的类在附件中,这里就不贴出来了。需要注意的是,这里的类我是继承的HttpServlet,也就是说要进行web.xml的配置,这个就不多说了。
无问题后上传到你的空间,我用的是BAE,大家也可以试试。
packagenet.binjoo.wechat;
importjava.io.IOException;
importjava.util.Arrays;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importnet.binjoo.utils.SHA1;
@SuppressWarnings("serial")
publicclassWechatCallbackApiextendsHttpServlet{
//自定义token
privateStringTOKEN="这个地方由你自己定义";
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//微信加密签名
Stringsignature=request.getParameter("signature");//随机字符串
Stringechostr=request.getParameter("echostr");//时间戳
Stringtimestamp=request.getParameter("timestamp");//随机数
Stringnonce=request.getParameter("nonce");
String[]str={TOKEN,timestamp,nonce};
Arrays.sort(str);//字典序排序
StringbigStr=str[0]+str[1]+str[2];//SHA1加密
Stringdigest=newSHA1().getDigestOfString(bigStr.getBytes()).toLowerCase();
//确认请求来至微信
if(digest.equals(signature)){
response.getWriter().print(echostr);
}
}
}
开启消息接口
进入微信公众平台,选择导航菜单栏中的【高级设置 - 开发模式 - 成为开发者】或者点击这里进入,进入后填写网址URL和Token,其中Token可由可以任意填写,用作生成签名,但必须与WechatCallbackApi类中的常量TOKEN一致,否则不能通过校验,成不了开发者。
一切填写无问题之后,点击提交就可以了。是否通过的结果马上就可以得到响应,希望大家都能够看到【提交成功】的提示。
下载地址
百度网盘|YUN.IO