微信公众平台开发(58)自定义菜单

微信公众平台开发(58)自定义菜单

微信公众平台开发 微信公众平台开发模式 企业微信公众平台 自定义菜单 开发教程 
作者:方倍工作室 
地址:http://www.cnblogs.com/txw1958/p/weixin-58-custom-menu.html

 

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":"view",
               "name":"本地天气",
               "url":"http://m.hao123.com/a/tianqi"
            }]
       },
       {
           "name":"生活服务",
           "sub_button":[
            {
               "type":"click",
               "name":"话费充值",
               "key":"活动充值"
            },
            {
               "type":"click",
               "name":"彩票购买",
               "key":"活动彩票"
            },
            {
               "type":"click",
               "name":"充值中奖",
               "key":"活动中奖"
            }]
       },
       {
           "name":"关于方倍",
           "sub_button":[
            {
               "type":"click",
               "name":"公司简介",
               "key":"company"
            }]
       }]
 }';
 
$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;
    }

 

 

 

=============================================================

 

欢迎关注方倍工作室微信,了解我们及行业的最新动态

微信公众平台开发(58)自定义菜单

 

转载于:https://www.cnblogs.com/lanzhi/p/6467628.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109950.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 灵格斯:很好很强大的免费电子辞典「建议收藏」

    灵格斯:很好很强大的免费电子辞典「建议收藏」http://www.readfree.net/htm/200807/4624781.html 本文向大家推介近年来出现的国产免费电子辞典软件“灵格斯”(Lingoes),分为四个部分。首先是基本介绍,然后把它和几款同类软件进行了比较,接下来分享我在实用中发现的3个技巧,最后总结了有关的网址链接。本文以主观片面为原则,效果如何,请指教。1.介绍=============

    2022年7月15日
    30
  • 狄利克雷近似定理_莫比乌斯反演例题

    狄利克雷近似定理_莫比乌斯反演例题首先定义几个概念:1,卷积:设是两个数论函数(也就是说,以自然数集为定义域的复数值函数),则卷积运算定义为可以证明,卷积运算满足:1)交换律:由定义显然。2)结合律:考察两边作用在上,左边是右边是故两边相等。3)存在单位元使得我们需要故不难猜到应该定义为事实上,直接验证可得以上说明数论函数在卷积意义下构成一个交换群。

    2025年7月6日
    2
  • JAVA面试题:HashMap和Hashtable的区别

    JAVA面试题:HashMap和Hashtable的区别 HashMap和Hashtable的区别1.共同点:都是双列集合,底层都是哈希算法2.区别:*1.HashMap是线程不安全的,效率高,JDK1.2版本*Hashtable是线程安全的,效率低,JDK1.0版本*2.HashMap可以存储null键和null值*Hashtable不可以存储null键和null值3.代码示例:publicclasstes…

    2022年9月17日
    2
  • Android Studio 4.0.+NDK .so库生成打包

    Android Studio 4.0.+NDK .so库生成打包本篇博文主要讲解了使用AndroidStudio4.0.+生成.so文件详细过程,文中有通过Cmake自动生成和传统生成两种打包.so文件的方案。各方案有详细的图文介绍,保证一看就懂不学就会。对于NDK开发的进阶学习请继续阅读我的NDK系列博文。

    2022年6月21日
    38
  • SpringBoot接收LocalDate类型数据

    SpringBoot接收LocalDate类型数据@ApiOperation(“按月份查询日记集”)@PostMapping(“selectAll”)publicServiceResult<Object>selectAll(@RequestParam@NotNull@DateTimeFormat(iso=DateTimeFormat.ISO.DATE)LocalDatelocalDate){List<MysqlDiary>list=mysqlDiaryService…

    2022年6月24日
    35
  • java db4o,DB4O–java对象数据库[通俗易懂]

    java db4o,DB4O–java对象数据库[通俗易懂]特点直接存储java对象,抛弃对象映射的繁琐可以使用简单的查询语句致命缺点与java语言绑定demogitee地址https://gitee.com/ichiva/db4o-demo.git主要依赖org.fudaa.com.db4odb4o-java55.5.1编写测试用例官方实体类@DatapublicclassCar{privateIntegerid;privateString…

    2022年7月21日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号