zoukankan      html  css  js  c++  java
  • 微信公众平台自定义菜单及高级接口PHP SDK

    本文介绍介绍微信公众平台自定义菜单及高级接口的PHP SDK及使用方法。

    作者

    方倍工作室

    修正记录:

    2014.05.03 v1.0

    方倍工作室 http://www.cnblogs.com/txw1958/

    SDK 源码:

      1 /*
      2     方倍工作室 http://www.cnblogs.com/txw1958/
      3     CopyRight 2014 www.doucube.com All Rights Reserved
      4 */
      5 
      6 class class_weixin_adv
      7 {
      8     var $appid = "";
      9     var $appsecret = "";
     10 
     11     //构造函数,获取Access Token
     12     public function __construct($appid = NULL, $appsecret = NULL)
     13     {
     14         if($appid){
     15             $this->appid = $appid;
     16         }
     17         if($appsecret){
     18             $this->appsecret = $appsecret;
     19         }
     20 
     21         //hardcode
     22         $this->lasttime = 1395049256;
     23         $this->access_token = "nRZvVpDU7LxcSi7GnG2LrUcmKbAECzRf0NyDBwKlng4nMPf88d34pkzdNcvhqm4clidLGAS18cN1RTSK60p49zIZY4aO13sF-eqsCs0xjlbad-lKVskk8T7gALQ5dIrgXbQQ_TAesSasjJ210vIqTQ";
     24 
     25         if (time() > ($this->lasttime + 7200)){
     26             $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
     27             $res = $this->https_request($url);
     28             $result = json_decode($res, true);
     29             //save to Database or Memcache
     30             $this->access_token = $result["access_token"];
     31             $this->lasttime = time();
     32         }
     33     }
     34 
     35     //获取关注者列表
     36     public function get_user_list($next_openid = NULL)
     37     {
     38         $url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$this->access_token."&next_openid=".$next_openid;
     39         $res = $this->https_request($url);
     40         return json_decode($res, true);
     41     }
     42 
     43     //获取用户基本信息
     44     public function get_user_info($openid)
     45     {
     46         $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
     47         $res = $this->https_request($url);
     48         return json_decode($res, true);
     49     }
     50 
     51     //创建菜单
     52     public function create_menu($data)
     53     {
     54         $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$this->access_token;
     55         $res = $this->https_request($url, $data);
     56         return json_decode($res, true);
     57     }
     58 
     59     //发送客服消息,已实现发送文本,其他类型可扩展
     60     public function send_custom_message($touser, $type, $data)
     61     {
     62         $msg = array('touser' =>$touser);
     63         switch($type)
     64         {
     65             case 'text':
     66                 $msg['msgtype'] = 'text';
     67                 $msg['text']    = array('content'=> urlencode($data));
     68                 break;
     69         }
     70         $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$this->access_token;
     71         return $this->https_request($url, urldecode(json_encode($msg)));
     72     }
     73 
     74     //生成参数二维码
     75     public function create_qrcode($scene_type, $scene_id)
     76     {
     77         switch($scene_type)
     78         {
     79             case 'QR_LIMIT_SCENE': //永久
     80                 $data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$scene_id.'}}}';
     81                 break;
     82             case 'QR_SCENE':       //临时
     83                 $data = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$scene_id.'}}}';
     84                 break;
     85         }
     86         $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->access_token;
     87         $res = $this->https_request($url, $data);
     88         $result = json_decode($res, true);
     89         return "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($result["ticket"]);
     90     }
     91     
     92     //创建分组
     93     public function create_group($name)
     94     {
     95         $data = '{"group": {"name": "'.$name.'"}}';
     96         $url = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=".$this->access_token;
     97         $res = $this->https_request($url, $data);
     98         return json_decode($res, true);
     99     }
    100     
    101     //移动用户分组
    102     public function update_group($openid, $to_groupid)
    103     {
    104         $data = '{"openid":"'.$openid.'","to_groupid":'.$to_groupid.'}';
    105         $url = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=".$this->access_token;
    106         $res = $this->https_request($url, $data);
    107         return json_decode($res, true);
    108     }
    109     
    110     //上传多媒体文件
    111     public function upload_media($type, $file)
    112     {
    113         $data = array("media"  => "@".dirname(__FILE__).'\'.$file);
    114         $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=".$this->access_token."&type=".$type;
    115         $res = $this->https_request($url, $data);
    116         return json_decode($res, true);
    117     }
    118 
    119     //https请求(支持GET和POST)
    120     protected function https_request($url, $data = null)
    121     {
    122         $curl = curl_init();
    123         curl_setopt($curl, CURLOPT_URL, $url);
    124         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    125         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    126         if (!empty($data)){
    127             curl_setopt($curl, CURLOPT_POST, 1);
    128             curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    129         }
    130         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    131         $output = curl_exec($curl);
    132         curl_close($curl);
    133         return $output;
    134     }
    135 }

    方倍工作室 http://www.cnblogs.com/txw1958/

    调用方法:

    初始化对象

    $weixin = new class_weixin_adv("wx6222221b11111111", "3079cb22ad383ae7371d12aed1b2d0cc");

    查看Access Token

    var_dump($weixin->access_token);

    创建二维码

    var_dump($weixin->create_qrcode("QR_SCENE", "134324234"));

    获取关注者列表

    var_dump($weixin->get_user_list());

    获取用户信息

    $openid = "oLVPpjkttuZTbwDwN7vjHNlqsmPs";
    var_dump($weixin->get_user_info($openid));

    创建菜单

    $data ='{"button":[{"name":"方倍工作室","sub_button":[{"type":"click","name":"公司简介","key":"公司简介"},{"type":"click","name":"社会责任","key":"社会责任"},{"type":"click","name":"联系我们","key":"联系我们"}]},{"name":"产品服务","sub_button":[{"type":"click","name":"微信平台","key":"微信平台"},{"type":"click","name":"微博应用","key":"微博应用"},{"type":"click","name":"手机网站","key":"手机网站"}]},{"name":"技术支持","sub_button":[{"type":"click","name":"文档下载","key":"文档下载"},{"type":"click","name":"技术社区","key":"技术社区"},{"type":"click","name":"服务热线","key":"服务热线"}]}]}';
    var_dump($weixin->create_menu($data));

    用户分组 方倍工作室 http://www.cnblogs.com/txw1958/

    var_dump($weixin->create_group("老师"));
    var_dump($weixin->update_group($openid, "100"));

    上传下载多媒体

    var_dump($weixin->upload_media("image","pondbay.jpg"));

    发送客服消息

    var_dump($weixin->send_custom_message($openid, "text", "asdf"));

     

  • 相关阅读:
    0--分析JDK及其他开源框架的初衷
    2.2--RandomAccessFile实现类和它的关联类FileChannel
    2.1--RandomAccessFile实现类的关联类FileChannel类图
    2--IO包DataInput接口类图
    1--UML语言IO包组件图
    跟老齐学Python Django实战 5/n Second edition
    跟老齐学Python Django实战 3/n Second edition
    Vim
    跟老齐学Python Django实战 2/n Second edition
    跟老齐学Python Django实战 1/n Second edition
  • 原文地址:https://www.cnblogs.com/txw1958/p/weixin-advanced-interface-sdk.html
Copyright © 2011-2022 走看看