1.微信验证接口

  1. package com.park.utils.wechatUtil;
  2.  
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.bind.annotation.RestController;
  6.  
  7. import javax.servlet.http.HttpServletRequest;
  8.  
  9. @RestController
  10. @RequestMapping(value = "/wechat")
  11. public class tokenVerify {
  12.  
  13. @RequestMapping(value = "/tokenVerify",method = RequestMethod.GET)
  14. public String tokenVerify(HttpServletRequest request){
  15. String signature = request.getParameter("signature");
  16. String timestamp = request.getParameter("timestamp");
  17. String nonce = request.getParameter("nonce");
  18. String echostr = request.getParameter("echostr");
  19.  
  20. Boolean isVerify = SignUtil.checkSignature(signature,timestamp,nonce);
  21.  
  22. if(isVerify){
  23. return echostr;
  24. }else {
  25. return "VerifyFail";
  26. }
  27.  
  28. }
  29.  
  30. }

2.判断工具类

  1. package com.park.utils.wechatUtil;
  2.  
  3. import java.security.MessageDigest;
  4. import java.util.Arrays;
  5.  
  6. public class SignUtil {
  7. private static String token = "weixin";
  8.  
  9. public static boolean checkSignature(String signature, String timestamp, String nonce) {
  10. boolean result = false;
  11.  
  12. // 对token、timestamp和nonce按字典序排序
  13. String[] array = new String[]{token, timestamp, nonce};
  14. Arrays.sort(array);
  15.  
  16. // 将三个参数字符拼接成一个字符串
  17. String str = array[0].concat(array[1]).concat(array[2]);
  18.  
  19. String sha1Str = null;
  20. try {
  21. // 对拼接后的字符串进行sha1加密
  22. MessageDigest md = MessageDigest.getInstance("SHA-1");
  23. byte[] digest = md.digest(str.getBytes());
  24. sha1Str = byte2str(digest);
  25. }
  26. catch(Exception e) {
  27. }
  28.  
  29. if(sha1Str != null && sha1Str.equals(signature)) {
  30. result = true;
  31. }
  32.  
  33. return result;
  34. }
  35.  
  36. /*
  37. * 将字节数组转换成字符串
  38. */
  39. public static String byte2str(byte[] array) {
  40. StringBuffer hexstr = new StringBuffer();
  41. String shaHex="";
  42. for(int i = 0; i < array.length; i++) {
  43. shaHex = Integer.toHexString(array[i] & 0xFF);
  44. if(shaHex.length() < 2) {
  45. hexstr.append(0);
  46. }
  47. hexstr.append(shaHex);
  48. }
  49. return hexstr.toString();
  50. }
  51. }

java微信token校验的更多相关文章

  1. Java微信公众平台开发_02_启用服务器配置

    源码将在晚上上传到 github 一.准备阶段 需要准备事项: 1.一个能在公网上访问的项目: 见:[  Java微信公众平台开发_01_本地服务器映射外网  ] 2.一个微信公众平台账号: 去注册: ...

  2. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  3. Java微信二次开发(一)

    准备用Java做一个微信二次开发项目,把流程写在这里吧. 第一天,做微信请求验证 需要导入库:servlet-api.jar 第一步:新建包com.wtz.service,新建类LoginServle ...

  4. Java微信公众平台开发_03_消息管理之被动回复消息

    GitHub源码:https://github.com/shirayner/weixin_gz 一.本节要点 1.回调url 上一节,我们启用服务器配置的时候,填写了一个服务器地址(url),如下图, ...

  5. Java微信公众号开发梳理

    Java微信公众号开发梳理 现在微信公众平台的开发已经越来越普遍,这次开发需要用到微信公众平台.因此做一个简单的记录,也算是给那些没踩过坑的童鞋一些启示吧.我将分几块来简单的描述一下,之后会做详细的说 ...

  6. 微信token验证失败的解决方法

    一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定配置没有问题,请按下面的方法检 ...

  7. java微信开发框架wechat4j入门教程

    wechat4j What is wechat4j? wechat develop framework for java(微信开发框架JAVA版,最简单易用微信开发框架) wechat4j可以用来干什 ...

  8. java微信接口之五—消息分组群发

    一.微信消息分组群发接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_t ...

  9. java微信接口之四—上传素材

    一.微信上传素材接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=A ...

随机推荐

  1. 一行代码加快pandas计算速度

    一行代码加快pandas计算速度 DASK https://blog.csdn.net/sinat_38682860/article/details/84844964 https://cloud.te ...

  2. C语言学习笔记10-结构体、枚举、联合体

    C语言学习笔记10-结构体.枚举.联合体    待传

  3. EditPlus 中添加 Win32 ASM 语法支持

    将以下内容保存为 Win32Asm.stx:然后选“工具”.“配置用户工具”.“设置与语法”.“添加”. “描述”=Win32Asm.“扩展名”=asm .”语法文件”选存入之文件,确定即可. #TI ...

  4. Mybatis 批量操作-删除、修改和查询

          批量操作的核心就是一次传入多个数据然后进行相关操作,增删改查中掌握其中一个,其它的就可以举一反三,触类旁通.它之所以执行效率高,是因为合并后日志量(MySQL的binlog和InnoDB的 ...

  5. spring-boot 定时任务需要注意的地方

    spring-boot 跑定时任务非常容易 启动类上添加两个注解基本OK @EnableScheduling @EnableAsync 当然要记录的肯定不是这里的问题了 首先, fixedDelayf ...

  6. 5.3.4 Hadoop序列化框架

    序列化框架 除了writable实现序列化之外,只要实现让类型和二进制流相互转换,都可以作为hadoop的序列化类型,为此Hadoop提供了一个序列化框架接口,他们在org.apache.hadoop ...

  7. Eclipse生成EXE文件(可视化Login/读取文件)

    Java Swing实现文件的简单读取 WindowBuilder的安装与使用 如何采用java设置一个登陆界面 package jp.services.slink2.batch.so2or; imp ...

  8. Maven的安装和配置(Windows 10)

    1. 官网下载Maven管理工具 官网:https://maven.apache.org/download.cgi 系统要求: JDK:Maven 3.3以上需要JDK 1.7以上版本支持 Memor ...

  9. tomcat单机多实例

    catalina.home指向公用信息的位置,就是bin和lib的父目录. catalina.base指向每个Tomcat目录私有信息的位置,就是conf.logs.temp.webapps和work ...

  10. PHP学习之观察者模式

    <?php //观察者模式涉及到两个类 //男人类 和女朋友类 //男人类对象小明, 女朋友类对象小花.小丽 class Man { //用了存放观察者 protected $observers ...