二次开发微信之请求验证

互联网 17-5-10
这篇文章主要为大家详细介绍了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. 微信投票源码

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

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:详解mp、open、pay三大平台直接的关联

相关资讯