PHP7.0微信公眾平臺開發4: 例項一:接收普通訊息和接收事件推送
阿新 • • 發佈:2019-02-11
<?php
define("TOKEN", "peng");
$wechatObj = new wechatCallbackapiTest();
if (!isset($_GET['echostr'])) {
$wechatObj->responseMsg(); //呼叫responseMsg()接收訊息
}else{
$wechatObj->valid(); //其實已經不再呼叫
}
class wechatCallbackapiTest
{
private $access_token;
public function __construct (){ //建構函式
}
public function valid(){
//略,本系列第一篇中有程式碼
}
private function checkSignature(){
//略,本系列第一篇中有程式碼
}
public function responseMsg(){
$postArr = file_get_contents("php://input"); //php7.0只能用這種方式獲取資料,之前的$GLOBALS['HTTP_RAW_POST_DATA']7.0版本不可用
$postObj = simplexml_load_string($postArr); //讀取xml格式檔案,記得安裝php7.0-xml
//接收關注事件推送:使用者關注微訊號後,將會受到一條“歡迎光臨”的訊息
if(strtolower($postObj->MsgType) == 'event'){
if(strtolower($postObj->Event) == 'subscribe'){
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$content = '歡迎光臨!';
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info= sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
echo $info;
}
}
//接收普通文字訊息:使用者傳送“tuwen”後,將收到4條圖文訊息
if(strtolower($postObj->MsgType)=='text' && trim($postObj->Content)=='tuwen')
{
$toUser =$postObj->FromUserName;
$fromUser =$postObj->ToUserName;
$arr=array
(
array(
'title'=>'百度',
'description'=>"百度很棒!", //單圖文會顯示,多圖文不顯示description
'picUrl'=>'http://www.peng.com/baidu.jpg',
'url'=>'http://www.baidu.com', //這裡的網頁也可以是自己寫的html,php等網頁
),
array(
'title'=>'中國亞馬遜',
'description'=>"中國亞馬遜很棒!",
'picUrl'=>'http://www.peng.com/amazon_cn.png',
'url'=>'https://www.amazon.cn/',
),
array(
'title'=>'Amazon in UK',
'description'=>"Amanon is very good!",
'picUrl'=>'http://www.peng.com/amazon_co_uk.png',
'url'=>'https://www.amazon.co.uk/',
),
array(
'title'=>'Amazon en France',
'description'=>"Amazon est très bon!",
'picUrl'=>'http://www.peng.com/amazon_fr.png',
'url'=>'https://www.amazon.fr/',
)
);
$template="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($arr)."</ArticleCount>
<Articles>";
foreach($arr as $k=>$v)
{
$template .="<item>
<Title><![CDATA[".$v['title']."]]></Title>
<Description><![CDATA[".$v['description']."]]></Description>
<PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
<Url><![CDATA[".$v['url']."]]></Url>
</item>";
}
$template .="</Articles>
</xml> ";
echo sprintf($template,$toUser,$fromUser,time(),'news');
}
}
}
?>