首页 > 建站资源 > 微信营销 > 微信公众平台服务号自定义菜单开发代码实例

微信公众平台服务号自定义菜单开发代码实例

时间:2013-08-26    来源:方倍工作室

1. 申请成为服务号

2. 申请自定义菜单,得到appid和appsecert

3. 用appid和appsecert获得access token
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

{"access_token":"N2L7KXa084WvelONYjkJ_traBMCCvy_UKmpUUzlrQ0EA2yNp3Iz6eSUrRG0bhaR_viswd50vDuPkY5nG43d1gbm-olT2KRMxOsVE08RfeD9lvK9lMguNG9kpIkKGZEjIf8Jv2m9fFhf8bnNa-yQH3g","expires_in":7200}

4. 将菜单组织成结构,通过post提交给接口

$xjson = '{
      "button":[
      {
           "name":"天气预报",
           "sub_button":[
            {
               "type":"click",
               "name":"北京天气",
               "key":"天气北京"
            },
            {
               "type":"click",
               "name":"上海天气",
               "key":"天气上海"
            },
            {
               "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":"方倍博客"
            }]
       }]
 }';
 
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=p0tEu5tgSgQmZP4UKa1Bvd2Y9BL-03Uz2FXj2j-LX9hFuHt49ExIOyvKtNi4DWycl73Vs2SIsl1I6QqEpzyQpBNK2vRFHZKk1fS6HsXMWn522cvoOAhGX13aSj4zmoU5sQnX-FEpD36XwQJqw8IXkQ";
$result = vpost($url,$xjson);
var_dump($result);
 
function vpost($url,$data){ // 模拟提交数据函数
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器
    // curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    // curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包x
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    $tmpInfo = curl_exec($curl); // 执行操作
    if (curl_errno($curl)) {
       echo 'Errno'.curl_error($curl);//捕抓异常
    }
    curl_close($curl); // 关闭CURL会话
    return $tmpInfo; // 返回数据
}

5. 在消息接口中处理event事件,其中的click代表菜单点击,通过响应菜单结构中的key值回应消息

private function receiveEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr[] = array("Title" =>"欢迎关注方倍工作室", "Description" =>"点击图片关注或者搜索号码beancube", "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"weixin://addfriend/beancube");
            case "unsubscribe":
                $contentStr = "";
                break;
            case "CLICK":
                switch ($object->EventKey)
                {
                    case "company":
                        $contentStr[] = array("Title" =>"公司简介", "Description" =>"方倍工作室提供移动互联网相关的产品及服务,包括新浪微博应用、微信公众平台接口、手机版网站等", "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"weixin://addfriend/beancube");
                        break;
                    default:
                        $contentStr[] = array("Title" =>"默认菜单回复", "Description" =>"您正在使用的是方倍工作室的自定义菜单测试接口", "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"weixin://addfriend/beancube");
                        break;
                }
                break;
            default:
                $contentStr = "receive a new event: ".$object->Event;
                break;      

       }
        return $contentStr;
    }
相关推荐
微信5.0上线 自定义菜单申请将重新开启
微信公众平台开发模式自定义菜单开发指南
微信公众平台创建自定义菜单的PHP代码
微信公众帐号自定义菜单创建及事件响应开发教程 附源代码
微信公众帐号自定义菜单接口开发流程示例
微信公众号自定义菜单申请与使用问题解答
微信服务号申请自定义菜单的介绍
微信公众平台自定义菜单创建的Java代码示例
从微信自定义菜单猜想微信App平台化的未来
微信公众平台自定义菜单开发文档详解
微信开发教程:自定义菜单扫一扫、发图片、发地理位置
微信公众号开放自定义菜单 可输入跳转网址
微信公众号页面模版功能和图文消息正文可插入历史群发链
七个微信5.0公众账号之服务号与订阅号运营经验分享
医疗网站微信公众帐号营销该如何选择订阅号与服务号
新版微信公众平台服务号与订阅号区别官方说明
探寻微信公众平台服务号与订阅号背后的创业机会
微信公众平台服务号运营三部曲
南派三叔推微信公众号预示网络文学变局?
实例讲解如何利用微信平台建立品牌口碑
新版微信商业应用猜想
微信5.0的APP平台战略
微信公众帐号新玩法 支持微信支付与会员模式
微信代开发:微信公众平台背后的淘金者
微信银行服务号扎堆 商业社交或成盈利来源
微信商业化再出新招 公众服务号收年费3000元
化妆品行业微信O2O模式实践案例分享
微信公众平台商业化 按需收费或是最好模式
传微信服务号300元/年 今日全面开放接口
微信公众平台昨升级 真正的平台即服务
微信支付接口开放:收保证金2万元 费率0.6%
微信调整公众平台规则:月度推送增至4条
微信公众平台未来产生的9大商机展望

精彩推荐

热门教程