在记录之前先先吐槽一下公众平台的文档和demo吧,腾讯这么大个公司写的文档还是认真点嘛,对新手是真的不友好,里面的坑太多了。
1、首先是配置服务器的坑

文档上说开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,然后将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
示例代码就已经跟文档描述不符了,有些php代码的$不见了,然后排序也是只有两个参数进行排序,这样写不是误导别人嘛。
然后下载他的demo,我因为用的java进行开发,所以这里只说java的demo。

如图所示,demo上的sha1加密是传的四个参数进行加密。然后问题来了,文档示例写的是用两个参数,文档写的是用三个参数,demo写的是用四个参数,那么到底是用几个参数呢??(辣么大个公司做个东西就不能严谨点么)
经过试验,把getSHA1这个方法重载一下,把encrypt这个参数去掉重新再写个三个参数的方法进行排序加密就能完成URL验证了。(注意不要把直接把getSHA1这个方法改了,复制一下重新写一个方法,以后有个坑还会用到这个)。
2、然后第二个坑来了
验证完URL,服务器配置完毕过后该对公众号进行对接了吧?下面还有个坑等着你呢。因为选了安全模式就是为了服务器能更安全嘛,所以对接口获取的消息来源也得验证一下吧?但是呢!这里的验证跟配服务器时的验证是不一样的,这里用的是四个参数!(就是上面那个getSHA1那四个),公众平台的文档压根就没写安全模式的签名怎么验证,一般人都会以为跟配置服务器的验证一样,我也在这困了大半天之后发现了微信另外一个文档!
微信开放平台里面的开发资源文档,里面详细记录了安全模式加解密的过程。没想到一个平台的功能还得去另外一个平台看文档,我服气的好吧,不知道有多少人被这坑过。
微信开放平台文档链接

再如上图所示,这里表明了事件推送的验证签名是需要四个参数的。
直接用这个方法就行了,我开始配置服务器时没看懂这个方法,以为微信写错了,没想到是demo调用错了,明明是事件推送的加密方法,验证URL调用这个方法干嘛???
行了,吐槽就到这,微信开放平台上的文档写得很清楚,其他的我就不说了。其实这些问题的根源就在于公众平台的文档描述不清楚,直接写清楚配置安全模式要去看另外一个文档不行吗。就不会费这么多事。

微信公众平台安全模式URL签名验证相关推荐

  1. 微信公众平台配置——URL、Token和JS安全域名

    无论是正式的微信公众号还是测试账号,都需要配置URL和Token,用于验证服务器是否配置正确,如下图. 图中的URL除了包括协议.域名,还需要具体的接口路径,比如这里就是"/wx/enter ...

  2. 微信php签名验证_微信公众平台安全模式消息体签名及加解密PHP代码示例

    从微信官网下载示例代码,把下面代码覆盖demo.php即可,如有疑惑欢迎私密. /* 椰子园 http://www.yeziyuan.com email coconutgarden@sina.com ...

  3. 微信公众平台安全模式消息体签名及加解密PHP代码示例

    从微信官网下载示例代码,把下面代码覆盖demo.php即可,如有疑惑欢迎私密. <?php /*椰子园 http://www.yeziyuan.comemail coconutgarden@si ...

  4. 微信公众平台PHP开发

    最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的-     今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程:     说的通俗一些,用户使用微信发送消息 -&g ...

  5. 公众平台 php,微信公众平台PHP开发(转载)

    最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据 ...

  6. 公众平台 php,微信公众平台PHP开发

    最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据 ...

  7. 基于php的微信公众平台开发入门实例

    作者:zbtree 这篇文章主要介绍了基于php的微信公众平台开发入门,实例分析了微信公众平台从注册.配置方法及接口代码的实现技巧,深入浅出.希望可以帮助大家快速入门. CSDN学院开设了系列直播&l ...

  8. 微信公众平台开发过程

    今天来分享一下开发经验,大家可以看看效果,哈哈 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并 ...

  9. 微信公众平台PHP开发(转载)

    最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的-     今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程:     说的通俗一些,用户使用微信发送消息 -&g ...

最新文章

  1. 使用intellij idea制作可执行jar文件
  2. python多久更新一次_Python Tkinter,每秒钟更新一次
  3. MySQL(七)关于MySQL不同版本下临键锁锁定范围不同
  4. 事务流程java怎么实现_使用队列和事务实现采集数据实例流程
  5. [ZZ] 使用rsync来实现快速删除大量文件
  6. MySQL 读写分离 使用驱动com.mysql.jdbc.ReplicationDriver
  7. Ubuntu server中静态IP配置
  8. UIActionSheet的最后一项点击失效
  9. 【easy!】LeetCode 14. Longest Common Prefix
  10. Docker网络解决方案-Weave部署记录
  11. Gstreamer加载插件原理(二十五)
  12. 电脑硬件知识大扫盲:主板知识大全
  13. 使用插件导入Excel表到数据库
  14. JavaScript基础教程之flag的用法
  15. FPGA学习: Verilog刷题记录(16)
  16. 【7】OPencv骨架细化算法
  17. ESP32-CAM MicroPython配新板出现的PSRAM问题
  18. 初读《设计模式之禅》
  19. ApplePay对接java后台详细代码
  20. linux安全(1)

热门文章

  1. unity快速开发问答游戏(二)
  2. Ubuntu16.04 在自编译的qt4.8.5界面程序在编译运行后无法显示中文
  3. Pytest-html 报告内中文方法标题乱码
  4. 【毕业设计】大数据北京二手房数据分析与可视化 - python 数据挖掘
  5. 云技术研讨会— 乘员舱热舒适度和车辆能量管理
  6. 高分辨轨道阱液质联用质谱仪-HFX
  7. python——魔术方法
  8. 主板开机电路故障的维修实例
  9. 解决win11蓝牙开关不显示问题,没有更新蓝牙驱动
  10. display:-webkit-flex;