点此查看 微信公众号/微信网页/微信支付/企业微信/小程序开发合集及源代码下载

本文目录

  • 1. 前言
  • 2. 构建项目
    • 2.1 构建SpringBoot项目
    • 2.2 编写配置文件
  • 2.3 编写启动类
  • 3. 验证消息来自微信
    • 3.1 获取公众号参数
    • 3.2 开发公众平台配置类
    • 3.3 验证消息方法的调用
  • 4. 小结

1. 前言

上一篇中,我们已经成功配置并启用了服务器信息,微信官方已经任何我们的服务器是合法的了。

但是这中间还有一个问题,就是我们如何能确认我们收到的消息是合法的呢,也就是说我们如何确认我们收到的消息是微信发出的而不是伪造的?

这就需要我们验证消息是否的确来自微信服务器了。

2. 构建项目

我们需要一个项目,将微信开发相关的代码放到里面。

2.1 构建SpringBoot项目

使用Maven构建一个Spring Boot项目,然后pom.xml配置如下。

需要注意的是,我们引入了weixin-java-mp,这是开源的封装好的微信JavaSDK,GitHub高星项目,我们引入该SDK可以大大提高我们的开发效率,不用从头造轮子了。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>cn.pandabrother</groupId><artifactId>wx-server</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><maven-jar-plugin.version>3.0.0</maven-jar-plugin.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency><!-- 微信公众号 --><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>4.1.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

2.2 编写配置文件

编写applicaiton.yml配置文件如下,所以我们项目从80端口启动,且访问项目的根路径为/wx-server

server:port: 80 #端口servlet:context-path: /wx-server

2.3 编写启动类

启动类编写如下,用于快速启动我们的项目:

/*** SpringBoot启动类*/
@SpringBootApplication
public class WxServerApplication {public static void main(String[] args) {SpringApplication.run(WxServerApplication.class, args);}
}

3. 验证消息来自微信

3.1 获取公众号参数

进入【基本配置】菜单,记忆以下参数,这些参数需要配置到我们的代码中。

3.2 开发公众平台配置类

开发微信公众平台配置类如下,注意需要将上图中的参数填入下面的代码中。

该类有两个用途,第一个是注册了wxMpDefaultConfigImpl组件,该组件保存微信公众平台的参数。

第二个是注册了wxMpService组件,该组件用于调用封装好的方法,例如本文需要的验证消息的方法。

/*** 微信公众平台配置*/
@Configuration
public class WxMpConfig {@Beanpublic WxMpDefaultConfigImpl wxMpDefaultConfigImpl() {WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();config.setAppId(""); // 设置微信公众号的appidconfig.setSecret(""); // 设置微信公众号的app corpSecretconfig.setToken(""); // 设置微信公众号的tokenconfig.setAesKey(""); // 设置微信公众号的EncodingAESKeyreturn config;}@Beanpublic WxMpService wxMpService() {WxMpService wxMpService = new WxMpServiceImpl();// 实际项目中请注意要保持单例,不要在每次请求时构造实例,具体可以参考demo项目wxMpService.setWxMpConfigStorage(wxMpDefaultConfigImpl());return wxMpService;}
}

3.3 验证消息方法的调用

自动注入wxMpService,然后调用其方法验证消息是否来自微信即可。

/*** 验证控制器*/
@Controller
public class CheckController {@Autowiredprivate WxMpService wxMpService;// 接入验证@RequestMapping("/checkToken")@ResponseBodypublic String checkToken(@RequestParam("signature") String signature, @RequestParam("timestamp") String timestamp, @RequestParam("nonce") String nonce, @RequestParam("echostr") String echostr) {if (!wxMpService.checkSignature(timestamp, nonce, signature)) {// 消息不合法return "消息不合法";}// 消息合法return echostr;}
}

通过调用checkSignature方法,我们就能确定消息是来自微信,而不是恶意伪装的了。如果要保证安全的话,所有来自微信的消息,都应该经过验证,而不仅仅是针对与接入验证这一种消息。

4. 小结

本文介绍了如何快速利用WxJava这一开源SDK,快速实现验证消息来自微信服务器的功能。

微信公众平台开发(5)--验证消息的确来自微信服务器相关推荐

  1. 第四章 微信公众号开发之验证消息的确来自微信服务器

    之前直接写了怎么开发,忘了写怎么知道验证消息来自微信服务器,否则无法进行开发,先来看一下官方的开发文档怎么描述的 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器 ...

  2. 微信公众号java开发:验证消息的确来自微信服务器

    微信公众号开发,微信服务需要认证服务,官方文档如下: 引入jar包如下: <dependency><groupId>com.github.binarywang</grou ...

  3. 转载收藏之用 - 微信公众平台开发教程(三):微信公众平台开发验证

    要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方 ...

  4. 微信公众号开发入门 --验证消息来自微信服务器 (java)

    第二步:验证消息的确来自微信服务器 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示: 参数 描述 signature 微信加密签名,signatu ...

  5. 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备...

    相信很多人或多或少听说了微信公众平台的火热.但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结. 所以下面给大家分享一下我的经验: 第一部分   介绍微信公众号的一些简单 ...

  6. java实现验证消息的确来自微信服务器

    java实现验证消息的确来自微信服务器 验证消息的确来自微信服务器Get方法 SHA1加密 异常处理 开发者提交信息后,微信服务器将发送 GET 请求到填写的服务器地址 URL 上 GET请求携带参数 ...

  7. 微信公众平台开发(102) 模板消息

    关键字:微信公众平台 模板消息 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/wechat-template-message.html 在这篇微信公众平台开 ...

  8. 微信公众平台开发(97) 图文消息

    在这篇微信公众平台开发教程中,我们将介绍如何灵活的使用图文消息功能.我们将只介绍被动回复消息中的图文消息,发送客服消息及高级群发消息接口的发送的图文消息与本文介绍的图文消息的各情况基本一致. 本文分为 ...

  9. 微信公众平台开发【发送消息】被动回复消息

    当用户给公众号发送消息时,需要公众号自动智能的响应相应的消息,这就是被动回复消息.发送消息的XML数据格式我们需要明白该如何写,各个参数的意义是什么,本节主要讲解发送消息中的被动回复消息.下面的内容看 ...

最新文章

  1. 关于神经网络模型的一些入门知识
  2. [数据库]简单SQL语句总结
  3. grpc_模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST
  4. python散点图拟合曲线-使用python通过点拟合曲线
  5. 定义/赋值数组、 expect预期交互
  6. 28/100. Shortest Unsorted Continuous Subarray
  7. 杭电1003 java_杭电ACM1003题怎么理解?
  8. SPOJ9534 JZPLIT - Turn on the lights(高斯消元)
  9. 数据库-MySQL-SQL语句
  10. 【版本控制】如何从github 上删除项目
  11. 开源分布式任务工作流调度系统Easy Scheduler Release 1.0.2
  12. re匹配电话号码、邮箱地址
  13. nn.Squential与nn.ModuleList区别
  14. 基于SSM的超市会员管理系统
  15. 网易2017实习生笔试6
  16. 《液晶显示器和液晶电视维修核心教程》——2.2 电容类
  17. php接口(api)
  18. 排队论 (queuing theory)推论与举例
  19. python收集参数_python收集参数
  20. 百度提供的号码归属地查询地址和返回示例

热门文章

  1. php防止重复刷新,php防止页面重复刷新
  2. Markdown 入门及语法详细指南 ★
  3. Neo4j 查询语法入门
  4. es6相关面试题:1.rest参数;2.new.target;3.object.defineProperty与Proxy的区别;4.Reflect对象作用;5.lterator迭代器;6.async
  5. 如何在鼠标右键菜单中添加自定义菜单?工效率提升一倍
  6. 于Mozilla平台的扩展开发
  7. 请选择服务器许可证文件,获取并安装许可文件 | PowerMill 2022 | Autodesk Knowledge Network...
  8. 芯片破壁者(三):光刻技术的“鬼斧”之变
  9. 产品设计体会(4014)记一次产品整合预研
  10. Android 配置引入arr报错解决