欢迎光临本站
我们一直在努力

微信二次开发验证请求

这篇文章主要为大家详细介绍了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.

以上就是二次开发微信之请求验证的详细内容,更多请关注有卡有网。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《微信二次开发验证请求》
文章链接:https://www.youkayouwang.com/kaquan-baike/xcx/152898.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。