接收微信公众号的事件推送并且回复消息

微信公众号回调我们配置的服务器url

    • 配置公众号回调地址
    • 新建配置URL的接口
    • XML转java Bean工具类
    • 演示

配置公众号回调地址

URL配置微信会验证此地址,直接返回微信的echostr参数即可。
这里是用的测试环境,正式环境的话会提示:
是否确定开启服务器配置?
请注意:开启后,用户发送的消息将自动转发到该配置地址,并且在网站中设置的自动回复和自定义菜单将失效。也可使用微信云托管免服务器免鉴权接收用户消息及开发者事件推送。
在这里插入图片描述

/*** 微信服务器触发get请求用于检测签名*/@GetMapping("/handleWxCheckSignature")@ResponseBodypublic String handlewxCheckSignature(HttpServletRequest request){// 获取微信请求参数String signature = request.getParameter ("signature");String timestamp = request.getParameter ("timestamp");String nonce = request.getParameter ("nonce");String echostr = request.getParameter ("echostr");log.info("开始校验此次消息是否来自微信服务器,param->signature:{},\ntimestamp:{},\nnonce:{},\nechostr:{}",signature, timestamp, nonce, echostr);if (CheckWXTokenUtil.checkSignature(signature, timestamp, nonce)) {return echostr;}return "";}

新建配置URL的接口

接口的访问地址要和配置的URL一致,注意是post请求

@RequestMapping(value = "/handleWxCheckSignature", method = RequestMethod.POST)@ResponseBodypublic String wechatEvent(@RequestBody String param) {log.error("--------------------接收微信推送事件-----------------------");try {log.info(param);WxEventPush testDemo = JaxbUtil.converyToJavaBean(param, WxEventPush.class);log.info(testDemo.toString());//回复消息testDemo.setContent("欢迎使用柳城智慧招商平台!");String xmlString = getXmlString(testDemo);log.info(xmlString);return xmlString;} catch (Exception e) {e.printStackTrace();}return null;}

封装XML返回给微信,微信接收到XML,就会根据XML的值发送响应的消息

public String getXmlString(WxEventPush eventPush) {String xml = "";if (eventPush != null) {xml = "<xml>";xml += "<ToUserName><![CDATA[";xml += eventPush.getToUserName();xml += "]]></ToUserName>";xml += "<FromUserName><![CDATA[";xml += eventPush.getFromUserName();xml += "]]></FromUserName>";xml += "<CreateTime>";xml += eventPush.getCreateTime();xml += "</CreateTime>";xml += "<MsgType><![CDATA[";xml += eventPush.getMsgType();xml += "]]></MsgType>";xml += "<Content><![CDATA[";xml += eventPush.getContent();xml += "]]></Content>";xml += "</xml>";}return xml;}

注意:微信回调的是XML参数,所以实体类要接收XML类型

package vo;import lombok.Data;import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;/*** @explain: 接收微信消息推送的实体类*/
@Data
@XmlRootElement(name="xml")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "xml", propOrder = { "ToUserName", "FromUserName", "MsgType", "Event","CreateTime", "EventKey", "Ticket", "Content","MsgId" })
public class WxEventPush {/*** 开发者微信号*/private String ToUserName;/*** 发送方帐号(一个OpenID)*/private String FromUserName ;/*** 消息类型 event(关注/取消关注事件)*/private String MsgType  ;/*** 事件类型,subscribe(订阅)、unsubscribe(取消订阅)*/private String Event   ;/*** 消息创建时间 (整型)时间戳*/private Long CreateTime   ;/*** 事件 KEY 值,qrscene_为前缀,后面为二维码的参数值*/private String EventKey   ;/*** 二维码的ticket,可用来换取二维码图片*/private String Ticket   ;/*** 接收到的消息内容*/private String Content   ;/*** 消息id*/private String MsgId   ;}

XML转java Bean工具类

package util;import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;/*** @author : wangchao* @date : 2023/2/15 11:41* @explain:*/
public class JaxbUtil {/*** xml装换成JavaBean** @param xml* @param c* @return*/@SuppressWarnings("unchecked")public static <T> T converyToJavaBean(String xml, Class<T> c) {T t = null;try {JAXBContext context = JAXBContext.newInstance(c);Unmarshaller unmarshaller = context.createUnmarshaller();t = (T) unmarshaller.unmarshal(new StringReader(xml));} catch (Exception e) {e.printStackTrace();}return t;}}

演示

扫码关注,退订,给公众号发送消息,微信都会调用配置的URL,根据微信不同的参数去做业务区分,返回不同的XML就能让微信公众号做不同的操作。
详情请看微信公众号官方文档:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58628.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信公众号实现回复图文消息

目录 参数说明 通过微信官方的消息接口指南&#xff0c;可以看到对图文消息的参数介绍&#xff0c;如下图所示&#xff1a; 从上图可以了解到&#xff1a; 请求消息的基类 图文消息类 图文消息中的Articles类 图文消息中的ArticlesItem类 service层实现方法 封装方法 …

带大家写一波微信公众号的爬取

开发工具 python版本 &#xff1a; 3.6.4 相关模块&#xff1a; pdfkit模块&#xff1b; requests模块&#xff1b; 以及一些Python自带的模块。 抓包工具&#xff1a; fiddler 环境搭建 python 环境 安装Python并添加到环境变量&#xff0c;pip安装需要的相关模块即可。fiddl…

微信公众号开发之关键词回复

微信公众号开发详细教程 公众号的关键词回复是一个最基本的功能&#xff0c;大部分的关键词回复可以在授权的第三方平台(微微校、腾讯微校等)去进行管理&#xff0c;配置开发服务器之后&#xff0c;微信平台的自动回复和自定义菜单会失效&#xff0c;而在开发服务器里面管理这…

外汇天眼:使用 MT4 进行交易的最佳方式

在外汇交易方面&#xff0c;MT4是最受欢迎的软件之一。它提供了广泛的功能和工具&#xff0c;可用于进行有利可图的交易。 在本文中&#xff0c;我们将熟悉 Metatrader 4&#xff0c;并了解一些使用它进行交易的最佳方式。 让我们从基础开始。 Metatrader 4 基础知识 Metatr…

期货从入门到高深之手动交易---软件的使用2

上期说了新手如何选择期货交易软件&#xff0c;这集来说说软件的使用规则 首先我们找到你所开户的期货公司官网在其下载栏里下载 例如 一般来说&#xff0c;你在哪家开的户&#xff0c;软件下载好了之后直接会显示这家期货公司的坐席号&#xff0c;如下图所示 接着进入界面&a…

期货开户加一分高交返靠谱吗?

接下来讲讲手续费的标准。目前对于新人来说期货公司的选择确实有一些复杂&#xff0c;交易者可以经过对比选择最适合自己的期货公司&#xff0c;对比一下手续费。 一、手续费加一分 期货手续费交易所手续费期货公司佣金 交易所手续费是固定不变的&#xff0c;是交易所直接收…

正大国际期货:如何提升外盘恒指交易技巧?

一、心态的调整 首要最难做到的是心态的调整。人的情绪是多变的&#xff0c;如果你没有一颗平静的心&#xff0c;在这个行业成功的几率很小。赚钱不骄傲&#xff0c;亏钱不沮丧&#xff0c;没有人能完全地做到&#xff0c;但是我们要尽量去做到。赚钱不必欣喜若狂&#xff0c;…

正大国际期货:恒指操作技巧之交易中五种绝佳的开仓思路分析

很多人总是亏损&#xff0c;其实最重要的原因之一是没有一个优势的概率系统&#xff0c;正大IxxxuanI经过了解之后&#xff0c;对目前市面上概率系统进行总结&#xff0c;现将以下几种优势的概率系统归纳罗列如下&#xff0c;有缘者定可举一反三&#xff0c;或可为你细化和改良…

想炒期货是如何开户的?

随着互联网时代的到来&#xff0c;如今95%的期货交易者都采用网上开户&#xff0c;可以在网上找到更优质的期货公司进行开户&#xff0c;一般开户使用手机或者电脑开户都可以&#xff0c;实际开户中用手机的可能要多一些。 那这里可能没有做过的会有疑问&#xff0c;为什么不是…

三种最常用的期货交易系统,99%的人都不知道

作为一个有多年交易经验的期货交易者&#xff0c;我发现大部分的交易者竟然一直在用错误的交易理念去做交易。当然&#xff0c;在做交易初期&#xff0c;我也是一样。只不过我后来找到了对的路。坦白说&#xff0c;我找到正确的交易系统&#xff0c;并不是因为我聪明&#xff0…

chatgpt赋能python:Python怎么做选择题?

Python怎么做选择题&#xff1f; 作为一种最广泛使用的编程语言之一&#xff0c;Python被广泛应用于数据科学、机器学习、人工智能、Web开发等领域&#xff0c;而我们今天要聚焦的是Python如何实现选择题的功能。 选择题是什么&#xff1f; 选择题是一种常见的考试题型&…

保姆级教程:Spring Cloud 集成 Seata 分布式事务

点击关注公众号&#xff0c;Java干货及时送达&#x1f447; 环境搭建 Nacos搭建 最新版本快速搭建 使用Mysql模式 Nacos直接启动即可。控制台默认账号密码是nacos/nacos&#xff0c;Mysql账户密码有两个 root/root 和 nacos/nacos。 Seata搭建 Seata版本1.5.0 快速搭建 Seata1.…

《AI绘画工具保姆级指南手册--以Midjourney为例【含国内中文版】》

大家下午好&#xff0c;近期陆陆续续有很多饱子私信我&#xff0c;表达出非常热切的心情&#xff0c;想要学习关于AIGC领域的AI绘画&#xff0c;毕竟AI绘画工具真的很火&#xff1b;这是前一阵给大家分享了《AIGC之文本生成指南手册 --以ChatGPT为例》&#xff0c;感兴趣饱子可…

Ai口播几天涨粉20w项目拆解(保姆级教程)

这几天看老妈在刷某音&#xff0c;看到她总是刷到一些小朋友的视频。声音很可爱&#xff0c;凑过去一看原来是一个小和尚在说一些祝福话。仔细一看其实是一个Ai人物在口播。然后到某书上一搜索。好家伙&#xff01;整屏幕都是。而且不乏一二十万粉丝账号的。每个账号发布的视频…

史上最详细使用copliot AI保姆级教程来了

目录 概述 第一步:注册 第二步:使用 第三步:copliot基本用法 第四步:copliot成功案列 概述 Copilot 是一款由 OpenAI 推出的人工智能代码自动补全AI工具&#xff0c;它可以帮助程序员更快、更准确地编写代码。Copilot 的核心技术基于 GPT-3 模型&#xff0c;但是在编码方…

公司入职一个阿里大佬,把SpringBoot项目启动从420秒优化到了40秒!

大家好&#xff0c;我是老赵 0.背景 公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢&#xff0c;常常需要6-7分钟才能暴露端口&#xff0c;严重降低开发效率。通过 SpringBoot 的 SpringApplicationRunListener 、BeanPostProcessor 原理和源码调试等手段排查发…

SpringBoot 统一功能处理

大家好&#xff0c;我是老赵 前言 接下来是 Spring Boot 统⼀功能处理模块了&#xff0c;也是 AOP 的实战环节&#xff0c;要实现的课程⽬标有以下 3 个&#xff1a; 统⼀⽤户登录权限验证统⼀数据格式返回统⼀异常处理 接下我们⼀个⼀个来看。 一、用户登录权限效验 ⽤户登录权…

目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块

>>>深度学习Tricks&#xff0c;第一时间送达<<< 论文题目&#xff1a;《GhostNet&#xff1a;More Features from Cheap Operations》论文地址&#xff1a; https://arxiv.org/pdf/1911.11907v1.pdf 由于内存和计算资源有限&#xff0c;在嵌入式设备上部署…

苹果最新动态 苹果推送 iOS 14 正式版发布

苹果发布会此次虽然没有公布新手机&#xff0c;预计是在国庆期间吧&#xff0c;不过发布会上还是公布了一些信息&#xff0c;下面给大家整理下苹果的最新动态&#xff0c;一起来看看&#xff01; 苹果推送 iOS 14 正式版 9 月 17 日&#xff0c;苹果正式推送了 iOS 14、iPadOS…