微信自定义菜单实现

//获取access_token并更新

function access_token(){

    $wxconf = Db::name('wxconfig')->where('id',1)->find();

    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$wxconf['appid']."&secret=".$wxconf['appsecret'];

    $access_token = json_decode(http_get($url),true);

    return Db::name('wxconfig')->where('id',1)->update(['access_token' => $access_token['access_token'],'expire'=>time() + 7100]);

}



//创建微信菜单

function createmenu(){

    $wxconf = Db::name('wxconfig')->where('id',1)->find();

    $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$wxconf['access_token'];

    //查询菜单

    $list = generateTrees(Db::name('wxmenu')->select());

    $data = array('button'=>$list);

    // 注意设置菜单发送json数据

    return $result = https_post($url,json_encode($data,JSON_UNESCAPED_UNICODE));

}





function https_post($url,$data){

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $url); 

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

    curl_setopt($curl, CURLOPT_POST, 1);

    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($curl);

    if (curl_errno($curl)) {

       return 'Errno'.curl_error($curl);

    }

    curl_close($curl);

    return $result;

}



function http_get($url){

    $oCurl = curl_init();

    if(stripos($url,"https://")!==FALSE){

        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);

        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);

        curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1

    }

    curl_setopt($oCurl, CURLOPT_URL, $url);

    curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );

    $sContent = curl_exec($oCurl);

    $aStatus = curl_getinfo($oCurl);

    curl_close($oCurl);

    if(intval($aStatus["http_code"])==200){

        return $sContent;

    }else{

        return false;

    }

}



//生成微信提交格式菜单

function generateTrees($items = array()) {

    $tree = array();

    if($items) {

        $newitems = array();

        foreach ($items as $v) {

            $newitems[$v['id']] = $v;

        }

        foreach($newitems as $item) {

            if(isset($newitems[$item['pid']])){

                unset($newitems[$item['pid']]['type']);

                unset($newitems[$item['pid']]['key']);

                unset($newitems[$item['pid']]['url']);

                unset($newitems[$item['id']]['id']);

                unset($newitems[$item['id']]['pid']);

                if($newitems[$item['id']]['type'] == 'view') {

                    $newitems[$item['id']]['url'] = $newitems[$item['id']]['key'];

                    unset($newitems[$item['id']]['key']);

                }

                $newitems[$item['pid']]['sub_button'][] = &$newitems[$item['id']];

            }else{

                unset($newitems[$item['id']]['id']);

                unset($newitems[$item['id']]['pid']);

                if($newitems[$item['id']]['type'] == 'view') {

                    $newitems[$item['id']]['url'] = $newitems[$item['id']]['key'];

                    unset($newitems[$item['id']]['key']);

                }

                $tree[] = &$newitems[$item['id']];

            }

        }

    }

    return $tree;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值