发表于: 2017-11-28 23:18:43

1 661


今天完成的任务:

一、完成了微信接入。

接着昨天,接入微信的步骤有三个:这是官网的文档

这里主要就是url的填写,这个url是需要判断的,点击提交之后就会给url发送一个请求,获取一个响应用来验证是不是正确的验证。

所以要做的就是写一个方法,按照要求,

1先将三个参数进行字典排序

public class AddString {

   public static String sort(String token ,String timestamp,String nonce){

       String[] str={token,timestamp,nonce};
       Arrays.sort(str);
       StringBuilder sb=new StringBuilder();
       for (String list:str){
       sb.append(list);
       }
       return sb.toString();
   }
}

2然后使用sha1加密,

public class Shal {

   public static String sha1(String str) {
       try {
           MessageDigest digest = MessageDigest.getInstance("SHA-1");
           digest.update(str.getBytes());
           byte messageDigest[] = digest.digest();
           // Create Hex String
           StringBuffer hexString = new StringBuffer();
           // 字节数组转换为 十六进制 数
           for (int i = 0; i < messageDigest.length; i++) {
               String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
               if (shaHex.length() < 2) {
                   hexString.append(0);
               }
               hexString.append(shaHex);
           }
           return hexString.toString();

       } catch (NoSuchAlgorithmException e) {
           e.printStackTrace();
       }
       return "";
   }
}

3去对比加密后的字符串和signature是不是匹配的,如果是匹配的话,那就返回一个echostr,

@Controller
public class wexin {
   private final String TOKEN = "chenhao";
   private static Logger logger = Logger.getLogger(wexin.class);

   @RequestMapping(value = "/check",method = RequestMethod.GET)
   public void wechatGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
       String signature = request.getParameter("signature");//微信加密签名signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
       String timestamp = request.getParameter("timestamp");//时间戳
       String nonce = request.getParameter("nonce");//随机数
       String echostr = request.getParameter("echostr");//随机字符串
       //拼接
       String sortString = AddString.sort(TOKEN, timestamp, nonce);
       //加密
       String mySignature = Shal.sha1(sortString);
       //校验签名,通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
       if (mySignature != null && mySignature != "" && mySignature.equals(signature)) {
           //如果检验成功输出echostr,微信服务器接收到此输出,才会确认检验完成。
           response.getWriter().println(echostr);
       } else {
           logger.info("签名不通过");
       }

   }

}

这里判断完了之后一定要返回echostr才可以接入成功。

这样就可以接入微信了。


参考:

https://www.cnblogs.com/xdp-gacl/p/5151857.html

http://blog.csdn.net/u013239111/article/category/6120446




明天计划:

明天学习微信怎么自定义菜单。


遇到问题:

接入微信写代码的时候出了点小问题。解决了。

项目方案评审还遥遥无期。。

收获:

微信接入了吧,了解了一点微信的知识。


返回列表 返回列表
评论

    分享到