版權聲明:本文由追夢者原創文章,轉載請註明出處:
文章原文連接:https://www.qcloud.com/community/article/225php
來源:騰雲閣 https://www.qcloud.com/communityhtml
騰訊微校是專一高校領域的公衆號第三方平臺,目前已接入公衆號超過3萬個,精準覆蓋大學生超過2000萬。經過微校開放平臺,開發者能夠輕鬆的直接向上千萬大學生提供服務,公衆號運營者也能夠經過本文檔來幫助拓展開發。算法
須要向運營者提供應用配置頁的應用,應在運營者開啓應用時,將頁面連接返回微校(具體可參見應用開啓請求說明),微校會以iframe的形式加載到應用管理頁面,無應用配置頁的應用,微校會直接展現默認應用管理頁面。json
微校會爲優秀的開發者提供必定獎勵,同時,開發者也能夠向微校申請技術優化指導、免費服務器等方面的支持。api
騰訊雲主機 Centos6.5 64bit (LAMP)數組
登陸微校開發平臺,建立一個新的應用服務器
好比咱們像上面那樣,弄一個消息回覆類應用微信
填寫相關信息,上傳幾張測試用圖微信公衆平臺
設置關鍵字 (我這裏以「測試」爲例,而且開啓了模糊匹配)
填寫wxtestopen.php
地址
填寫測試平臺的原始id (若是不知道,能夠看後面)curl
在填寫完確認提交後,就能夠看到上面這些信息,其中ApiKey
和ApiSecret
下面要用
如上圖修改wxtestopen.php
中的ApiSecret
修改wxtestapi.php
中的ApiKey
和ApiSecret
修改完參數後,點擊接口測試,如上圖時就成功了。不然請檢查你的參數是否修改
而後點擊ApiSecret
下面的應用測試地址,去開啓應用
如上圖,依次點擊開啓應用和確認開啓
至此,這次任務所有完成
下面講解核心代碼
open.php
(用於來自微校的應用開啓驗證)
核心代碼以下
if ($cal_sign == $sign) { $interval = time() - $param_array['timestamp']; if ($interval >= 0 && $interval < 10) { $url = 'http://xxx.com/wxtest/wxtestapi.php';//響應地址 $token='wxtest'; //token設置 echo '{ "errcode":0, "errmsg":"", "token":"'.$token.'", "url":"'.$url.'", "config_url":"", "custom":{ "response_type":1, "response_data":[{ "title":"微校應用測試", "picurl":"" }] } }'; } }
api.php【用於響應用戶發送的關鍵字】核心代碼以下
//接收文本消息 private function receiveText($object) { $media_id=$object->ToUserName;//公衆號原始id $re=$this->getghname($media_id); $ghname=$re['name']; //公衆號的名稱 switch ($object->Content) { case "測試文字": $content = "這是個文本消息".$ghname; break; //其餘的相似 default: $content = date("Y-m-d H:i:s",time())."\n技術支持 ".$ghname; break; } if(is_array($content)){ if (isset($content[0]['PicUrl'])){ $result = $this->transmitNews($object, $content); }else if (isset($content['MusicUrl'])){ $result = $this->transmitMusic($object, $content); } }else{ $result = $this->transmitText($object, $content); } return $result; }
微校獲取公衆號信息,簽名算法等函數
function getghname($media_id){ //根據原始id(gh_id)獲取公衆號信息 ,返回的是數組 $apikey="xxx"; //應用apikey $api_secret = 'yyy'; //應用api_secret $time=time(); $noncestr=$this->createNonceStr(); $param_array=array( 'media_id'=>$media_id, 'api_key'=>$apikey, 'timestamp'=>$time, 'nonce_str'=>$noncestr, ); $sign=$this->cal_sign($param_array,$api_secret); $res=str_replace(array("(",")"),"",file_get_contents("http://weixiao.qq.com/common/get_media_infop?media_id=$media_id&api_key=$apikey×tamp=$time&nonce_str=$noncestr&sign=$sign")); $re = json_decode($res,true); return $re; } function createNonceStr($length = 32) { //生成32位隨機字符 $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } function cal_sign($param_array,$api_secret) { //校驗信息 $names = array_keys($param_array); sort($names, SORT_STRING); $item_array = array(); foreach ($names as $name) { $item_array[] = "{$name}={$param_array[$name]}"; } $str = implode('&', $item_array) . '&key=' . $api_secret; return strtoupper(md5($str)); }
在使用中,咱們可使用將公衆號信息等數據存放到數據中,以便下次調用。歡迎你們共同探討!