多平台统一管理软件接口,如何实现多平台统一管理软件接口
296
2023-05-21
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
*
version:1.0
*
description:微信请求验证类
*/
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");
/http:///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
*
version:1.0
*
description:微信请求校验工具类
*/
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.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 statihttp://c String bytesToString(byte[] byteArray){ String stringDigest = ""; for(int i=0;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; } } 第一天就做了这些,完成了微信请求验证的功能。
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 statihttp://c String bytesToString(byte[] byteArray){
String stringDigest = "";
for(int i=0;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; } } 第一天就做了这些,完成了微信请求验证的功能。
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;
}
}
第一天就做了这些,完成了微信请求验证的功能。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~