java微信公众号服务器配置

1.微信公众号配置


2.java端验证

/**
 * 微信公众号验证
 * @return
 */
@RequestMapping(value = "/wechatAuth")
@ResponseBody
public String wechatAuth(String signature, String timestamp, String nonce, String echostr) {
   //获取微信服务器配置的自定义token
   String token = PropertiesUtil2.getPropertyFile("/wechat-context.properties").getProperty("wechatToken");
   String sig = null;
   try {
      sig = SHA1.getSHA1(token,timestamp,nonce,"");
   } catch (AesException e) {
      e.printStackTrace();
   }
   logger.info(sig+","+signature+","+timestamp+","+nonce+","+echostr);
   if(signature.equals(sig)){
      return echostr;
   }else{
      return "error";
   }
}
package aes;

import java.security.MessageDigest;
import java.util.Arrays;

/**
 * SHA1 class
 *
 * 计算公众平台的消息签名接口.
 */
public class SHA1 {

	
   public final static int ComputeSignatureError = -40003;


   /**
    * 用SHA1算法生成安全签名
    * @param token 票据
    * @param timestamp 时间戳
    * @param nonce 随机字符串
    * @param encrypt 密文
    * @return 安全签名
    * @throws AesException 
    */
   public static String getSHA1(String token, String timestamp, String nonce, String encrypt) throws AesException{
      try {
         String[] array = new String[] { token, timestamp, nonce, encrypt };
         StringBuffer sb = new StringBuffer();
         // 字符串排序
         Arrays.sort(array);
         for (int i = 0; i < 4; i++) {
            sb.append(array[i]);
         }
         String str = sb.toString();
         // SHA1签名生成
         MessageDigest md = MessageDigest.getInstance("SHA-1");
         md.update(str.getBytes());
         byte[] digest = md.digest();

         StringBuffer hexstr = new StringBuffer();
         String shaHex = "";
         for (int i = 0; i < digest.length; i++) {
            shaHex = Integer.toHexString(digest[i] & 0xFF);
            if (shaHex.length() < 2) {
               hexstr.append(0);
            }
            hexstr.append(shaHex);
         }
         return hexstr.toString();
      } catch (Exception e) {
         e.printStackTrace();
         throw new AesException(ComputeSignatureError);
      }
   }
}

注:嫌麻烦直接返回encrypt字段。。。

猜你喜欢

转载自blog.csdn.net/qq_34930488/article/details/79950412