站内搜索

二次开发微信之请求验证

这篇文章主要为大家详细介绍了Java微信二次开发第一篇,Java微信请求验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

准备用Java做一个微信二次开发项目,把流程写在这里吧。

第一篇,做微信请求验证

需要导入库:servlet-api.jar

第一步:新建包com.wtz.service,新建类LoginServlet.java

package com.wtz.service;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.wtz.util.ValidationUtil;/** *   @author wangtianze QQ:864620012 * @date 2017年4月17日 下午8:11:32 * <p>version:1.0</p> *  <p>description:微信请求验证类</p> */public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {  System.out.println("get请求。。。。。。");    //1.获得微信签名的加密字符串  String signature = request.getParameter("signature");    //2.获得时间戳信息  String timestamp = request.getParameter("timestamp");     //3.获得随机数  String nonce = request.getParameter("nonce");    //4.获得随机字符串  String echostr = request.getParameter("echostr");    System.out.println("获得微信签名的加密字符串:"+signature);  System.out.println("获得时间戳信息:"+timestamp);  System.out.println("获得随机数:"+nonce);  System.out.println("获得随机字符串:"+echostr);    PrintWriter out = response.getWriter();    //验证请求确认成功原样返回echostr参数内容,则接入生效,成为开发者成功,否则失败  if(ValidationUtil.checkSignature(signature, timestamp, nonce)){   out.print(echostr);  }    out.close();  out = null; }}

第二步:新建包com.wtz.util,新建类Validation.java

package com.wtz.util;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Arrays;/** *  @author wangtianze QQ:864620012 * @date 2017年4月17日 下午8:35:57 * <p>version:1.0</p> *  <p>description:微信请求校验工具类</p> */public class ValidationUtil { private static String token = "wangtianze";  public static boolean checkSignature(String signature,String timestamp,String nonce){  //1.将token,timestamp,nonce三个参数进行排序  String[] str = new String[]{token,timestamp,nonce};  Arrays.sort(str);    //2.将三个参数字符串拼接成一个字符串  StringBuilder buff = new StringBuilder();  for(int i=0;i<buff.length();i++){   buff.append(str[i]);  }    //3.进行sha1加密  MessageDigest md = null;  String result = "";  try {   md = MessageDigest.getInstance("SHA-1");   byte[] data = md.digest(buff.toString().getBytes());      //将字节数组转换成字符串   result = bytesToString(data);      System.out.println("加密后的字符串为:"+result);     } catch (NoSuchAlgorithmException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }    return result!=null?(result.equals(signature.toUpperCase())):false; }  /**  * 将字节数组转换成十六进制字符串  * @param byteArray  * @return  */ private static String bytesToString(byte[] byteArray){  String stringDigest = "";  for(int i=0;i<stringDigest.length();i++){   stringDigest += byteToHexString(byteArray[i]);  }  return stringDigest; }  /**  * 将一个字节转换为十六进制字符串  * @param mByte  * @return  */ private static String byteToHexString(byte mByte){  char[] digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};  char[] temp = new char[2];    temp[0] = digit[(mByte>>>4) & 0X0F];  temp[1] = digit[mByte & 0X0F];    String str = new String(temp);  return str; }}

第一天就做了这些,完成了微信请求验证的功能。

【相关推荐】

1. 微信公众号平台源码下载

2. 微信投票源码

以上就是二次开发微信之请求验证的详细内容,更多请关注php中文网其它相关文章!

  • 上一篇:详解mp、open、pay三大平台直接的关联
  • 下一篇:微信二次开发之文本消息请求与发送