Java微信二次開發(一)


准備用Java做一個微信二次開發項目,把流程寫在這里吧。

第一天,做微信請求驗證

需要導入庫:servlet-api.jar

第一步:新建包com.wtz.service,新建類LoginServlet.java

 1 package com.wtz.service;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 import com.wtz.util.ValidationUtil;
12 
13 /**
14  *     @author wangtianze QQ:864620012
15  *    @date 2017年4月17日 下午8:11:32
16  *  <p>version:1.0</p>
17  *     <p>description:微信請求驗證類</p>
18  */
19 public class LoginServlet extends HttpServlet {
20 
21     @Override
22     protected void doGet(HttpServletRequest request, HttpServletResponse response)
23             throws ServletException, IOException {
24         System.out.println("get請求。。。。。。");
25         
26         //1.獲得微信簽名的加密字符串
27         String signature = request.getParameter("signature");
28         
29         //2.獲得時間戳信息
30         String timestamp = request.getParameter("timestamp");
31          
32         //3.獲得隨機數
33         String nonce = request.getParameter("nonce");
34         
35         //4.獲得隨機字符串
36         String echostr = request.getParameter("echostr");
37         
38         System.out.println("獲得微信簽名的加密字符串:"+signature);
39         System.out.println("獲得時間戳信息:"+timestamp);
40         System.out.println("獲得隨機數:"+nonce);
41         System.out.println("獲得隨機字符串:"+echostr);
42         
43         PrintWriter out = response.getWriter();
44         
45         //驗證請求確認成功原樣返回echostr參數內容,則接入生效,成為開發者成功,否則失敗
46         if(ValidationUtil.checkSignature(signature, timestamp, nonce)){
47             out.print(echostr);
48         }
49         
50         out.close();
51         out = null;
52     }
53 }

 

 

第二步:新建包com.wtz.util,新建類Validation.java

 1 package com.wtz.util;
 2 
 3 import java.security.MessageDigest;
 4 import java.security.NoSuchAlgorithmException;
 5 import java.util.Arrays;
 6 
 7 /**
 8  *     @author wangtianze QQ:864620012
 9  *    @date 2017年4月17日 下午8:35:57
10  *  <p>version:1.0</p>
11  *     <p>description:微信請求校驗工具類</p>
12  */
13 public class ValidationUtil {
14     private static String token = "wangtianze";
15     
16     public static boolean checkSignature(String signature,String timestamp,String nonce){
17         //1.將token,timestamp,nonce三個參數進行排序
18         String[] str = new String[]{token,timestamp,nonce};
19         Arrays.sort(str);
20         
21         //2.將三個參數字符串拼接成一個字符串
22         StringBuilder buff = new StringBuilder();
23         for(int i=0;i<buff.length();i++){
24             buff.append(str[i]);
25         }
26         
27         //3.進行sha1加密
28         MessageDigest md = null;
29         String result = "";
30         try {
31             md = MessageDigest.getInstance("SHA-1");
32             byte[] data = md.digest(buff.toString().getBytes());
33             
34             //將字節數組轉換成字符串
35             result = bytesToString(data);
36             
37             System.out.println("加密后的字符串為:"+result);
38             
39         } catch (NoSuchAlgorithmException e) {
40             // TODO Auto-generated catch block
41             e.printStackTrace();
42         }
43         
44         return result!=null?(result.equals(signature.toUpperCase())):false;
45     }
46     
47     /**
48      * 將字節數組轉換成十六進制字符串
49      * @param byteArray
50      * @return
51      */
52     private static String bytesToString(byte[] byteArray){
53         String stringDigest = "";
54         for(int i=0;i<stringDigest.length();i++){
55             stringDigest += byteToHexString(byteArray[i]);
56         }
57         return stringDigest;
58     }
59     
60     /**
61      * 將一個字節轉換為十六進制字符串
62      * @param mByte
63      * @return
64      */
65     private static String byteToHexString(byte mByte){
66         char[] digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
67         char[] temp = new char[2];
68         
69         temp[0] = digit[(mByte>>>4) & 0X0F];
70         temp[1] = digit[mByte & 0X0F];
71         
72         String str = new String(temp);
73         return str;
74     }
75 }

第一天就做了這些,完成了微信請求驗證的功能

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM