微信公众号添加菜单栏

public function menus(){
//创建菜单
$access_token = $this->get_accessToken();

    $url= "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
    $menus = ["button"=>array(

        array(
            "name"=>"********",
            "sub_button"=>array(
                array(
                    "type"=>"view",
                    "name"=>"****",
                    "url"=>"****"
                ),
                array(
              		"type"=>"view",
                    "name"=>"****",
                    "url"=>"****"
                ),
                array(
                      "type"=>"view",
                    "name"=>"****",
                    "url"=>"****"
                ),
                array(
                     "type"=>"view",
                    "name"=>"****",
                    "url"=>"****"
                ),
                array(
                       "type"=>"view",
                    "name"=>"****",
                    "url"=>"****"
                )
            )
        ),
        array(
             "type"=>"view",
               "name"=>"****",
               "url"=>"****"
        ),
        array(
            "name"=>"******",
            "sub_button"=>array(
                array(
                     "type"=>"view",
                     "name"=>"****",
                     "url"=>"****"
                ),
                array(
                      "type"=>"view",
                      "name"=>"****",
                   	  "url"=>"****"
                )
            )
        )
    ) ];
    $output = $this->wx_post($url,json_encode($menus,JSON_UNESCAPED_UNICODE));
    if($output == 0){
        echo($output);
    }
    return false;
}


public function get_accessToken()
{
    if(count($this->RedisConfig)==0){
        return 'api return error';
    }
    $Redis=new Redis($this->RedisConfig);
    $wx_access_token = $Redis->get("GZ_access_token");
    if(!($wx_access_token===false)){/* 在有效期,直接返回access_token */
        return $wx_access_token;
    }else{/* 不在有效期,重新发送请求,获取access_token */
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->WXPAppID.'&secret='.$this->WXPAppSecret;
        $result = $this->wx_get($url);
        if(strlen($result['content'])>10){
            $res = json_decode($result['content'],true);   //json字符串转数组
            if(array_key_exists("errcode", $res)){
                return $res['errmsg'];
            }elseif (array_key_exists("access_token", $res)){
                $Redis->set("GZ_access_token",$res['access_token'],7100);
                return $res['access_token'];
            }else{
                return 'api return error';
            }
        }else{
            return 'api return errors';
        }
    }
}

public function wx_get($url){
    $parm = [
        'url' => $url
    ];
    return curl_send($parm);
}

public function wx_post($url,$data){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

function curl_send($rq) {
    $curlHandle = curl_init();
    curl_setopt($curlHandle, CURLOPT_URL, $rq['url']);
    switch (true) {
        case isset($rq['method']) && in_array(strtolower($rq['method']), array('get', 'post', 'put', 'delete', 'head')):
            $method = strtoupper($rq['method']);
            break;
        case isset($rq['data']):
            $method = 'POST';
            break;
        default:
            $method = 'GET';
    }
    $header = isset($rq['header']) ? $rq['header'] : array();
    $header[] = 'Method:' . $method;
    
    $header[] = "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)";
    isset($rq['host']) && $header[] = 'Host:'.$rq['host'];
    curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, $method);
    isset($rq['timeout']) && curl_setopt($curlHandle, CURLOPT_TIMEOUT, $rq['timeout']);
    isset($rq['data']) && in_array($method, array('POST', 'PUT')) && curl_setopt($curlHandle, CURLOPT_POSTFIELDS, http_build_query($rq['data']));
    
    $ssl = substr($rq['url'], 0, 8) == "https://" ? true : false;
    if( isset($rq['cert'])){
        curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER,true);
        curl_setopt($curlHandle, CURLOPT_CAINFO, $rq['cert']);
        curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST,2);
        if (isset($rq['ssl_version'])) {
            curl_setopt($curlHandle, CURLOPT_SSLVERSION, $rq['ssl_version']);
        } else {
            curl_setopt($curlHandle, CURLOPT_SSLVERSION, 4);
        }
    }else if( $ssl ){
        curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER,false);   //true any ca
        curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST,1);       //check only host
        if (isset($rq['ssl_version'])) {
            curl_setopt($curlHandle, CURLOPT_SSLVERSION, $rq['ssl_version']);
        } else {
            curl_setopt($curlHandle, CURLOPT_SSLVERSION, 4);
        }
    }
    $return['content'] = curl_exec($curlHandle);
    $return['result'] = curl_getinfo($curlHandle);    
    curl_close($curlHandle);
    return $return;
}
您的问题是关于在PHP开发的微信公众号中,如何添加小程序菜单以及如何实现跳转小程序的问题,对吧? 首先,要在微信公众号添加小程序菜单,您需要在微信公众平台的开发者中心中,通过自定义菜单功能添加一个小程序菜单。具体步骤如下: 1. 登录微信公众平台开发者中心,进入“公众号设置”页面; 2. 在左侧菜单栏中选择“菜单设置”,然后点击“自定义菜单”; 3. 在自定义菜单页面中,点击“添加菜单”按钮; 4. 在添加菜单页面中,选择“小程序”类型; 5. 在小程序菜单设置页面中,填写小程序的AppID、小程序页面路径和小程序的名称; 6. 点击“保存”按钮,即可完成小程序菜单添加。 接下来,要实现在微信公众号中跳转小程序,您需要在PHP代码中调用微信公众号的JS-SDK,通过JS-SDK提供的API实现跳转小程序的功能。具体步骤如下: 1. 在PHP代码中引入微信公众号的JS-SDK文件; 2. 在PHP代码中调用微信公众号的JS-SDK初始化函数,传入微信公众号的AppID和当前页面的URL; 3. 在需要跳转小程序的地方,调用微信公众号的JS-SDK提供的API,传入小程序的AppID、小程序页面路径和其他参数(如是否要打开小程序的debug模式等); 4. 用户点击跳转小程序的按钮时,JS-SDK会自动调起微信客户端,并跳转到指定的小程序页面。 希望这个回答能够解决您的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值