<?php
/**
* wechat php test
*/
//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature())
{
echo $echoStr;
exit;
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr))
{
$postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
//$type=$postobj->MsgType;
$type =$postObj->MsgType;
$customevent=$postObj->Event;
$latitude=$postObj->Location_X;
$longitude=$postObj->Location_Y;
$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>";
$musicTpl="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Music>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<MusicUrl><![CDATA[%s]]></MusicUrl>
<HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
</Music>
</xml>";
$newsTpl="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>2</ArticleCount>
<Articles>
<item>
<Title><![CDATA[女神的气质大衣]]></Title>
<Description><![CDATA[一款舒适的长大衣是寒冷季节的首选]]></Description>
<PicUrl><![CDATA[http://4.zhangxuman.sinaapp.com/1.jpg]]></PicUrl>
<Url><![CDATA[http://www.baidu.com]]></Url>
</item>
<item>
<Title><![CDATA[墨概念呢子外套]]></Title>
<Description><![CDATA[秋冬女装大衣2014新款韩版修身大毛领毛呢外套]]></Description>
<PicUrl><![CDATA[http://4.zhangxuman.sinaapp.com/2.jpg]]></PicUrl>
<Url><![CDATA[http://www.baidu.com]]></Url>
</item>
</Articles>
</xml>";
if($type=="event" )//and $customrevent=="subscribe")
{
$msgType = "text";
$contentStr="感谢您的关注\n 回复1可查看联系方式 \n 回复2可还钱 \n 回复3可查看各种小吃 \n 回复‘查询天气#城市名称‘可查询天气";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
else
{
switch($type)
{
case "text":
{
if(!empty( $keyword ))
{
if($keyword=="1")
{
$msgType = "text";
$contentStr="广东工业大学工二馆,联系方式:18790652159,联系人:张星星";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
}
else if($keyword=="2")
{
$msgType = "text";
$contentStr="请将钱打入工行卡88888888,于五个工作日内,谢谢配合";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
}
else if($keyword=="3")
{
$msgType = "text";
$contentStr="饿了吗?河南小吃,广东小吃,*小吃,各种美味等着你哦";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
}
else if($keyword=="菜单")
{
$msgType = "text";
$contentStr="感谢您的关注\n 回复1可查看联系方式 \n 回复2可还钱 \n 回复3可查看各种小吃 \n 回复‘查询天气#城市名称‘可查询天气";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
}
else if($keyword=="音乐")
{
$Title="纯真年代";
$Description="离婚前规则主题曲";
$MusicUrl="http://1.zhangxuman.sinaapp.com/music/1.mp3";
$HQMusicUrl= $MusicUrl;
$msgType="music";
$resultStr = sprintf($musicTpl, $fromUsername, $toUsername, $time, $msgType,$Title,$Description,$MusicUrl,$HQMusicUrl);
}
else if($keyword=="查询天气#weatherurl")
{
$msgType = "text";
$weatherurl="http://api.map.baidu.com/telematics/v2/weather?location={$keyword}&ak=8UGHSPObt5WTKQrotMFlXuSI"; //天气预报接口
$apistr=file_get_contents($weatherurl);
$apiobj=simplexml_load_string($apistr);
$placeobj=$apiobj->currentCity;
$todayobj=$apiobj->results->result[0]->date;
$weatherobj=$apiobj->results->result[0]->weather;
$windobj=$apiobj->results->result[0]->wind;
$temobj=$apiobj->results->result[0]->temperature;
$contentStr="{$placeobj}{$todayobj}天气{$weatherobj},风力{$windobj},温度{$temobj}";
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
else if($keyword=="应用")
{
$msgType = "text";
$contentStr="\n<a href="http://haotianqi.duapp.com" >天气查询</a>\n\n\n<a href="http://h.lexun.com/game/DouDiZhu/play.aspx">
斗地主</a>\n\n\n<a href="http://jiemengmobi.duapp.com">周公解梦</a>\n\n\n<a href="http://pictoword.hortorgame.com">疯狂猜图</a>";
$resultStr = sprintf($textTpl2, $fromUsername, $toUsername, $time, $msgType, $contentStr);
}
else if($keyword=="购物时尚")
{
//$msgType="text";
$resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time);
}
else //这个else里面是调用图灵机的apidai‘m
{
$apiKey = "70fc220d8d6364d9a6fe894d7ec7ec59";
$apiURL = "http://www.tuling123.com/openapi/api?key=KEY&info=INFO";//2 3 1
$url = str_replace("INFO", $keyword, str_replace("KEY", $apiKey, $apiURL));
/** 方法一、用file_get_contents 以get方式获取内容 */
$res =file_get_contents($url); //这三句是解析api返回的res,并用contentStr输出
$apiObj =json_decode($res);
$contentStr = $apiObj->text;
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
}
}
else
{
$contentStr= "Input something...";
}
break;
}
case "voice":
{
$msgType = "text";
$contentStr="语音功能尚未完善,请输入文本信息";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
break;
}
case "image":
{
$msgType = "text";
$contentStr="你的图片很漂亮";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
break;
}
case "location":
{
$msgType = "text";
$contentStr="你的纬度是{$latitude},经度是{$longitude},我们已经锁定!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
break;
}
case "link":
{
$msgType = "text";
$contentStr="你的链接有病毒吧!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
break;
}
default :
{
$msgType = "text";
$contentStr="此功能尚未开发";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
break;
}
}
}
echo $resultStr;
}
else
{
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;
}
}
}
?>
微信订阅号(第五个版本)总结