define("TOKEN", "abcd");
$wechatObj = new wechatCallbackapiTest();
if(isset($_GET['echostr'])){
$wechatObj->valid();
}class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"]; //valid signature , option
if($this->checkSignature()){
echo $echoStr; //这是什么意思,为什么要打印
exit;
}
}
private function checkSignature()
{
// you must define TOKEN by yourself
if (!defined("TOKEN")) {
throw new Exception('TOKEN is not defined!');
}
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
$wechatObj = new wechatCallbackapiTest();
if(isset($_GET['echostr'])){
$wechatObj->valid();
}class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"]; //valid signature , option
if($this->checkSignature()){
echo $echoStr; //这是什么意思,为什么要打印
exit;
}
}
private function checkSignature()
{
// you must define TOKEN by yourself
if (!defined("TOKEN")) {
throw new Exception('TOKEN is not defined!');
}
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
确认传入的签名有效,然后返回有效的签名
这是客户端做签名认证的需要,你应该去问客户端开发者为什么在对
$wechatObj->checkSignature();
这个函数是测试用的,测试完就没用了,要改过来才能正常运行
就是要打印$echoStr 这个变量的值。[code=php]
if($this->checkSignature()){
echo $echoStr; //这是什么意思,为什么要打印
exit;
}
[/code这句在程序中的意思是:如果检查签名成功,则显示$echoStr的值,用于检查。