推荐理由: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
7.修改完参数后,点击接口测试,如上图时就成功了。不然请检查你的参数是否修改
而后点击ApiSecret下面的应用测试地址,去开启应用
8.如上图,依次点击开启应用和确认开启
9.当看到如上图所示的时候,1都和个人同样,那么下面就能够去公众号测试了。
下面咱们去公众号掌上江大和RalphLuo测试
至此,这次任务所有完成
下面讲解核心代码
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×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));
}
在使用中,咱们可使用将公众号信息等数据存放到数据中,以便下次调用。
欢迎你们共同探讨!
文章出自腾讯云技术社区
(埋文字链 https://www.qcloud.com/commun...)
推荐你们关注腾讯云技术社区微信公众号:QcloudCommunity