最近看了一篇博文是說微信公眾平臺搭建,于是心血來潮自己也嘗試了一下。
1.不用多講了,申請微信公眾號,對于個人來說,只能申請訂閱號。
可以看這個鏈接的文章,http://jingyan.baidu.com/article/414eccf6011ff06b431f0aec.html
2.采用的是Sina App Engine來脫管服務,就要申請sae開發者權限。
再看這個鏈接http://jingyan.baidu.com/article/4f7d57129a60531a20192796.html
3.在sae上新建一個應用


我選擇的php,PHP幾乎免費。java應用的話,有點小貴了。
雖然沒有學過PHP,摸著石頭過河吧。
將php代碼上傳后,就有一個可調試的url了,PHP代碼后面上。

4.再在微信公眾平臺中的開發者中心(這個要經過一段時間的審核),填入一下內容即可

5.然后就是對接數據了,為了測試,我對接的是圖靈機器人的數據、12306和百度地圖API
12306是為了查余票和車次,百度地圖API是為了查天氣預報、圖靈機器人見鏈接:http://www.tuling123.com/openapi/
php代碼如下,本人不是搞PHP的,因此只能在網上拷貝了,如有復制,純屬巧合。

<?php define("TOKEN", "weixin"); session_start(); Session_Register("kw"); $wechatObj = new wechatCallbackapiTest(); require_once("train.php"); $tqTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>5</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> </xml> "; if (!isset($_GET['echostr'])) { $wechatObj->responseMsg(); }else{ $wechatObj->valid(); } class wechatCallbackapiTest { //驗證簽名 public function valid() { $echoStr = $_GET["echostr"]; $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){ echo $echoStr; exit; } } //響應消息 public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $this->logger("R ".$postStr); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); //消息類型分離 switch ($RX_TYPE) { case "event": $result = $this->receiveEvent($postObj); break; case "text": $result = $this->receiveTulingText($postObj); break; case "image": $result = $this->receiveImage($postObj); break; case "location": $result = $this->receiveLocation($postObj); break; case "voice": $result = $this->receiveVoice($postObj); break; case "video": $result = $this->receiveVideo($postObj); break; case "link": $result = $this->receiveLink($postObj); break; default: $result = "unknown msg type: ".$RX_TYPE; break; } $this->logger("T ".$result); echo $result; }else { echo ""; exit; } } //接收事件消息 PRivate function receiveEvent($object) { $content = ""; switch ($object->Event) { case "subscribe": $content = "歡迎關注TomSnail "; $content .= (!empty($object->EventKey))?("/n來自二維碼場景 ".str_replace("qrscene_","",$object->EventKey)):""; break; case "unsubscribe": $content = "取消關注"; break; case "SCAN": $content = "掃描場景 ".$object->EventKey; break; case "CLICK": switch ($object->EventKey) { case "COMPANY": $content = array(); $content[] = array("Title"=>"多圖文1標題", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.VEVb.com/?u=txw1958"); break; default: $content = "點擊菜單:".$object->EventKey; break; } break; case "LOCATION": $content = "上傳位置:緯度 ".$object->Latitude.";經度 ".$object->Longitude; break; case "VIEW": $content = "跳轉鏈接 ".$object->EventKey; break; case "MASSSENDJOBFINISH": $content = "消息ID:".$object->MsgID.",結果:".$object->Status.",粉絲數:".$object->TotalCount.",過濾:".$object->FilterCount.",發送成功:".$object->SentCount.",發送失敗:".$object->ErrorCount; break; default: $content = "receive a new event: ".$object->Event; break; } if(is_array($content)){ if (isset($content[0])){ $result = $this->transmitNews($object, $content); }else if (isset($content['MusicUrl'])){ $result = $this->transmitMusic($object, $content); } }else{ $result = $this->transmitText($object, $content); } return $result; } private function receiveTulingText($object){ try{ $keyWord = trim($object->Content); $userid = trim($object->FromUserName); $apiKey = "*******************************"; $apiURL = "http://www.tuling123.com/openapi/api?key=".$apiKey."&info=".$keyword."&user
新聞熱點
疑難解答