时间:2021-07-01 10:21:17 帮助过:9人阅读
$foreach($arr_item as $item) {
$item_str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']);
}
代码贴到下面,望各位大神解决这个问题!
valid();//这里是测试网站配置信息和开发的是否一致。
$wechatObj->responseMsg();//新增加这一项,目的是调用responseMsg()这个功能。
class wechatCallbackapiTest
{
//若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。
public function valid()
{
$echoStr = $_GET["echostr"];
//alid signature , option
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);
$RX_TYPE = trim($postObj->MsgType);
switch ($RX_TYPE)
{
case "text":
$resultStr = $this->receiveText($postObj);
break;
case "image":
$resultStr = $this->receiveImage($postObj);
break;
case "location":
$resultStr = $this->receiveLocation($postObj);
break;
case "voice":
$resultStr = $this->receiveVoice($postObj);
break;
case "video":
$resultStr = $this->receiveVideo($postObj);
break;
case "link":
$resultStr = $this->receiveLink($postObj);
break;
case "event":
$resultStr = $this->receiveEvent($postObj);
break;
default:
$resultStr = "unknow msg type: ".$RX_TYPE;
break;
}
echo $resultStr;
}else {
echo "";
exit;
}
}
/*文本消息->1*/
private function receiveText($object){
$keyword = trim($object->Content);
if(!empty($keyword)){
$url = "http://www.tuling123.com/openapi/api?key=a2fcd4181d8aa942ca2e078b1c479684&info=".$keyword;
$data = file_get_contents($url);
$text =json_decode($data,ture);
$content = $text['text'];
$result =$this->transmitText($object,$content);
}
else if($keyword=="图文"||$keyword=="单图文"){
$content = array();
$content[]=array("Title"=>"单图文标题",
"Descrption"=>"单图文内容",
"PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg",
"Url"=>"http://m.cnblogs.com/?u=txw1958");
$result = $this->transmitNews($object,$content);
}
else if($keyword=="多图文"){
$content = array();
$content[]=array("Title"=>"多图文标题1",
"Descrption"=>"图文内容",
"PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg",
"Url"=>"http://m.cnblogs.com/?u=txw1958");
$content[]=array("Title"=>"多图文标题2",
"Descrption"=>"图文内容",
"PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg",
"Url"=>"http://m.cnblogs.com/?u=txw1958");
$content[]=array("Title"=>"多图文标题3",
"Descrption"=>"图文内容",
"PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg",
"Url"=>"http://m.cnblogs.com/?u=txw1958");
$result = $this->transmitNews($object,$content);
}else if($keyword=="音乐"){
$content = array("Title"=>"七月上",
"Descrption"=>"jam",
"MusicUrl"=>"http://sc1.111ttt.com/2015/5/12/28/105281351446.mp3",
"HQMusicUrl"=>"http://sc1.111ttt.com/2015/5/12/28/105281351446.mp3");
$result = $this->transmitMusic($object,$content);
}
return $result;
}
/*图片消息->1*/
private function receiveImage($object){
$content=array("MediaId"=>$object->MediaId);
$result = $this->transmitImage($object,$content);
return $result;
}
/*回复语音消息->1*/
private function receiveVoice($object){
$content=array("MediaId"=>$object->MediaId);
$result =$this->transmitVoice($object,$content);
return $result;
}
/*回复视频消息->*/
private function receiveVideo($object){
$content=array("MediaId"=>$object->MediaId,
"ThumbMediaId"=>$object->ThumbMediaId,
"Title"=>"",
"Descrption"=>"");
$result=$this->transmitVideo($object,$content);
return $result;
}
/*回复文本消息->xml*/
private function transmitText($object,$content){
$textTpl = "
%s
";
$result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time(),$content);
return $result;
}
/*回复图片消息xml*/
private function transmitImage($object,$imageArray){
$itemTpl = "
";
$item_str = sprintf($itemTpl,$imageArray['MediaId']);
$textTpl = "
%s
$item_str
";
$result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time());
return $result;
}
/*回复语音消息xml*/
private function transmitVoice($object,$voiceArray){
$itemTpl = "
";
$item_str = sprintf($itemTpl,$voiceArray['MediaId']);
$textTpl = "
%s
$item_str
";
$result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time());
return $result;
}
/*回复视频消息Xml*/
private function transmitVideo($object,$videoArray){
$itemTpl = "";
$item_str = sprintf($itemTpl,$videoArray['MediaId'],$videoArray['ThumbMediaId'],$videoArray['Title'],$videoArray['Descrption']);
$textTpl = "
%s
$item_str
";
$result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time());
return $result;
}
/*回复图文消息xml*/
private function transmitNews($object,$arr_item){
if(!is_array($arr_item))
return;
$itemTpl = "-
";
$item_str = "";
$foreach($arr_item as $item) {
$item_str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']);
}
$newsTpl = "
%s
%s
$item_str
";
$result = sprintf($newsTpl,$object->FromUserName,$object->ToUserName,time(),count($arr_item));
return $result;
}
/*回复音乐xml*/
private function transmitMusic($object,$musicArray){
$itemTpl = "
";
$item_str = sprintf($itemTpl,$musicArray['Title'],$musicArray['Description'],$musicArray['MusicUrl'],$musicArray['HQMusicUrl']);
$textTpl = "
%s
$item_str
";
$result=sprintf($textTpl,$object->FromUserName,$object->ToUserName,time());
return $result;
}
// 开发者通过检验signature对请求进行校验
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;
}
}
}
?>
放到SAE中 ,请问这是怎么回事? 出错地方如下:
$foreach($arr_item as $item) {
$item_str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']);
}
代码贴到下面,望各位大神解决这个问题!
valid();//这里是测试网站配置信息和开发的是否一致。
$wechatObj->responseMsg();//新增加这一项,目的是调用responseMsg()这个功能。
class wechatCallbackapiTest
{
//若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。
public function valid()
{
$echoStr = $_GET["echostr"];
//alid signature , option
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);
$RX_TYPE = trim($postObj->MsgType);
switch ($RX_TYPE)
{
case "text":
$resultStr = $this->receiveText($postObj);
break;
case "image":
$resultStr = $this->receiveImage($postObj);
break;
case "location":
$resultStr = $this->receiveLocation($postObj);
break;
case "voice":
$resultStr = $this->receiveVoice($postObj);
break;
case "video":
$resultStr = $this->receiveVideo($postObj);
break;
case "link":
$resultStr = $this->receiveLink($postObj);
break;
case "event":
$resultStr = $this->receiveEvent($postObj);
break;
default:
$resultStr = "unknow msg type: ".$RX_TYPE;
break;
}
echo $resultStr;
}else {
echo "";
exit;
}
}
/*文本消息->1*/
private function receiveText($object){
$keyword = trim($object->Content);
if(!empty($keyword)){
$url = "http://www.tuling123.com/openapi/api?key=a2fcd4181d8aa942ca2e078b1c479684&info=".$keyword;
$data = file_get_contents($url);
$text =json_decode($data,ture);
$content = $text['text'];
$result =$this->transmitText($object,$content);
}
else if($keyword=="图文"||$keyword=="单图文"){
$content = array();
$content[]=array("Title"=>"单图文标题",
"Descrption"=>"单图文内容",
"PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg",
"Url"=>"http://m.cnblogs.com/?u=txw1958");
$result = $this->transmitNews($object,$content);
}
else if($keyword=="多图文"){
$content = array();
$content[]=array("Title"=>"多图文标题1",
"Descrption"=>"图文内容",
"PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg",
"Url"=>"http://m.cnblogs.com/?u=txw1958");
$content[]=array("Title"=>"多图文标题2",
"Descrption"=>"图文内容",
"PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg",
"Url"=>"http://m.cnblogs.com/?u=txw1958");
$content[]=array("Title"=>"多图文标题3",
"Descrption"=>"图文内容",
"PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg",
"Url"=>"http://m.cnblogs.com/?u=txw1958");
$result = $this->transmitNews($object,$content);
}else if($keyword=="音乐"){
$content = array("Title"=>"七月上",
"Descrption"=>"jam",
"MusicUrl"=>"http://sc1.111ttt.com/2015/5/12/28/105281351446.mp3",
"HQMusicUrl"=>"http://sc1.111ttt.com/2015/5/12/28/105281351446.mp3");
$result = $this->transmitMusic($object,$content);
}
return $result;
}
/*图片消息->1*/
private function receiveImage($object){
$content=array("MediaId"=>$object->MediaId);
$result = $this->transmitImage($object,$content);
return $result;
}
/*回复语音消息->1*/
private function receiveVoice($object){
$content=array("MediaId"=>$object->MediaId);
$result =$this->transmitVoice($object,$content);
return $result;
}
/*回复视频消息->*/
private function receiveVideo($object){
$content=array("MediaId"=>$object->MediaId,
"ThumbMediaId"=>$object->ThumbMediaId,
"Title"=>"",
"Descrption"=>"");
$result=$this->transmitVideo($object,$content);
return $result;
}
/*回复文本消息->xml*/
private function transmitText($object,$content){
$textTpl = "
%s
";
$result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time(),$content);
return $result;
}
/*回复图片消息xml*/
private function transmitImage($object,$imageArray){
$itemTpl = "
";
$item_str = sprintf($itemTpl,$imageArray['MediaId']);
$textTpl = "
%s
$item_str
";
$result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time());
return $result;
}
/*回复语音消息xml*/
private function transmitVoice($object,$voiceArray){
$itemTpl = "
";
$item_str = sprintf($itemTpl,$voiceArray['MediaId']);
$textTpl = "
%s
$item_str
";
$result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time());
return $result;
}
/*回复视频消息Xml*/
private function transmitVideo($object,$videoArray){
$itemTpl = "";
$item_str = sprintf($itemTpl,$videoArray['MediaId'],$videoArray['ThumbMediaId'],$videoArray['Title'],$videoArray['Descrption']);
$textTpl = "
%s
$item_str
";
$result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time());
return $result;
}
/*回复图文消息xml*/
private function transmitNews($object,$arr_item){
if(!is_array($arr_item))
return;
$itemTpl = "-
";
$item_str = "";
$foreach($arr_item as $item) {
$item_str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']);
}
$newsTpl = "
%s
%s
$item_str
";
$result = sprintf($newsTpl,$object->FromUserName,$object->ToUserName,time(),count($arr_item));
return $result;
}
/*回复音乐xml*/
private function transmitMusic($object,$musicArray){
$itemTpl = "
";
$item_str = sprintf($itemTpl,$musicArray['Title'],$musicArray['Description'],$musicArray['MusicUrl'],$musicArray['HQMusicUrl']);
$textTpl = "
%s
$item_str
";
$result=sprintf($textTpl,$object->FromUserName,$object->ToUserName,time());
return $result;
}
// 开发者通过检验signature对请求进行校验
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;
}
}
}
?>
foreach
不是变量,为什么前面有个$
?