1. 简介
在开发微信公众号时,需要实现与微信服务器的交互。其中一个必要步骤是实现验证Token。本文将介绍如何用PHP实现微信公众号验证Token。
2. 获取微信传来的参数
首先,需要获取微信服务器传来的参数。这些参数包括:signature, timestamp, nonce, echostr,需要保存在一个数组中。代码如下:
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$echostr = $_GET["echostr"];
$token = "your_token"; //微信公众平台上自己设置的Token
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature) {
echo $echostr;
} else {
echo "";
}
3. 验证Token
接下来就是验证Token了。验证Token的过程主要分为两步:一是将Token、timestamp、nonce三个参数进行字典序排序,再将三个参数字符串拼接成一个字符串进行sha1加密;二是将加密后的字符串与signature比较,如果相等则Token验证通过。代码如下:
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$echostr = $_GET["echostr"];
$token = "your_token"; //微信公众平台上自己设置的Token
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature) {
echo $echostr;
} else {
echo "";
}
3.1 步骤一
将Token、timestamp、nonce三个参数进行字典序排序,再将三个参数字符串拼接成一个字符串进行sha1加密。
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$echostr = $_GET["echostr"];
$token = "your_token";
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
3.2 步骤二
将加密后的字符串与signature比较,如果相等则Token验证通过。
if ($tmpStr == $signature) {
echo $echostr;
} else {
echo "";
}
4. 小结
本文介绍了如何用PHP代码实现微信公众号验证Token的过程。主要分为获取微信传来的参数、验证Token两个步骤。代码非常简单,适合初学者入门。在实际开发过程中,还需要处理其他类型的消息(如接收、回复消息等),需要进一步深入学习。