前言
今天生病在家,由于我的微信公众号被投诉了,因此影视站接口被迫关闭,于是就想着给大家分享 APP,于是就用了下微信的自动回复,
想着能否把这个自动回复对接到 MIPCMS 上,于是就开干。但是微信开发第一步就给我难住了,微信公众号Token 一直配置失败,
于是上网搜索了下,找到一段可用的代码,结果比对后发现:我的代码中变量的大小写问题,在 echo 的时候找不到变量,因此报错。
错误代码示例
<?php
// 接收参数
// 加密签名
$signature = $_GET['signature'];
// 时间戳
$timestamp = $_GET['timestamp'];
// 随机数
$nonce = $_GET['nonce'];
// 随机字符串
$echostr = $_GET['echostr']; // 此处为小写,调用时是大写,主要原因在此。
// TOKEN
define('TOKEN', 'weixin');
// 字典序排序
$tempArr = array(TOKEN, $timestamp, $nonce);
sort($tempArr, SORT_STRING);
// 拼接字符串,sha1 加密
$tempStr = join($tempArr);
$tempStr = sha1($tempStr);
if($tempStr == $signature) {
echo $echoStr; // 此处 echo 大小写有误
} else {
echo 'error';
exit;
}
正确代码示例
<?php
// 接收参数
// TOKEN
define('TOKEN', 'test123456');
// 加密签名
$signature = $_GET["signature"];
// 时间戳
$timestamp = $_GET['timestamp'];
// 随机数
$nonce = $_GET['nonce'];
// 随机字符串
$echoStr = $_GET['echostr'];
// 字典序排序
$tempArr = array(TOKEN, $timestamp, $nonce);
sort($tempArr, SORT_STRING);
// 拼接字符串,sha1 加密
$tempStr = join($tempArr);
$tempStr = sha1($tempStr);
// $tmpStr = implode( $tempArr );
// $tmpStr = sha1( $tmpStr );
if($tempStr == $signature) {
echo $echoStr;
} else {
echo 'error';
exit;
}
总结
开发需要仔细呀,因为一个变量名搞这么,时间白白浪费了。