微信认证

    xiaoxiao2021-08-25  102

    java ee 添加web

    web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">   <display-name>test81</display-name>   <welcome-file-list>     <welcome-file>index.html</welcome-file>     <welcome-file>index.htm</welcome-file>     <welcome-file>index.jsp</welcome-file>     <welcome-file>default.html</welcome-file>     <welcome-file>default.htm</welcome-file>     <welcome-file>default.jsp</welcome-file>   </welcome-file-list>    <servlet>     <description></description>     <display-name>CoreServlet</display-name>     <servlet-name>CoreServlet</servlet-name>     <servlet-class>org.liufeng.weixin.servlet.CoreServlet</servlet-class>   </servlet>       <servlet-mapping>     <servlet-name>CoreServlet</servlet-name>     <url-pattern>/CoreServlet</url-pattern>   </servlet-mapping> </web-app>

     

    建立2个包

    一个是org.weixin.util

    添加一个SignUtil

    package org.weixin.util; import java.security.MessageDigest; 

    import java.security.NoSuchAlgorithmException; 

    import java.util.Arrays;

    public class SignUtil {

        // 与接口配置信息中的Token要一致 

        private static String token = "weixin"; 

        public static boolean checkSignature(String signature, String timestamp, String nonce) { 

            String[] arr = new String[] { token, timestamp, nonce }; 

            // 将token、timestamp、nonce三个参数进行字典序排序 

            Arrays.sort(arr); 

            StringBuilder content = new StringBuilder(); 

            for (int i = 0; i < arr.length; i++) { 

                content.append(arr[i]); 

            } 

            MessageDigest md = null; 

            String tmpStr = null; 

            try { 

                md = MessageDigest.getInstance("SHA-1"); 

                // 将三个参数字符串拼接成一个字符串进行sha1加密 

                byte[] digest = md.digest(content.toString().getBytes()); 

                tmpStr = byteToStr(digest); 

            } catch (NoSuchAlgorithmException e) { 

                e.printStackTrace(); 

            } 

            content = null; 

            // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信 

            return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; 

        } 

        /**

         * 将字节数组转换为十六进制字符串

         * 

         * @param byteArray

         * @return

         */ 

        private static String byteToStr(byte[] byteArray) { 

            String strDigest = ""; 

            for (int i = 0; i < byteArray.length; i++) { 

                strDigest += byteToHexStr(byteArray[i]); 

            } 

            return strDigest; 

        } 

        /**

         * 将字节转换为十六进制字符串

         * 

         * @param mByte

         * @return

         */ 

        private static String byteToHexStr(byte mByte) { 

            char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; 

            char[] tempArr = new char[2]; 

            tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; 

            tempArr[1] = Digit[mByte & 0X0F]; 

            String s = new String(tempArr); 

            return s; 

        } 

    }

     

     

    另一个是org.weixin.servlet

    添加Coreservlet

    package org.weixin.servlet;

    import java.io.IOException; import java.io.PrintWriter;

    import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

    import org.liufeng.weixin.util.SignUtil;

    /**  * Servlet implementation class Coreservlet  */ @WebServlet("/Coreservlet") public class Coreservlet extends HttpServlet {  private static final long serialVersionUID = 1L;            /**      * @see HttpServlet#HttpServlet()      */ //    public Coreservlet() { //        super(); //        // TODO Auto-generated constructor stub //    }

     /**   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)   */  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   // TODO Auto-generated method stub    String signature = request.getParameter("signature");          // 随机字符串          String echostr = request.getParameter("echostr");          // 时间戳          String timestamp = request.getParameter("timestamp");          // 随机数          String nonce = request.getParameter("nonce");   PrintWriter out = response.getWriter();         if(SignUtil.checkSignature(signature, timestamp, nonce))         {         out.write(echostr);         }         out.close();  }

     /**   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)   */  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   // TODO Auto-generated method stub   doGet(request, response);  }

    }

     

    转载请注明原文地址: https://ju.6miu.com/read-677070.html

    最新回复(0)