php模拟腾讯微校第三方认证,利用腾讯云服务器进行微校开放平台开发

微校开放平台概述

腾讯微校是专注高校领域的公众号第三方平台,目前已接入公众号超过3万个,精准覆盖大学生超过2000万。通过微校开放平台,开发者可以轻松的直接向上千万大学生提供服务,公众号运营者也可以通过本文档来帮助拓展开发。

微校开放平台主要用于指导开发者如何借助微校提供的开放能力对已授权腾讯微校的公众号提供服务能力。具体公众平台接口调用规范和标准,请参照微信公众平台开发者文档。

需要向运营者提供应用配置页的应用,应在运营者开启应用时,将页面链接返回微校(具体可参见应用开启请求说明),微校会以iframe的形式加载到应用管理页面,无应用配置页的应用,微校会直接展示默认应用管理页面。

微校会为优秀的开发者提供一定奖励,同时,开发者也可以向微校申请技术优化指导、免费服务器等方面的支持。

服务器环境

腾讯云主机 Centos6.5 64bit (LAMP)

下面开始

登录微校开发平台,创建一个新的应用

b3170a895cfdc9815ffa4dd909ee5d28.png

比如我们像上面那样,弄一个消息回复类应用

a227e2f55cc4d658a6b533bb0f60c42d.png

填写相关信息,上传几张测试用图

424999c63452ea212bb18078130738a2.png

设置关键字 (我这里以“测试”为例,并且开启了模糊匹配)

填写wxtestopen.php地址

填写测试平台的原始id (如果不知道,可以看后面)

a29c9e6b97a1d26b4cd52ff50b229f9e.png

在填写完确认提交后,就可以看到上面这些信息,其中ApiKey和ApiSecret 下面要用

055767f4a47dc7c869189a5e81bb3359.png

如上图修改wxtestopen.php中的ApiSecret

修改wxtestapi.php中的ApiKey和ApiSecret

8b0069674f825875ce960429cd0fda0d.png

337ffdd1f2ddcbfcc0c53aabd0a0a35e.png

修改完参数后,点击接口测试,如上图时就成功了。否则请检查你的参数是否修改

然后点击ApiSecret下面的应用测试地址,去开启应用

e9f23e4f4782949d34c792d729d89e7b.png

如上图,依次点击开启应用和确认开启

08a4f1b84331ac27af4b0eabe6b60ff3.png

当看到如上图所示的时候,[1][2]都和我的一样,那么下面就可以去公众号测试了。

下面我们去公众号掌上江大和RalphLuo测试

a5cea4af5d0d7ef5020d8c0e5ab7f13c.png 

95857fd6c29d5f6b6502f52b30e184b9.png

04059e3ec6d01913b6c5228148fba487.png 

08831c67746c6a3152ee78b0caae6941.png

至此,此次任务全部完成

下面讲解核心代码

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&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));

}

在使用中,我们可以使用将公众号信息等数据存放到数据中,以便下次调用。

欢迎大家共同探讨!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值