微信接口开发之验证消息真实性

首先到开发者中心启用服务器配置,填写好URL和Token,后面就是写代码了。

在我们首次提交验证申请时,微信服务器将发送GET请求到填写的URL上,并且带上四个参数(signature、timestamp、nonce、echostr),通过对签名(即signature)的效验,来判断此条消息的真实性。此后,每次接收用户消息的时候,微信也都会带上这三个参数(signature、timestamp、nonce)访问我们设置的URL,和第一次相同我们依然需要通过对签名的效验判断此条消息的真实性。效验方式与首次提交验证申请一致。

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

通过检验signature对请求进行校验(代码在下面提供)。若确认此次GET请求来自微信服务器,则原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 将加密后的字符串与signature对比,标识该请求来源于微信

详细代码如下:

function checkSignature($token) {
	$signature = $_GET["signature"];
	$timestamp = $_GET["timestamp"];
	$nonce = $_GET["nonce"];
	$tmpArr = array($token, $timestamp, $nonce);
	sort($tmpArr, SORT_STRING);
	$tmpStr = implode($tmpArr);
	return sha1($tmpStr) == $signature;
}

// 微信公众后台填写的Token
$token = ‘theToken‘;
// 如果验证正确,则返回参数echostr的内容,否则终止执行
if(checkSignature($token)) {
	echo $_GET[‘echostr‘];
}
exit();

OK!到这里差不多结束了,快去微信后台看看能否验证成功!

最后,如果有问题,可以给我留言……

时间: 2024-11-06 11:03:09

微信接口开发之验证消息真实性的相关文章

Delphi XE7 用indy开发微信公众平台(3)- 验证消息真实性

验证消息真实性 uses IdHashSHA, IdGlobal; function SHA1(Input: String): String; begin with TIdHashSHA1.Create do try Result := LowerCase(HashBytesAsHex(TidBytes(Bytesof(Input)))); finally Free; end; end; function CheckSignature(ARequestInfo: TIdHTTPRequestIn

微信接口开发之前准备工作

我是一名.net码农,最近项目需要用到微信接口开发,苦于微信官方没有.net示例,个人表示非常无解微信竟然这么无视.net的存在(让我哭会) .难道做为.net就不能开发好微信接口了吗?反问了一下,上网查了查资料,答案是否定的,也有许多大神提供很好的例子.在这里谢谢各位前辈的辛苦了(膜拜).在此,我也开始踏入了微信接口开发的工作中了,也想学习大神们的无私,特此在这里共享出我的点点滴滴,与码友一同成长. 先说说我的开发前准备吧! 1.申请注册一个公众平台(哈哈,这是必须的),如果你想要有更大更厉害

java微信接口开发java SpringMVC mybatis 后台框架 集成代码生成器开发利器

获取[下载地址]   QQ: 313596790   [免费支持更新]支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]A 代码生成器(开发利器);      增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid

java 微信自定义菜单 java微信接口开发 公众平台 SSM redis shiro 多数据源

获取[下载地址]   QQ: 313596790官网 http://www.fhadmin.org/A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都

C#.NET微信公众账号接口开发系列文章整理--微信接口开发目录,方便需要的博友查询

前言: 涉及微信接口开发比较早也做的挺多的,有时间的时候整理了开发过程中一些思路案例,供刚学习微信开发的朋友参考.其实微信接口开发还是比较简单的,但是由于调试比较麻烦,加上微信偶尔也会给开发者挖坑,并且C#.NET微信接口开发又比php开源的项目少很多,腾讯官方还经常给其他的语言的jdk唯独缺少.NET的,所以整理自己开发的一些代码.心得并且附带完整源码:https://github.com/xiejun-net/weixin,希望可以减少大家开发的时间,同时如有问题希望可以指出交流.后续还会更

Axis 调用.net WebServic接口出现:验证消息的安全性时发生错误

解决方法:call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS); 参考:http://www.blogjava.net/andy199999/ 异常内容: AxisFault faultCode: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}InvalidSecurity faultS

PHP九大接口视频教程( 支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套)

PHP九大接口视频教程(  支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套) 需要的联系我:QQ: 1844912514 PHP九大接口视频教程(  支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套) 需要的联系我:QQ: 1844912514 原文地址:https://www.cnblogs.com/lxwphp/p/9426625.html

php+微信接口开发的微信分销平台拆分讲解(一)微信oauth2接口

本文不提供整套系统源码,只会开放部分源码,讲诉开发的经历.思路.问题解答,希望对新手有帮助,至于高手和大神一下而过或留下宝贵意见在此谢过. 废话不多说了开始进入正题. 基础篇 php当前主流WEB开发语言毋庸置疑不用多说.微信接口主要用到微信授权登录接口.微信JSSDK分享接口.微信支付接口,对于微信的一系列接口必须要牢骚一下到处是坑啊.分销系统是一种营销模式以后会解释.首先说一下第一步微信登录(oauth2第三方授权接口),个人认为比较重要的一部,优点用户体验高.安全性高.为后边做分销系统打下

Axis 调用.net WebServic接口出现:验证消息的安全性时错误发生

解决方法:call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS); 參考:http://www.blogjava.net/andy199999/ 异常内容: AxisFault faultCode: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}InvalidSecurity faultS