Java的微信開(kāi)發(fā)中使用XML格式和JSON格式數(shù)據(jù)的詳解及實(shí)例
2021-06-24
注釋掉 $->();行,并取消注釋 //$->();同時(shí)排隊(duì)。
您可以修改函數(shù)中的代碼微信公眾平臺(tái)開(kāi)發(fā) php,根據(jù)用戶的消息類型('text'、''、'')和消息內(nèi)容,以不同的內(nèi)容回復(fù)用戶。
消息界面可以使用了。發(fā)送消息并嘗試一下?
1...php
由于微信公眾平臺(tái)的交流使用的是特定格式的XML數(shù)據(jù),每次接收和回復(fù)都需要進(jìn)行大量的數(shù)據(jù)處理。
我們會(huì)考慮在此基礎(chǔ)上做一個(gè)打包微信公眾平臺(tái)開(kāi)發(fā) php,..php,代碼如下:
代碼如下:
token = $token; $this->debug = $debug; } //獲得用戶發(fā)過(guò)來(lái)的消息(消息內(nèi)容和消息類型 ) public function getMsg() { $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ù)文本消息 public function makeText($text='') { $CreateTime = time(); $FuncFlag = $this->setFlag ? 1 : 0; $textTpl = ""; return sprintf($textTpl,$text,$FuncFlag); } //根據(jù)數(shù)組參數(shù)回復(fù)圖文消息 public function makeNews($newsData=array()) { $CreateTime = time(); $FuncFlag = $this->setFlag ? 1 : 0; $newTplHeader = " msg['FromUserName']}]]> msg['ToUserName']}]]> {$CreateTime} %s "; $Content = ''; $itemsCount = count($newsData['items']); $itemsCount = $itemsCount < 10 ? $itemsCount : 10;//微信公眾平臺(tái)圖文回復(fù)的消息一次最多10條 if ($itemsCount) { foreach ($newsData['items'] as $key => $item) { if ($key<=9) { $Content .= sprintf($newTplItem,$item['title'],$item['description'],$item['picurl'],$item['url']); } } } $header = sprintf($newTplHeader,$newsData['content'],$itemsCount); $footer = sprintf($newTplFoot,$FuncFlag); return $header . $Content . $footer; } public function reply($data) { if ($this->debug) { $this->write_log($data); } echo $data; } public function valid() { if ($this->checkSignature()) { if( $_SERVER['REQUEST_METHOD']=='GET' ) { echo $_GET['echostr']; exit; } }else{ write_log('認(rèn)證失敗'); exit; } } private function checkSignature() { $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 ){ return true; }else{ return false; } } private function write_log($log){ //這里是你記錄調(diào)試信息的地方 請(qǐng)自行完善 以便中間調(diào)試 } } ?> msg['FromUserName']}]]> msg['ToUserName']}]]> {$CreateTime} %s "; $newTplItem = " - "; $newTplFoot = "
%s
2.call..php
在你的微信公眾平臺(tái)主界面文件中,修改代碼如下:
代碼如下:
getMsg(); $type = $weixin->msgtype;//消息類型 $username = $weixin->msg['FromUserName'];//哪個(gè)用戶給你發(fā)的消息,這個(gè)$username是微信加密之后的,但是每個(gè)用戶都是一一對(duì)應(yīng)的 if ($type==='text') { if ($weixin->msg['Content']=='Hello2BizUser') {//微信用戶第一次關(guān)注你的賬號(hào)的時(shí)候,你的公眾賬號(hào)就會(huì)受到一條內(nèi)容為'Hello2BizUser'的消息 $reply = $weixin->makeText('歡迎你關(guān)注哦,屌絲'); }else{//這里就是用戶輸入了文本信息 $keyword = $weixin->msg['Content']; //用戶的文本消息內(nèi)容 include_once("chaxun.php");//文本消息 調(diào)用查詢程序 $chaxun= new chaxun(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ù)庫(kù)中的查詢結(jié)果格式化成特定的形式
代碼如下:
search($this->keyword);//普通的根據(jù)關(guān)鍵詞查詢數(shù)據(jù)庫(kù)的操作 代碼就不用分享了 if(is_array($list)&&!empty($list)){ foreach($list as $msg){ $record[]=array(//以下代碼,將數(shù)據(jù)庫(kù)中查詢返回的數(shù)組格式化為微信返回消息能接收的數(shù)組形式,即title、description、picurl、url 詳見(jiàn)微信官方的文檔描述 'title' =>$msg['title'], 'description' =>$msg['discription'], 'picurl' => $msg['pic_url'], 'url' =>$msg['url'] ); } } return $record; } ?>
以上是PHP對(duì)接微信公眾平臺(tái)消息接口的開(kāi)發(fā)過(guò)程詳解及開(kāi)發(fā)過(guò)程示例。更多詳情請(qǐng)關(guān)注php中文網(wǎng)其他相關(guān)文章!
免責(zé)聲明:本文首發(fā)于php中文網(wǎng)。轉(zhuǎn)載請(qǐng)注明出處。感謝您的尊重!如果您有任何問(wèn)題,請(qǐng)聯(lián)系我們
特別推薦:微信公眾平臺(tái)開(kāi)發(fā)
上一篇:解決PHP微信開(kāi)發(fā)數(shù)據(jù)緩存問(wèn)題 下一篇:Java微信開(kāi)發(fā)中使用XML格式和JSON格式數(shù)據(jù)詳解及實(shí)例