微信公众号开发部署服务器
2017-09-11 14:39
169 查看
个人觉得比较关键的一点就是Token了
由于项目是ssm框架,下面的代码是结合我的项目结构的,可以自行修改。
一、工具类
二、controller类
还需要按照要求下载一个文件放到项目服务器的根目录下。
访问路径为http://xxx.com/wxSign (服务器域名+方法名)
由于项目是ssm框架,下面的代码是结合我的项目结构的,可以自行修改。
一、工具类
public class WeiXinSign { /** * 与接口配置信息中的Token要一致 * 这里写什么,在微信开发者后台那里Token就填什么 */ public static String TOKEN = "1234567890"; /** * 验证签名 * @param signature * @param timestamp * @param nonce * @return */ public static boolean checkSignature(String signature, String timestamp, String nonce) { String[] arr = new String[] { TOKEN, timestamp, nonce }; // 将token、timestamp、nonce三个参数进行字典排序 Arrays.sort(arr); StringBuilder content = new StringBuilder(); for (int i = 0; i < arr.length; i++) { content.append(arr[i]); } MessageDigest md = null; String tmpStr = null; try { md = MessageDigest.getInstance("SHA-1"); // 将三个参数字符串拼接成一个字符串进行sha1加密 byte[] digest = md.digest(content.toString().getBytes()); tmpStr = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } content = null; // 将sha1加密后的字符串可与signature对比 return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; } /** * 将字节数组转换为十六进制字符串 * * @param byteArray * @return */ private static String byteToStr(byte[] byteArray) { String strDiges 4000 t = ""; for (int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } /** * 将字节转换为十六进制字符串 * * @param mByte * @return */ private static String byteToHexStr(byte mByte) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[1] = Digit[mByte & 0X0F]; String s = new String(tempArr); return s; } }
二、controller类
@RequestMapping(value = "/wxSign",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"}) @ResponseBody public PrintWriter wxSign(HttpServletRequest request, HttpServletResponse response, HttpSession session){ // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 String signature = request.getParameter("signature"); // 时间戳,微信端给 String timestamp = request.getParameter("timestamp"); // 随机数,微信端给 String nonceStr = request.getParameter("nonce"); // 随机字符串,微信端给 String echostr = request.getParameter("echostr"); PrintWriter out = null; try { out = response.getWriter(); // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败 if (WeiXinSign.checkSignature(signature, timestamp, nonceStr)) { out.print(echostr); } } catch (IOException e) { e.printStackTrace(); } finally { out.close(); out = null; } return out; }
还需要按照要求下载一个文件放到项目服务器的根目录下。
访问路径为http://xxx.com/wxSign (服务器域名+方法名)
相关文章推荐
- JeeSite 4.0 微信公众号牛牛房卡网站开发环境部署运行调试
- 微信公众号开发443端口,本地服务器,小记
- JBoss EAP应用服务器部署方法和JBoss 开发JMS消息服务小例子
- eclipse 开发web程序,启动tomcat插件服务器的时候。部署目录在那里?
- 学习GO第一天,自我感觉可麻利的开干了-GO语言配置、开发、服务器部署
- 开发环境部署到服务器:An internal error occurred during: "Redeploy"
- 详解J2EE开发的网站部署到阿里云服务器的方法
- 浅谈用Java微信公众号开发时向微信服务器发送JSON数据包返回47001错误码问题
- NodeJS+Express+MySQL开发小记(2):服务器部署
- 微信公众号平台接口开发:基础支持,获取微信服务器IP地址
- 解决VS无法连接到已配置的开发web服务器或者部署在IIS上的web服务打不开的问题
- 开发部署到was服务器上
- 微信公众号开发001-接入服务器
- 若有多台服务器且未部署全局session 用传值方法进入微信公众号
- linu下安装java开发环境及部署JBOSS服务器
- 微信公众号开发2-验证服务器有效性
- 总结代码开发完成--> 同步、更新、上传SVN -->服务器上部署整个流程
- SharePoint PowerShell部署开发好的WebPart到服务器上
- SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流
- 微信公众号开发1搭建php服务器