




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PHP對接微信公眾平臺(tái)消息接口開發(fā)流程教程這篇文章主要介紹了PHP對接微信公眾平臺(tái)消息接口開發(fā)流程,如何使用PHP版接口操作公眾平臺(tái)消息,需要的朋友可以參考下一、寫好接口程序在你的服務(wù)器上上傳好一個(gè)接口程序文件,
如
/weixin.php
內(nèi)容如下:復(fù)制代碼 代碼如下:<?phpdefine("TOKEN","weixin");//自己定義的token就是個(gè)通信的私鑰$wechatObj=newwechatCallbackapiTest();$wechatObj->valid();//$wechatObj->responseMsg();classwechatCallbackapiTest{publicfunctionvalid(){$echoStr=$_GET["echostr"];if($this->checkSignature()){echo$echoStr;exit;}}publicfunctionresponseMsg(){$postStr=$GLOBALS["HTTP_RAW_POST_DATA"];if(!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement',LIBXML_NOCDATA);$fromUsername=$postObj->FromUserName;$toUsername=$postObj->ToUserName;$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>";if(!empty($keyword)){$msgType="text";$contentStr='你好啊,屌絲 ';$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,$msgType,$contentStr);echo$resultStr;}else{echo'咋不說哈呢';}}else{echo'咋不說哈呢';exit;}}privatefunctioncheckSignature(){$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){returntrue;}else{returnfalse;}}}?>二、配置微信公眾平臺(tái)回復(fù)接口設(shè)置回復(fù)接口,填好URL和
Token(url填上面的
/weixin.php
,token必須跟上面程序里面定義的
Token一致)三、驗(yàn)證接口用自己的個(gè)人微信關(guān)注下你的公眾賬號,給這個(gè)賬號發(fā)一條消息過去,收到原樣的消息返回,即驗(yàn)證成功了。四、開始自定義回復(fù)注釋掉$wechatObj->valid(); 這行,同時(shí)去掉 //$wechatObj->responseMsg();這行的注釋。你可以修改 responseMsg函數(shù)里面的代碼, 根據(jù)用戶的消息類型 ('text','image','location'消息內(nèi)容來回復(fù)用戶不同的內(nèi)容。消息接口就可以使用了,發(fā)個(gè)消息試試看吧?
)和1.封裝
weixin.class.php由于微信公眾平臺(tái)的通信使用的是特定格式的 XML數(shù)據(jù),每次接受和回復(fù)都要去做一大堆的數(shù)據(jù)處理。我們就考慮在這個(gè)基礎(chǔ)上做一次封裝, weixin.class.php,代碼如下:復(fù)制代碼 代碼如下:<?phpclassWeixin{public$token='';//tokenpublic$debug= false;//是否debug的狀態(tài)標(biāo)示,方便我們在調(diào)試的時(shí)候記錄一些中間數(shù)據(jù)public$setFlag=false;public$msgtype='text'; //('text','image','location')public$msg=array();publicfunction__construct($token,$debug){$this->token=$token;$this->debug=$debug;}//獲得用戶發(fā)過來的消息(消息內(nèi)容和消息類型 )publicfunctiongetMsg(){$postStr=$GLOBALS["HTTP_RAW_POST_DATA"];if($this->debug){$this->write_log($postStr);}if(!empty($postStr)){$this->msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement',LIBXML_NOCDATA);$this->msgtype=strtolower($this->msg['MsgType']);}}回復(fù)文本消息publicfunctionmakeText($text=''){$CreateTime=time();$FuncFlag=$this->setFlag?1:0;$textTpl="<xml><ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName><FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName><CreateTime>{$CreateTime}</CreateTime><MsgType><![CDATA1]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>%s</FuncFlag></xml>";returnsprintf($textTpl,$text,$FuncFlag);}根據(jù)數(shù)組參數(shù)回復(fù)圖文消息publicfunctionmakeNews($newsData=array()){$CreateTime=time();$FuncFlag=$this->setFlag?1:0;$newTplHeader="<xml><ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName><FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName><CreateTime>{$CreateTime}</CreateTime><MsgType><![CDATA[news]]></MsgType><Content><![CDATA[%s]]></Content><ArticleCount>%s</ArticleCount><Articles>";$newTplItem="<item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item>";$newTplFoot="</Articles><FuncFlag>%s</FuncFlag></xml>";一次最多
$Content='';$itemsCount=count($newsData['items']);$itemsCount=$itemsCount<10?$itemsCount:10;//10條if($itemsCount){foreach($newsData['items']as$key=>$item){if($key<=9){$Content
微信公眾平臺(tái)圖文回復(fù)的消息
.=sprintf($newTplItem,$item['title'],$item['description'],$item['picurl'],$item['url']);}}}$header=sprintf($newTplHeader,$newsData['content'],$itemsCount);$footer=sprintf($newTplFoot,$FuncFlag);return$header.$Content.$footer;}publicfunctionreply($data){if($this->debug){$this->write_log($data);}echo$data;}publicfunctionvalid(){if($this->checkSignature()){if($_SERVER['REQUEST_METHOD']=='GET'){echo$_GET['echostr'];exit;}}else{write_log('認(rèn)證失敗');exit;}}privatefunctioncheckSignature(){$signature=$_GET["signature"];$timestamp=$_GET["timestamp"];$nonce=$_GET["nonce"];$tmpArr=array($this->token,$timestamp,$nonce);sort($tmpArr);$tmpStr=implode($tmpArr);$tmpStr=sha1($tmpStr);if($tmpStr==$signature){returntrue;}else{returnfalse;}}privatefunctionwrite_log($log){//這里是你記錄調(diào)試信息的地方
請自行完善
以便中間調(diào)試}}?>2.調(diào)用weixin.class.php把你的微信公眾平臺(tái)主接口文件(如前面定義的 )中,修改代碼為:復(fù)制代碼 代碼如下:<?phpinclude_once('weixin.class.php');// 引用剛定義的微信消息處理類define("TOKEN","mmhelper");define('DEBUG',true);$weixin=newWeixin(TOKEN,DEBUG);//實(shí)例化$weixin->getMsg();$type=$weixin->msgtype;//消息類型$username=$weixin->msg['FromUserName'];// 哪個(gè)用戶給你發(fā)的消息
,這個(gè)$username是微信加密之后的,但是每個(gè)用戶都是一一對應(yīng)的if($type==='text'){if($weixin->msg['Content']=='Hello2BizUser'){//微信用戶第一次關(guān)注你的賬號的時(shí)候,你的公眾賬號就會(huì)受到一條內(nèi)容為'Hello2BizUser'的消息$reply=$weixin->makeText('歡迎你關(guān)注哦,屌絲
');}else{//
這里就是用戶輸入了文本信息$keyword=$weixin->msg['Content'];include_once("chaxun.php");//
//用戶的文本消息內(nèi)容文本消息 調(diào)用查詢程序$chaxun=newchaxun(DEBUG,$keyword,$username);$results['items']=$chaxun->search();//查詢的代碼$reply=$weixin->makeNews($results);}}elseif($type==='location'){//用戶發(fā)送的是位置信息 稍后的文章中會(huì)處理}elseif($type==='image'){//用戶發(fā)送的是圖片 稍后的文章中會(huì)處理}elseif($type==='voice'){//用戶發(fā)送的是聲音 稍后的文章中會(huì)處理}$weixin->reply($reply);?>3.查詢代碼還需要將數(shù)據(jù)庫里面的查詢結(jié)果格式化為特定的形式復(fù)制代碼 代碼如下:<?phppublicfunctionsearch(){$record=array(); //定義返回結(jié)果的數(shù)組$list=$this->search($this->keyword);// 普通的根據(jù)關(guān)鍵詞查詢數(shù)據(jù)庫的操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年駕校考試貨運(yùn)從業(yè)資格證考試題庫
- 教師職業(yè)素養(yǎng)與教學(xué)能力測試
- ××中學(xué)辦公用品申領(lǐng)制度
- 近幾年電線電纜需求分析-揚(yáng)州春天線纜有限公司
- 媒體傳播及廣告代理協(xié)議內(nèi)容
- 讀小王子有感關(guān)于成長與愛的感悟讀后感9篇
- 我最喜歡的語文老師記敘文11篇
- 物流行業(yè)離職證明與履歷表(8篇)
- 2025年電梯安裝改造維修作業(yè)特種作業(yè)操作證考試試卷(高級)模擬
- 我們的老師最偉大寫人類作文11篇
- 中國保險(xiǎn)行業(yè)發(fā)展分析及發(fā)展前景與投資研究報(bào)告2025-2028版
- 星載終端抗輻照設(shè)計(jì)-洞察及研究
- 2025年湖南省中考生物試卷真題(含標(biāo)準(zhǔn)答案)
- 2025年河北省物流產(chǎn)業(yè)集團(tuán)招聘筆試參考題庫含答案解析
- 2025年衛(wèi)生系統(tǒng)招聘考試(護(hù)理學(xué)專業(yè)知識(shí))新版真題卷(附詳細(xì)解析)
- 吉林省“BEST合作體”2023?2024學(xué)年高一下學(xué)期期末考試 數(shù)學(xué)試題(含解析)
- 2025山西航空產(chǎn)業(yè)集團(tuán)有限公司校園招聘(第一批)43人筆試參考題庫附帶答案詳解
- 2008-2024年江蘇省連云港贛榆區(qū)事業(yè)單位考試《綜合知識(shí)與能力素質(zhì)》真題試卷及答案
- 貴州省貴陽市觀山湖區(qū)2023-2024學(xué)年四年級下學(xué)期數(shù)學(xué)期末試卷(含答案)
- 2025年文物保護(hù)工程師職業(yè)資格考試試題及答案
- (高清版)DB13∕T 5834-2023 化工建設(shè)項(xiàng)目安裝工程質(zhì)量技術(shù)資料管理規(guī)范
評論
0/150
提交評論