创建下面两个文件即可

pom

     <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.11.1</version></dependency>

1.WeChatController

@RestController
@RequestMapping("/wx")
public class WeChatController extends BaseController
{//1.服务器配置@GetMapping("/check")public String checkSign(HttpServletRequest request, HttpServletResponse response) throws Exception {{try {String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");if (SignUtil.checkSignature(signature, timestamp, nonce)) {return echostr;}} catch (Exception e) {throw new Exception();}}return null;}//2.接受用户查询信息@PostMapping(value = "/check", produces = MediaType.APPLICATION_XML_VALUE)public String receiveWX(HttpServletRequest request, HttpServletResponse response) throws Exception {try {Marshaller marshaller;Unmarshaller unmarshal;//你要解析成哪个bean对象,newInstance的参数就是哪个对象JAXBContext jaxbContext = JAXBContext.newInstance(WXMessgeBean.class);unmarshal = jaxbContext.createUnmarshaller();//xml解码成bean对象WXMessgeBean wxMessgeBean = (WXMessgeBean) unmarshal.unmarshal(request.getInputStream());WXMessgeBean bean = new WXMessgeBean();//发送方openIdbean.setFromUserName(wxMessgeBean.getToUserName());bean.setToUserName(wxMessgeBean.getFromUserName());bean.setCreateTime(new Date().getTime());if ("text".equals(wxMessgeBean.getMsgType())){bean.setMsgType("text");//匹配答案bean.setContent("你好,欢迎浏览我的公众号");marshaller = jaxbContext.createMarshaller();StringWriter writer = new StringWriter();marshaller.marshal(bean,writer);return writer.toString();}else if ("image".equals(wxMessgeBean.getMsgType())){}else if("event".equals(wxMessgeBean.getMsgType())){//关注/取关if("subscribe".equals( wxMessgeBean.getEvent())){}else if("unsubscribe".equals( wxMessgeBean.getEvent())){}}} catch (Exception e) {e.printStackTrace();}return null;}}

2.SignUtil

public class SignUtil {private static String token = "123321";// 与微信公众号上的token一致,是服务器令牌(token),这里写什么。服务器就填什么/*** 校验签名** @param signature 签名* @param timestamp 时间戳* @param nonce     随机数* @return 布尔值*/public static boolean checkSignature(String signature, String timestamp, String nonce) {String checktext = null;if (null != signature) {//对ToKen,timestamp,nonce 按字典排序String[] paramArr = new String[]{token, timestamp, nonce};Arrays.sort(paramArr);//将排序后的结果拼成一个字符串String content = paramArr[0].concat(paramArr[1]).concat(paramArr[2]);try {MessageDigest md = MessageDigest.getInstance("SHA-1");//对接后的字符串进行sha1加密byte[] digest = md.digest(content.toString().getBytes());checktext = byteToStr(digest);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}//将加密后的字符串与signature进行对比return checktext != null ? checktext.equals(signature.toUpperCase()) : false;}/*** 将字节数组转化我16进制字符串** @param byteArrays 字符数组* @return 字符串*/private static String byteToStr(byte[] byteArrays) {String str = "";for (int i = 0; i < byteArrays.length; i++) {str += byteToHexStr(byteArrays[i]);}return str;}/*** 将字节转化为十六进制字符串** @param myByte 字节* @return 字符串*/private static String byteToHexStr(byte myByte) {char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};char[] tampArr = new char[2];tampArr[0] = Digit[(myByte >>> 4) & 0X0F];tampArr[1] = Digit[myByte & 0X0F];String str = new String(tampArr);return str;}
}

3.WXMessgeBean

@XmlRootElement(name="xml")
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class WXMessgeBean {private String FromUserName;private String ToUserName;private long CreateTime;private String MsgType;private String Event;private String EventKey;private String Content;private String Url;private String PicUrl;private String MediaId;private String Format;private String Recognition;private String ThumbMediaId;//地理位置private float Location_X;private float Location_Y;private float Scale;private long MsgId;
}

微信公众平台服务器配置(自动回复)相关推荐

  1. 微信公众平台的自动回复怎样设置?

    微信公众平台的自动回复一直是很多用户关注的一个重点,那它到底有什么作用?又该如何设置呢? 首先,我们来说说怎样在微信公众平台设置自动回复. 一.微信公众平台设置方法 1.打开微信公众平台,点击首页左上 ...

  2. 微信公众平台服务器配置-PHP

    本人小菜,今天下午研究了一下午,才将微信公众接口的服务器配置搞定,说实话,理论还是不是很清楚,为了方便后来人和提醒自己,特发此文.因为很多内容雷同,所以有部分内容摘自百度文档. 下面这段摘自柳大神!! ...

  3. 微信公众平台服务器配置启用说明

    在微信公众平台机型服务器配置的时候,下图中的服务必须先在服务端跑起来,后台接口使用java开发. authenticate控制器接口如下: /*** 验证只接受微信后台的服务请求* 开发者通过检验si ...

  4. 关于微信公众平台服务器配置Token

    1.打开微信公众平台 2.修改配置 3.填写服务器地址(URL) -------------域名或者ip地址加验证token接口,路径 例如:http://xxxxxx.cn/api/wx/token ...

  5. 微信公众平台服务器配置时token验证失败

    这两天一直在弄微信公众号开发,在进行服务器配置时,发现总是返回token验证失败.这个问题困扰了两天,今天终于解决了.现在总结一下. 一般来说服务器配置token验证失败,可能有以下几个方面: 1.服 ...

  6. 一分钟了解微信公众号服务器配置自动回复

    1.建一个web服务工程 2.开放任意一个接口,  比如   /aaa/bbb/ccc 把接口路径配置在这里,ip为公网ip或域名,其他的参数默认,对入门选手没啥用 3.该接口允许get和post两种 ...

  7. 微信公众号自动回复服务器数据,[终极方案]解决微信公众号服务器配置启用后无法自动回...

    在配置服务器配置时Token验证通过后,遇到给公众号发信息,提示:提示该公众号提供的服务出现故障,请稍后再试 的问题,一直实现不了自动回复的功能.百度了大量的资料,参考了开发文档,尝试了n种办法,检查 ...

  8. php微信回复乱码,php版微信公众平台回复中文出现乱码问题的解决方法

    本文实例分析了php版微信公众平台回复中文出现乱码问题的解决方法.分享给大家供大家参考,具体如下: 微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决 ...

  9. php微信回复乱码,php版本微信公众平台回复乱码问题解决方法

    微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决了,具体来看看. 很多微信公众平台的自动回复程序都是 ThinkWechat.class.php 这 ...

最新文章

  1. 李国杰院士等:未来移动通信系统中的通信与计算融合
  2. 最近用unity5弄的一些渲染
  3. [云炬ThinkPython阅读笔记]2.3 表达式和语句
  4. Spring 4.2中由注释驱动的事件侦听器
  5. pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问(已解决)
  6. tensflower官方测试案例_Storm自带测试案例的运行
  7. SAP License:你适合做SAP顾问吗?
  8. Linux系统启动流程图
  9. unity: GetLocalizedString can only be called from the main thread 异常解决
  10. 水系图一般在哪里找得到_进展 | 水系钾离子电池研究取得重要进展
  11. 数字化工厂建设方案探讨
  12. 我的世界服务器皮肤文件在哪里,我的世界皮肤展开文件,皮肤站皮肤保存在哪个文件夹...
  13. Python学习week3
  14. 袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座
  15. 房屋安全鉴定的建筑结构检测技术
  16. 这五个姓氏你根本没见过,第三个甚至难以启齿
  17. Libevent教程001: 简介与配置
  18. Flashback 技术
  19. 【java-日志组件】slf4j+logback配置及详解
  20. 无锁实现线程间共享数据

热门文章

  1. cellpadding和cellspacing的区别
  2. r语言与多维统计_Kaukatcr:多维空间语言设计的实验
  3. 用C++编写的木马程序
  4. 【成功解决】‘nvidia‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
  5. Outlook如何定时发邮件
  6. Chrome和Edge浏览器越用越卡的解决方案
  7. ERP实施方法论的比较
  8. ContactsContract.Contacts之sort_key
  9. 开展等级保护的目的是什么?
  10. Omi NTFS磁盘专家 for Mac - Mac磁盘读写工具