Heim  >  Artikel  >  WeChat-Applet  >  Sekundäre Entwicklung der WeChat-Anfrageüberprüfung

Sekundäre Entwicklung der WeChat-Anfrageüberprüfung

Y2J
Y2JOriginal
2017-05-10 09:22:461835Durchsuche

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 = {&#39;0&#39;,&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;,&#39;6&#39;,&#39;7&#39;,&#39;8&#39;,&#39;9&#39;,&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;};
  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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn