<?php
define("TOKEN","此处填写你在微信后台设置的TOKEN");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid(); //首次验证时放开此句注释掉下面一句,验证完成时恢复
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature())
{
echo $echoStr;
exit;
}
}
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr))
{
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
if(!empty( $keyword ))
{
$msgType = "text";
$commonInfo = new commonInfo();
$ipaddr = $commonInfo->getClientIp();
$cityinfo = $commonInfo->getIpCity($ipaddr);
$cityname = $cityinfo;
$exinfo = $cityinfo;
$pos = strpos($cityinfo, ' ', 3);
if ($pos > -1)
{
$cityname = substr($cityinfo, 0, $pos);
$exinfo = substr($cityinfo, $pos + 1, strlen($cityinfo) - $pos - 1);
}
if (strlen($cityname) > 3)
{
$cityflag = substr($cityname, 0, strlen($cityname) - 3);
}
else
{
$cityflag = "地球";
}
$welcomeinfo = "灵感机器人欢迎你!";
$contentStr = "来自".$cityflag.$exinfo."的朋友".$welcomeinfo."\r\n";
$contentStr .= "你的IP地址是:" . $ipaddr . "\r\n";
if(strtolower($keyword) == 'weather' || $keyword == '天气')
{
//Wether Report
$contentStr .= $commonInfo->getWeatherInfo($cityflag);
}
else
{
//Robot
$talk = new talk();
$reply = $talk->reply($keyword);
if (empty($reply))
{
//虫洞查询
$tipinfo = "你可以输入‘help’教我学习聊天,或者输入‘天气’看看天气情况。\r\n你说的内容我不太懂,所以上网查了一下 ^_^\r\n\r\n";
$queryinfo = file_get_contents("http://wap.unidust.cn/api/searchout.do?type=client&ch=1001&info=".$keyword);
$pos = strpos($queryinfo,$keyword);
$queryinfo = mb_strcut($queryinfo,$pos,1024,'utf-8');
$queryinfo = str_replace("uzoo.cn","www.easyapple.net",$queryinfo);
$queryinfo = str_replace("虫洞","EasyApple",$queryinfo);
$reply = $tipinfo.$queryinfo;
//自主学习
$answer = $talk->getAnswer($keyword, substr($queryinfo,strlen($keyword),512));
if(empty($answer))
{
$contentStr .= $reply;
}
else
{
$contentStr = $answer;
}
}
else
{
$contentStr = $reply;
}
}
if (empty($contentStr))
{
$contentStr = "亲爱的,跟你聊天我学到了不少东西,此时我不知道说什么好。。。";
}
$resultStr = sprintf ( $textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr );
echo $resultStr;
}
else
{
echo "Input something…";
}
}
else
{
echo "";
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature )
{
return true;
}
else
{
return false;
}
}
}