Cet article présente principalement en détail le premier développement secondaire de Java WeChat, la fonction de vérification des requêtes Java WeChat, qui a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
pour se préparer à l'utiliser. Projet de développement secondaire WeChat en Java, écrivez le processus ici.
Le premier article, faites la vérification de la demande WeChat
Vous devez importer la bibliothèque : servlet-api.jar
La première étape : Créer un nouveau package com.wtz .service, créez une nouvelle classe 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; } }
Étape 2 : Créez un nouveau package com.wtz.util, créez une nouvelle classe 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; } }
Je l'ai fait en une journée et j'ai complété la fonction de vérification de la demande WeChat.
[Recommandations associées]
1. Téléchargement du code source de la plateforme de compte public WeChat
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!