微信公众平台自定义菜单及高级接口PHP SDK

Posted New.Young

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信公众平台自定义菜单及高级接口PHP SDK相关的知识,希望对你有一定的参考价值。

<?php
/*
    方倍工作室 http://www.cnblogs.com/txw1958/
    CopyRight 2014 www.doucube.com All Rights Reserved
*/

class class_weixin_adv
{
    var $appid = "wx197df8cc9c288a59";
    var $appsecret = "26b93788d66d8b49251aa4b897a1b94a";

    //构造函数,获取Access Token
    public function __construct($appid = NULL, $appsecret = NULL)
    {
        if($appid){
            $this->appid = $appid;
        }
        if($appsecret){
            $this->appsecret = $appsecret;
        }

        //hardcode
        $this->lasttime = 1395049256;
        $this->access_token = "nRZvVpDU7LxcSi7GnG2LrUcmKbAECzRf0NyDBwKlng4nMPf88d34pkzdNcvhqm4clidLGAS18cN1RTSK60p49zIZY4aO13sF-eqsCs0xjlbad-lKVskk8T7gALQ5dIrgXbQQ_TAesSasjJ210vIqTQ";

        if (time() > ($this->lasttime + 7200)){
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
            $res = $this->https_request($url);
            $result = json_decode($res, true);
            //save to Database or Memcache
            $this->access_token = $result["access_token"];
            $this->lasttime = time();
        }
    }

    //获取关注者列表
    public function get_user_list($next_openid = NULL)
    {
        $url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$this->access_token."&next_openid=".$next_openid;
        $res = $this->https_request($url);
        return json_decode($res, true);
    }

    //获取用户基本信息
    public function get_user_info($openid)
    {
        $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
        $res = $this->https_request($url);
        return json_decode($res, true);
    }

    //创建菜单
    public function create_menu($data)
    {
        $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$this->access_token;
        $res = $this->https_request($url, $data);
        return json_decode($res, true);
    }

    //发送客服消息,已实现发送文本,其他类型可扩展
    public function send_custom_message($touser, $type, $data)
    {
        $msg = array(\'touser\' =>$touser);
        switch($type)
        {
            case \'text\':
                $msg[\'msgtype\'] = \'text\';
                $msg[\'text\']    = array(\'content\'=> urlencode($data));
                break;
        }
        $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$this->access_token;
        return $this->https_request($url, urldecode(json_encode($msg)));
    }

    //生成参数二维码
    public function create_qrcode($scene_type, $scene_id)
    {
        switch($scene_type)
        {
            case \'QR_LIMIT_SCENE\': //永久
                $data = \'{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": \'.$scene_id.\'}}}\';
                break;
            case \'QR_SCENE\':       //临时
                $data = \'{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": \'.$scene_id.\'}}}\';
                break;
        }
        $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->access_token;
        $res = $this->https_request($url, $data);
        $result = json_decode($res, true);
        return "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($result["ticket"]);
    }
    
    //创建分组
    public function create_group($name)
    {
        $data = \'{"group": {"name": "\'.$name.\'"}}\';
        $url = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=".$this->access_token;
        $res = $this->https_request($url, $data);
        return json_decode($res, true);
    }
    
    //移动用户分组
    public function update_group($openid, $to_groupid)
    {
        $data = \'{"openid":"\'.$openid.\'","to_groupid":\'.$to_groupid.\'}\';
        $url = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=".$this->access_token;
        $res = $this->https_request($url, $data);
        return json_decode($res, true);
    }
    
    //上传多媒体文件
    public function upload_media($type, $file)
    {
        $data = array("media"  => "@".dirname(__FILE__).\'\\\\\'.$file);
        $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=".$this->access_token."&type=".$type;
        $res = $this->https_request($url, $data);
        return json_decode($res, true);
    }

    //https请求(支持GET和POST)
    protected function https_request($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
}

//初始化对象
$weixin = new class_weixin_adv("wx197df8cc9c288a59", "26b93788d66d8b49251aa4b897a1b94a");
//查看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));
//用户分组 
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"));

 

以上是关于微信公众平台自定义菜单及高级接口PHP SDK的主要内容,如果未能解决你的问题,请参考以下文章

微信公众号用户与网站用户的绑定-自定义菜单获取Openid

微信公众平台开发教程新手解惑40则

微信公众帐号开发-自定义菜单的创建及菜单事件响应

微信公众平台开发教程第1篇-新手解惑

PHP微信公众平台开发高级篇—微信JS-SDK

php微信开发实现自定义菜单功能