微信公众平台基本配置
来源:互联网 发布:人工智能专业 编辑:程序博客网 时间:2024/05/07 05:56
参考:http://www.2cto.com/weixin/201504/387494.html
接入微信公众平台开发,第一步需要填写服务器配置:
URL处需要填写自己服务器请求地址,它是开发者用来接收微信消息和时间的接口URL。Token可以随便写,但是这里的token,微信会通过填写的url去验证token。所以,在自己项目中要写一个用来协助微信验证信息的servlet。
/** * 核心请求处理类 * */public class WechatServlet extends HttpServlet { private static final longserialVersionUID = 5021188348833856475L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { // 微信加密签名 String signature = request.getParameter("signature"); // 时间戳 String timestamp = request.getParameter("timestamp"); // 随机数 String nonce = request.getParameter("nonce"); // 随机字符串 String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter(); // 通过检验signature对请求进行校验,//若校验成功则原样返回echostr,表示接入成功,否则接入失败 if(SignUtil.checkSignature(signature, timestamp, nonce)) { out.print(echostr); } out.close(); out = null; }/** * 请求校验工具类 */ public class SignUtil { // 与接口配置信息中的Token要一致 private static String token = "845C2550903CE6FA54CACDB82EAD4350"; public static boolean checkSignature(String signature, String timestamp, String nonce) { //从请求中(也就是微信服务器传过来的)拿到的token, timestamp, nonce String[] arr = new String[] { token, timestamp, nonce }; // 将token、timestamp、nonce三个参数进行字典序排序 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; } //将加密后的字节数组变成字符串 private static String byteToStr(byte[] byteArray) { String strDigest = ""; for(int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } 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 = newchar[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[1] = Digit[mByte & 0X0F]; String s = newString(tempArr); return s; }//用于字典排序 public static void sort(String a[]) { for(int i = 0; i < a.length - 1; i++) { for(int j = i + 1; j < a.length; j++) { if(a[j].compareTo(a[i]) < 0) { String temp = a[i]; a[i] = a[j]; a[j] = temp; } } } }}
以上验证的核心代码。
web.xml中增加配置:
综上,
URL填写的是用来协助微信验证的路径,
Token中的值填写的是SignUtil类中定义的token的值,
EncodingAESKey随机生成即可。
0 0
- 微信公众平台基本配置
- 微信公众平台配置
- 微信公众平台的基本开发
- 微信支付公众平台配置
- 微信公众平台服务器配置
- 微信公众平台配置服务器
- 微信公众平台的配置步骤
- 微信公众平台 开发者基本配置 token验证一直失败的时候
- 微信公众平台的初步开发(PHP)基本配置
- PHP7.0微信公众平台开发1: 服务器基本配置
- 微信公众平台
- 微信公众平台
- 微信公众平台
- 微信公众平台
- 微信公众平台
- 微信公众平台
- 微信公众平台
- 微信公众平台
- 黑马程序员正告友商:要将良心捧在手里做教育
- centos 7.1 获取内核源码
- tomcat 解析(四)-处理http请求过程
- Android事件机制ScrollView,ViewPager
- jQuery常用方法一览
- 微信公众平台基本配置
- js限制显示字数,其他由三个点表示
- Sublime Text2上搭建c++环境(windows)
- PKAV 发现 Struts2 最新远程命令执行漏洞(S2-037)
- centOS6.4 RedHat 安装 apache2.4 php5.6 mysql5.5
- 经典SQL语句大全
- 代理模式(Proxy) Java
- Android 快速开发系列 打造万能的ListView GridView 适配器
- 移动端开发调试工具神器--Weinre使用方法