<?<span php
</span><span
</span>
<span
<span define</span>(
"TOKEN"
,
"zhuojin"
<span );
</span><span
$wechatObj
</span> = <span
new
</span><span wechatCallbackapiTest();
</span><span
$wechatObj
</span>-><span responseMsg();
</span><span
<span
class
</span><span wechatCallbackapiTest
{
</span><span
</span>
<span
public
</span> <span
function
</span><span responseMsg()
{
</span><span
<span
$postStr
</span> = <span
$GLOBALS
</span>[
"HTTP_RAW_POST_DATA"
<span ];
</span><span
<span
if
</span> (!<span
empty
</span>(<span
$postStr
</span><span )){
</span><span
$postObj
</span> = <span simplexml_load_string</span>(<span
$postStr
</span>,
'SimpleXMLElement'
,<span LIBXML_NOCDATA);
</span><span
$RX_TYPE
</span> = <span trim</span>(<span
$postObj
</span>-><span MsgType);
</span><span
switch
</span>(<span
$RX_TYPE
</span><span )
{
</span><span
case
</span>
"text"
:
<span
$resultStr
</span> = <span
$this
</span>->handleText(<span
$postObj
</span><span );
</span><span
break
</span><span ;
</span><span
case
</span>
"event"
:
<span
$resultStr
</span> = <span
$this
</span>->handleEvent(<span
$postObj
</span><span );
</span><span
break
</span><span ;
</span><span
default
</span>:
<span
$resultStr
</span> =
"Unknow msg type: "
.<span
$RX_TYPE
</span><span ;
</span><span
break
</span><span ;
}
</span><span
echo
</span> <span
$resultStr
</span><span ;
}</span><span
else
</span><span {
</span><span
echo
</span>
""
<span ;
</span><span
exit
</span><span ;
}
}
</span><span
public
</span> <span
function
</span> handleText(<span
$postObj
</span><span )
{
</span><span
$fromUsername
</span> = <span
$postObj
</span>-><span FromUserName;
</span><span
$toUsername
</span> = <span
$postObj
</span>-><span ToUserName;
</span><span
$keyword
</span> = <span trim</span>(<span
$postObj
</span>-><span Content);
</span><span
$time
</span> = <span time</span><span ();
</span><span
$textTpl
</span> = "<span <xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml></span>"<span ;
</span><span
if
</span>(!<span
empty
</span>( <span
$keyword
</span><span ))
{
</span><span
$msgType
</span> =
"text"
<span ;
</span><span
if
</span>(<span
$keyword
</span>==
"你好"
<span ){
</span><span
$contentStr
</span> =
"hello"
<span ;
}</span><span
elseif
</span>(<span
$keyword
</span>==
"苏州"
<span ){
</span><span
$contentStr
</span> =
"上有天堂,下有苏杭"
<span ;
}</span><span
else
</span><span {
</span><span
$contentStr
</span> =
"感谢您关注【卓锦苏州】 微信号:zhuojinsz"
<span ;
}
</span><span
$resultStr
</span> = <span sprintf</span>(<span
$textTpl
</span>, <span
$fromUsername
</span>, <span
$toUsername
</span>, <span
$time
</span>, <span
$msgType
</span>, <span
$contentStr
</span><span );
</span><span
echo
</span> <span
$resultStr
</span><span ;
}</span><span
else
</span><span {
</span><span
echo
</span>
"Input something..."
<span ;
}
}
</span><span
public
</span> <span
function
</span> handleEvent(<span
$object
</span><span )
{
</span><span
$contentStr
</span> =
""
<span ;
</span><span
switch
</span> (<span
$object
</span>-><span Event)
{
</span><span
case
</span>
"subscribe"
:
<span
$contentStr
</span> =
"感谢您关注【卓锦苏州】"
.
"\n"
.
"微信号:zhuojinsz"
.
"\n"
.
"卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"
.
"\n"
.
"目前平台功能如下:"
.
"\n"
.
"【1】 查天气,如输入:苏州天气"
.
"\n"
.
"【2】 查公交,如输入:苏州公交178"
.
"\n"
.
"【3】 翻译,如输入:翻译I love you"
.
"\n"
.
"【4】 苏州信息查询,如输入:苏州观前街"
.
"\n"
.
"更多内容,敬请期待..."
<span ;
</span><span
break
</span><span ;
</span><span
default
</span> :
<span
$contentStr
</span> =
"Unknow Event: "
.<span
$object
</span>-><span Event;
</span><span
break
</span><span ;
}
</span><span
$resultStr
</span> = <span
$this
</span>->responseText(<span
$object
</span>, <span
$contentStr
</span><span );
</span><span
return
</span> <span
$resultStr
</span><span ;
}
</span><span
public
</span> <span
function
</span> responseText(<span
$object
</span>, <span
$content
</span>, <span
$flag
</span>=0<span )
{
</span><span
$textTpl
</span> = "<span <xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml></span>"<span ;
</span><span
$resultStr
</span> = <span sprintf</span>(<span
$textTpl
</span>, <span
$object
</span>->FromUserName, <span
$object
</span>->ToUserName, <span time</span>(), <span
$content
</span>, <span
$flag
</span><span );
</span><span
return
</span> <span
$resultStr
</span><span ;
}
</span><span
private
</span> <span
function
</span><span checkSignature()
{
</span><span
$signature
</span> = <span
$_GET
</span>[
"signature"
<span ];
</span><span
$timestamp
</span> = <span
$_GET
</span>[
"timestamp"
<span ];
</span><span
$nonce
</span> = <span
$_GET
</span>[
"nonce"
<span ];
</span><span
$token
</span> =<span TOKEN;
</span><span
$tmpArr
</span> = <span
array
</span>(<span
$token
</span>, <span
$timestamp
</span>, <span
$nonce
</span><span );
</span><span sort</span>(<span
$tmpArr
</span><span );
</span><span
$tmpStr
</span> = <span implode</span>( <span
$tmpArr
</span><span );
</span><span
$tmpStr
</span> = <span sha1</span>( <span
$tmpStr
</span><span );
</span><span
if
</span>( <span
$tmpStr
</span> == <span
$signature
</span><span ){
</span><span
return
</span> <span true</span><span ;
}</span><span
else
</span><span {
</span><span
return
</span> <span false</span><span ;
}
}
}
</span>?>