当前位置: 首页 > 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.xdnf.cn/news/1344421.html

相关文章:

  • 复合设计模式
  • 加密货币与区块链:六大刑事重灾区
  • 深入理解 Spring Boot Starter:简化依赖管理与自动配置的利器
  • 110、【OS】【Nuttx】【周边】效果呈现方案解析:查找最新构建件
  • 深入理解 hash -r:解决 Linux 命令缓存难题的关键密钥
  • 自定义rabbitmq的ConnectionFactory配置
  • RabbitMQ深度剖析:从基础到高级进阶实战
  • 乐迪信息:AI摄像机+刮板机人员入侵检测:杜绝井下安全事故
  • 爬虫基础学习-配置代理、以及项目实践
  • 关于爬虫的基本步骤说明【爬虫七步骤】
  • jenkins实现分布式构建并自动发布到远程服务器上 jenkins实现自动打包编译发布远程服务器
  • Laravel分布式全链路追踪实战
  • 【机器学习深度学习】LMDeploy的分布式推理实现
  • selenium爬虫
  • 布隆过滤器:用微小的空间代价换取高效的“可能存在”判定
  • TCP/UDP详解(一)
  • 微服务的编程测评系统14-C端题目列表功能-个人中心
  • Redis面试精讲 Day 27:Redis 7.0/8.0新特性深度解析
  • 高通Camx相机dump yuv和raw图的抓取方式和查看
  • 【iOS】YYModel第三方库源码
  • 笔试——Day46
  • 恢复性测试:定义、重要性及实施方法
  • 深入解析CNAME记录:域名管理的隐形枢纽
  • 几个element-plus的UI,及环境配置
  • 三格电子——ModbusTCP 转 Profinet 主站网关应用实例
  • 【TrOCR】根据任务特性设计词表vocab.json
  • RabbitMQ面试精讲 Day 27:常见故障排查与分析
  • 【数据结构C语言】顺序表
  • 四十一、【高级特性篇】API 文档驱动:OpenAPI/Swagger 一键导入测试用例
  • Design Compiler:层次模型(Block Abstraction)的简介