当前位置: 首页 > news >正文

微信扫码登陆 —— 接收消息

官方参数示例:

参数分为:param 形式 和 body形式(xml),上面参数和 现实调用也有差距!!

@PostMapping(value = "/receive", consumes = MediaType.TEXT_XML_VALUE)
@Operation(summary = "21 消息接受接口")
@ApiOperationSupport(order = 21)
public void receive(WechatReceiveParam param, @RequestBody WechatReceiveBody body) {log.info("消息接受接口,参数:{},body:{}", JSONUtil.toJsonStr(param), JSONUtil.toJsonStr(body));wechatMpService.receive(param, body);
}

param参数

@Data
public class WechatReceiveParam {/*** 微信加密签名*/private String signature;/*** 时间戳*/private String timestamp;/*** 随机数*/private String nonce;/*** 微信用户id*/private String openid;/*** 加密类型*/private String encrypt_type;/*** 消息签名*/private String msg_signature;}

body参数

需引入解析xml

<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.19.2</version>
</dependency>
@Data
@EqualsAndHashCode(callSuper = true)
@JacksonXmlRootElement(localName = "xml")
public class WechatReceiveBody extends WechatMsgInfo {/*** 密文:安全模式下,会把父类字段放在加密消息中*/@JacksonXmlProperty(localName = "Encrypt")private String encrypt;}
@Data
@JacksonXmlRootElement(localName = "xml")
public class WechatMsgInfo {/*** 接收者*/@JacksonXmlProperty(localName = "ToUserName")private String toUserName;/*** 发送者*/@JacksonXmlProperty(localName = "FromUserName")private String fromUserName;/*** 时间戳*/@JacksonXmlProperty(localName = "CreateTime")private String createTime;/*** 消息类型:普通消息 和 事件(关注,取消关注,扫码 等)*/@JacksonXmlProperty(localName = "MsgType")private String msgType;/*** 消息内容*/@JacksonXmlProperty(localName = "Content")private String content;/*** 消息id*/@JacksonXmlProperty(localName = "MsgId")private String msgId;/*** 订阅:subscribe,取消订阅:unsubscribe,。。。*/@JacksonXmlProperty(localName = "Event")private String event;@JacksonXmlProperty(localName = "EventKey")private String eventKey;}

http://www.dtcms.com/a/344192.html

相关文章:

  • 关于日本服务器的三种线路讲解
  • 【Day01】堆与字符串处理算法详解
  • SHA 系列算法教程
  • C++ STL 中算法与具体数据结构分离的原理
  • Apache HTTP Server:深入探索Web世界的磐石基石!!!
  • SSM从入门到实战:2.5 SQL映射文件与动态SQL
  • C#中的LOCK
  • 关于 WebDriver Manager (自动管理浏览器驱动)
  • 第二阶段Winform-4:MDI窗口,布局控件,分页
  • 3.4 缩略词抽取
  • 企业级 AI 智能体安全落地指南:从攻击面分析到纵深防御体系构建
  • FileCodeBox 文件快递柜 一键部署
  • 获取后台返回的错误码
  • 如何使用命令行将DOCX文档转换为PDF格式?
  • Linux应用软件编程---网络编程1(目的、网络协议、网络配置、UDP编程流程)
  • Matplotlib 可视化大师系列(八):综合篇 - 在一张图中组合多种图表类型
  • 2.4G和5G位图说明列表,0xff也只是1-8号信道而已
  • QT QImage 判断图像无效
  • 高通平台WIFI学习-- 基于高通基线如何替换移植英飞凌WIFI芯片代码
  • mysql编程(简单了解)
  • 【Android】include复用布局 在xml中静态添加Fragment
  • 计数组合学7.20(平面分拆与RSK算法)
  • [测试技术] 接口测试中如何高效开展幂等性测试
  • pthon实现bilibili缓存视频音频分离
  • Redis内存碎片深度解析:成因、检测与治理实战指南
  • K8s存储类(StorageClass)设计与Ceph集成实战
  • 为什么应用会突然耗尽所有数据库连接
  • 智慧清洁时代来临:有鹿机器人重新定义城市清洁标准
  • 【数据结构】B 树——高度近似可”独木成林“的榕树——详细解说与其 C 代码实现
  • python selenium+pytest webUI自动化基础框架