1. 程式人生 > >PHP7.0微信公眾平臺開發4: 例項一:接收普通訊息和接收事件推送

PHP7.0微信公眾平臺開發4: 例項一:接收普通訊息和接收事件推送

<?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'); } } } ?>