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

本文目录

  • 1. 前言
  • 2. 判断加解密方式
  • 3. 测试
  • 4. 小结

1. 前言

登录微信公众平台,点击【设置与开发】-【基本配置】-修改配置,可以看到如下图:

也就是说,微信发送到我们服务器上的消息,可以选择明文,也可以选择加密后的密文。

毫无疑问,使用明文比较简单,但是使用密文更加安全,我们还是当然是推荐使用安全模式!

本篇就来讲解下,如何使用明文模式、安全模式。

2. 判断加解密方式

可以通过encrypt_type参数判断加解密方式,如果该值为null,则是明文模式,如果该值为aes,则为当前微信公众号支持的aes加密的密文模式。

所以代码修改如下:

 @Autowiredprivate WxMpService wxMpService;@Autowiredprivate WxMpConfigStorage wxMpConfigStorage;// 消息合法性验证与消息接入@PostMapping("/checkToken")@ResponseBodypublic String checkTokenPost(HttpServletRequest request) throws IOException {System.out.println("消息合法验证");String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");if (!wxMpService.checkSignature(timestamp, nonce, signature)) {// 消息不合法return "消息不合法";}// 消息合法则继续处理// 判断加解密WxMpXmlMessage inMessage = null;String encryptType = request.getParameter("encrypt_type");if (encryptType == null) {// 明文传输的消息inMessage = WxMpXmlMessage.fromXml(request.getInputStream());} else if ("aes".equals(encryptType)) { // aes加密的消息String msgSignature = request.getParameter("msg_signature");inMessage = WxMpXmlMessage.fromEncryptedXml(request.getInputStream(), wxMpConfigStorage, timestamp, nonce, msgSignature);} else {return "不可识别的加密类型";}System.out.println(inMessage.toString()); return "";}

分析上面的代码,可以看到WxJava SDK已经封装了消息处理方法。

如果潘丹是明文模式,则直接调用 WxMpXmlMessage.fromXml(request.getInputStream());,即可得到消息对应的消息对象。

如果是安全模式,则调用WxMpXmlMessage.fromEncryptedXml完成消息的解密即可。

非常轻松

3. 测试

首先我们选择【明文模式】,然后提交,从微信公众号会话中输入我是中国人,则控制台界面打印如下,可见我们已经成功接受明文消息。

{"allFieldsMap":{"Content":"我是中国人","CreateTime":"1632884771","ToUserName":"gh_025da3703370","FromUserName":"oINiq6UqTiKqfXN3H6RmeKvvRnmw","MsgType":"text","MsgId":"23377289835356090"},"toUser":"gh_025da3703370","fromUser":"oINiq6UqTiKqfXN3H6RmeKvvRnmw","createTime":1632884771,"msgType":"text","content":"我是中国人","msgId":23377289835356090,"scanCodeInfo":{},"sendPicsInfo":{"picList":[]},"sendLocationInfo":{},"hardWare":{}}

然后将消息加解密方式改为【安全模式】,提交成功后,从会话中输入我爱中国,则控制台打印如下,可见我们的程序也可以成功接受密文消息。

{"allFieldsMap":{"Content":"我爱中国","CreateTime":"1632884867","ToUserName":"gh_025da3703370","FromUserName":"oINiq6UqTiKqfXN3H6RmeKvvRnmw","MsgType":"text","MsgId":"23377289960420417"},"toUser":"gh_025da3703370","fromUser":"oINiq6UqTiKqfXN3H6RmeKvvRnmw","createTime":1632884867,"msgType":"text","content":"我爱中国","msgId":23377289960420417,"scanCodeInfo":{},"sendPicsInfo":{"picList":[]},"sendLocationInfo":{},"hardWare":{}}

提醒一下,切换加解密方式后,需要稍等一会才能生效。

4. 小结

推进使用安全模式,安全!而且使用WxJava SDK后,解密也就多一行代码的事,不算麻烦。

微信公众平台开发(9)--消息加解密方式相关推荐

  1. php7.2微信明文加密,微信公众平台开发:消息加密

    前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项.目前企业号和公众号的加密方式是一致的(格式会有少许差别). 加密设置 进入公众号后台的"开发者中心&quo ...

  2. 通知公众平台php,微信公众平台开发模板消息

    在这篇微信公众平台开发教程中,我们将介绍如何开发模板消息,即如何用程序发送模板消息功能. 本文分为以下三个部分:申请模板消息权限 开发模板消息SDK 构造模板消息体并发送 一.申请模板消息权限 模板消 ...

  3. Java微信公众平台开发_03_消息管理之被动回复消息

    GitHub源码:https://github.com/shirayner/weixin_gz 一.本节要点 1.回调url 上一节,我们启用服务器配置的时候,填写了一个服务器地址(url),如下图, ...

  4. 微信公众平台开发 模版消息

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

  5. 微信公众平台开发模板消息php,微信平台开发模板消息(php).pdf

    目录 写在最前面 设置模板消息行业属性 设置消息模板具体API列子 行业代码查询 获取模板行业信息 获取模板行业信息具体API例子 查看行业属性信息 获取模板行业属性API例子 获取用户openID ...

  6. 微信公众平台 开发模式消息申请

    只需要在验证地址的页面里下面的内容就行. <%out.println(request.getParameter("echostr"));%>

  7. 微信公众平台开发费用其实并不高 及微信公众平台开发简单教程

    今天我一朋友问我一个技术上的问题,通过PHP cURL来请求外部接口,接口返回的是一个JSON的字符串,但如果把字符串copy下来然后赋值 给一个变量再将它json_decode是OK的不会有错,可以 ...

  8. 微信公众号生成文本到服务器,使用Golang开发微信公众平台-接收文本消息

    一旦接入验证成功,成为正式开发者,你可能会迫不及待地想通过手机微信发送一条"Hello, Wechat"到你的公众号服务器.不过上一篇的那个程序还无法处理手机提交的文本消息,本篇将 ...

  9. 微信公众平台消息储存mysql php_微信公众平台开发如何保证access

    [编者按]由CSDN和<程序员>杂志联合主办的2014年微信开发者大会将于8月23日在北京举行.内容涵盖企业服务号开发和高级应用.企业号开发.业务系统对接.高级接口运用.微信支付.智能客服 ...

最新文章

  1. Linux基础命令---znew
  2. 《C++ Primer Plus》学习笔记——C++程序创建到运行的整个过程
  3. IIS7 / IIS7.5 URL 重写 HTTP 重定向到 HTTPS(转)
  4. 新版本springboot-整合mybatis
  5. Some Essential JavaScript Questions And Answers(3)
  6. How-to-quick-getting-started-for-Frontend
  7. HMM隐马尔科夫模型浅析
  8. MEF初体验之八:过滤目录
  9. 如何使用Magit管理Git项目
  10. php获取工作日时间,ThinkPHP中获取指定日期后工作日的具体日期方法
  11. JavaSE学习总结(八)—— 异常处理(Exception)
  12. el表达式的转义字符。
  13. WIN7系统怎样增加C盘空间
  14. Nginx(一):Nginx介绍
  15. Android仿IOS有弹性ScrollView
  16. IOS开发—UIGestureRecognizer Tutorial in iOS 5: Pinch
  17. android 5.0论坛,Android 安卓5.0以下版本提权漏洞
  18. ccf中文期刊目录_37本!中国计算机学会CCF首次发布推荐中文科技期刊目录
  19. linux 内存碎片信息查看
  20. 常见分布式应用系统设计图解(十二):证券交易系统 | 极客分享第 12 期

热门文章

  1. 【ie兼容】判断ie版本跳转到指定页面下载浏览器
  2. 达梦数据库操作常见问题与解决办法
  3. POJ 4741 Save Labman No.004
  4. Python实现的深度学习技术在水文水质领域应用
  5. 大疆经纬M300RTK+P1相机实际使用情况测评
  6. 19号笔刷 ps_【精品】PS绘画19号笔刷的运用方法
  7. 波斯语输入法:Farsi 9键数字键盘 key pad中 Persian IME字母符号分配表
  8. Netty系列之Netty编解码框架分析
  9. 微信小程序 Storage API
  10. 已知均值、标准差和样本个数如何模拟一组数据?