重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

二次开发微信之请求验证

时间:2020-09-09 08:00:04 作者:重庆seo小潘 来源:
这篇文章主要为大家详细介绍了Java微信二次开发第一篇,Java微信请求验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 准备用Java做一个微信二次开发项目,把流程写在这里吧。 第一篇,做微信请求验证 需要导入库:servlet-api.jar 第一步:新建

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

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

第一篇,做微信请求验证

需要导入库:servlet-api.jar

第一步:新建包com.wtz.service,新建类LoginServlet.javapackage 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.javapackage 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 blocke.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. 微信投票源码以上就是二次开发微信之请求验证的详细内容,更多请关注小潘博客其它相关文章!