zoukankan      html  css  js  c++  java
  • 利用腾讯云服务器进行微校开放平台开发

    版权声明:本文由追梦者原创文章,转载请注明出处: 
    文章原文链接:https://www.qcloud.com/community/article/225

    来源:腾云阁 https://www.qcloud.com/community

    微校开放平台概述

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

    1. 微校开放平台主要用于指导开发者如何借助微校提供的开放能力对已授权腾讯微校的公众号提供服务能力。具体公众平台接口调用规范和标准,请参照微信公众平台开发者文档
    2. 需要向运营者提供应用配置页的应用,应在运营者开启应用时,将页面链接返回微校(具体可参见应用开启请求说明),微校会以iframe的形式加载到应用管理页面,无应用配置页的应用,微校会直接展示默认应用管理页面。

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

    服务器环境

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

    下面开始

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

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

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

    4. 设置关键字 (我这里以“测试”为例,并且开启了模糊匹配)
      填写wxtestopen.php地址
      填写测试平台的原始id (如果不知道,可以看后面)

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

    6. 如上图修改wxtestopen.php中的ApiSecret
      修改wxtestapi.php中的ApiKeyApiSecret

    7. 修改完参数后,点击接口测试,如上图时就成功了。否则请检查你的参数是否修改
      然后点击ApiSecret下面的应用测试地址,去开启应用

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


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

    至此,此次任务全部完成
    下面讲解核心代码

    1. 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":""
      }]
      }
      }';
      }
      }
      
    2. 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())."
      技术支持 ".$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;
      }
      
    3. 微校获取公众号信息,签名算法等函数

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

    在使用中,我们可以使用将公众号信息等数据存放到数据中,以便下次调用。
    欢迎大家共同探讨!

  • 相关阅读:
    [android] 安卓消息推送的几种实现方式
    二进制部署 Kubernetes 集群
    nginx location反向代理不对等时的处理
    CentOS7用阿里云Docker Yum源在线安装Docker 17.03.2
    Harbor作为Docker的镜像中心
    Harbor 使用 Helm 一键安装
    MYSQL Innodb逻辑存储结构
    安装Redis 4.0单实例
    Redis慢查询日志
    创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作
  • 原文地址:https://www.cnblogs.com/purpleraintear/p/6078777.html
Copyright © 2011-2022 走看看