利用騰訊雲服務器進行微校開放平臺開發

推薦理由:php

咱們知道,騰訊微校是專一高校領域的公衆號第三方平臺,那麼經過微校開放平臺,開發者能夠輕鬆的直接向上千萬大學生提供服務;下面我推薦的這篇文章,就是幫助公衆號運營者拓展開發的。但願對你們有所幫助。算法

如下爲文章原文:json

微校開放平臺概述api

騰訊微校是專一高校領域的公衆號第三方平臺,目前已接入公衆號超過3萬個,精準覆蓋大學生超過2000萬。經過微校開放平臺,開發者能夠輕鬆的直接向上千萬大學生提供服務,公衆號運營者也能夠經過本文檔來幫助拓展開發。數組

微校開放平臺主要用於指導開發者如何藉助微校提供的開放能力對已受權騰訊微校的公衆號提供服務能力。具體公衆平臺接口調用規範和標準,請參照微信公衆平臺開發者文檔。
須要向運營者提供應用配置頁的應用,應在運營者開啓應用時,將頁面連接返回微校(具體可參見應用開啓請求說明),微校會以iframe的形式加載到應用管理頁面,無應用配置頁的應用,微校會直接展現默認應用管理頁面。服務器

微校會爲優秀的開發者提供必定獎勵,同時,開發者也能夠向微校申請技術優化指導、免費服務器等方面的支持。微信

服務器環境微信公衆平臺

騰訊雲主機 Centos6.5 64bit (LAMP)curl

下面開始函數

登陸微校開發平臺,建立一個新的應用
圖片描述

2.好比咱們像上面那樣,弄一個消息回覆類應用
圖片描述

3.填寫相關信息,上傳幾張測試用圖
圖片描述

4.設置關鍵字 (我這裏以「測試」爲例,而且開啓了模糊匹配)
填寫wxtestopen.php地址
填寫測試平臺的原始id (若是不知道,能夠看後面)
圖片描述

5.在填寫完確認提交後,就能夠看到上面這些信息,其中ApiKey和ApiSecret 下面要用
圖片描述

6.如上圖修改wxtestopen.php中的ApiSecret
修改wxtestapi.php中的ApiKey和ApiSecret

clipboard.png

clipboard.png

7.修改完參數後,點擊接口測試,如上圖時就成功了。不然請檢查你的參數是否修改
而後點擊ApiSecret下面的應用測試地址,去開啓應用
圖片描述

8.如上圖,依次點擊開啓應用和確認開啓
圖片描述

圖片描述

圖片描述

9.當看到如上圖所示的時候,1都和個人同樣,那麼下面就能夠去公衆號測試了。
下面咱們去公衆號掌上江大和RalphLuo測試
圖片描述

clipboard.png

clipboard.png

clipboard.png

至此,這次任務所有完成
下面講解核心代碼

open.php(用於來自微校的應用開啓驗證)
核心代碼以下

if ($cal_sign == $sign) {
$interval = time() - $param_array['timestamp'];
if ($interval >= 0 && $interval < 10) {
$url = 'http://xxx.com/wxtest/wxtesta...';//響應地址
$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&timestamp=$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));
}
在使用中,咱們可使用將公衆號信息等數據存放到數據中,以便下次調用。
歡迎你們共同探討!

文章出自騰訊雲技術社區

(埋文字鏈 https://www.qcloud.com/commun...

推薦你們關注騰訊雲技術社區微信公衆號:QcloudCommunity
圖片描述

相關文章
相關標籤/搜索