In diesem Artikel wird hauptsächlich die erste sekundäre Entwicklung von Java WeChat im Detail vorgestellt, die Java WeChat-Anforderungsüberprüfungsfunktion, die einen bestimmten Referenzwert hat. Interessierte Freunde können sich darauf beziehen
, um sich auf die Verwendung vorzubereiten Sekundäres WeChat-Entwicklungsprojekt in Java, schreiben Sie den Prozess hier.
Der erste Artikel: Führen Sie die Überprüfung der WeChat-Anfrage durch
Sie müssen die Bibliothek importieren: servlet-api.jar
Der erste Schritt: Erstellen Sie eine neues Paket com.wtz .service, erstellen Sie eine neue Klasse 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; } }
Schritt 2: Erstellen Sie ein neues Paket com.wtz.util, erstellen Sie eine neue Klasse 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; } }
Ich habe das an einem Tag geschafft und die Funktion zur Überprüfung der WeChat-Anfrage abgeschlossen.
[Verwandte Empfehlungen]
1. Quellcode der WeChat-Plattform herunterladen
2 🎜>
Das obige ist der detaillierte Inhalt vonSekundäre Entwicklung der WeChat-Anfrageüberprüfung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!