博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信公众号之自定义菜单
阅读量:5914 次
发布时间:2019-06-19

本文共 5595 字,大约阅读时间需要 18 分钟。

自定义菜单,很嗨皮!

需要json传递数据!

422101-20180719215233329-489119371.png

微信提供三个接口,一个是创建菜单,一个是查看菜单,一个是删除菜单!

_get_access_token(); $uri = self::API_CREATE_MENU.'?access_token='.$access_token; $params = [ 'button' => [ [ 'type'=>'click', 'name'=>'今日歌曲', 'key'=>'V1001_TODAY_MUSIC' ], [ 'name'=> '菜单', 'sub_button' => [ [ 'type' => 'view', 'name' => '百度', 'url' => 'http://www.baidu.com/' ], [ 'type' => 'view', 'name' => 'Bing', 'url' => 'http://www.bing.com/' ], [ 'type' => 'view', 'name' => '搜搜', 'url' => 'http://www.soso.com/' ], ] ] ] ]; $res_data = Http::doPostJson($uri, $params); vendor("Log.Clog"); Clog::setLog($res_data); $res_data = json_decode($res_data, true); if ($res_data['errcode'] != 0) { $this->ajaxReturn($this->jsonError(10001, '接口请求失败')); } $this->ajaxReturn($this->jsonSuccess(1, '成功', $res_data)); } public function get() { $access_token = $this->_get_access_token(); $params = [ 'access_token' => $access_token ]; $res_data = Http::newDoGet(self::API_GET_MENU, $params); $res_data = json_decode($res_data, true); if ($res_data['errcode'] != 0) { $this->ajaxReturn($this->jsonError(10001, '接口请求失败')); } $this->ajaxReturn($this->jsonSuccess(1, '成功', $res_data)); } public function delete() { $access_token = $this->_get_access_token(); $params = [ 'access_token' => $access_token ]; $res_data = Http::newDoGet(self::API_DELETE_MENU, $params); $res_data = json_decode($res_data, true); if ($res_data['errcode'] != 0) { $this->ajaxReturn($this->jsonError(10001, '接口请求失败')); } $this->ajaxReturn($this->jsonSuccess(1, '成功', $res_data)); } private function _get_access_token() { vendor('Func.Http'); if (preg_match('/(http:\/\/)|(https:\/\/)/i', C('SELF_HOSTNAME'))) { $uri = C('SELF_HOSTNAME').'/AccessToken/get'; } else { $uri = 'http://'.C('SELF_HOSTNAME').'/AccessToken/get'; } // 获取access_token $access_token_result = Http::doGet($uri); $access_token_result = json_decode($access_token_result, true); $access_token = $access_token_result['data']['access_token']; return $access_token; }}

创建的时候会失败!

// 通过POST方式发送json数据static public function doPostJson($url = '', $param = [] ,$contentType = 'json') {        $ch = curl_init();        // 请求地址        curl_setopt($ch, CURLOPT_URL, $url);        // 请求参数类型        $param = $contentType == 'json' ? urldecode(json_encode($param,JSON_UNESCAPED_UNICODE)) : http_build_query($param);        // 关闭https验证        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);        // post提交        if($param){            curl_setopt($ch, CURLOPT_POST, 1);            curl_setopt($ch, CURLOPT_POSTFIELDS, $param);        }        // 返回的数据是否自动显示        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        // 执行并接收响应结果        $output = curl_exec($ch);        // 关闭curl        curl_close($ch);        return $output !== false ? $output : false;}

这里的

$param = $contentType == 'json' ? urldecode(json_encode($param,JSON_UNESCAPED_UNICODE)) : http_build_query($param);

是关键!!!

很有意思!!!

可以结合自动回复来实现更加复杂的功能!!!

菜单还可以跳转到小程序!!!

模板消息也可以跳转到小程序!!!

再来一个小案例,

$params = [    'button' => [        [            'name'=> '从"新"出发',            'sub_button' => [                [                    'type' => 'view',                    'name' => '甜蜜新品',                    'url' => 'http://www.breadtalk.com.cn/'                ],                [                    'type' => 'view',                    'name' => '送!月饼券',                    'url' => 'http://www.breadtalk.com.cn/'                ],                [                    'type' => 'view',                    'name' => '新语之旅',                    'url' => 'http://www.breadtalk.com.cn/'                ]            ]        ],        [            'type'=>'miniprogram',            'name'=>'甜蜜商城',            'url'=>'http://mp.weixin.qq.com',            'appid'=>'xxx',            'pagepath'=>'pages/index/index'        ],        [            'name'=> '我的新语',            'sub_button' => [                [                    'type'=>'miniprogram',                    'name'=>'我的订单',                    'url'=>'http://mp.weixin.qq.com',                    'appid'=>'xxx',                    'pagepath'=>'pages/order/index'                ],                [                    'type'=>'miniprogram',                    'name'=>'优惠券',                    'url'=>'http://mp.weixin.qq.com',                    'appid'=>'xxx',                    'pagepath'=>'pages/coupon/my_coupon'                ],                [                    'type'=>'miniprogram',                    'name'=>'会员充值',                    'url'=>'http://mp.weixin.qq.com',                    'appid'=>'xxx',                    'pagepath'=>'pages/balance/add_balance'                ]            ]        ]    ]];

转载地址:http://zmgpx.baihongyu.com/

你可能感兴趣的文章
白话composer的简单使用
查看>>
SPI机制与策略模式
查看>>
使用 Docker 和 Traefik 搭建 GitLab (前篇)
查看>>
如何让mysql索引更快一点
查看>>
免费logo创建器launchaco
查看>>
从拥挤的兔子到伪随机数算法
查看>>
随便写写
查看>>
kotlin 中 Collection 相关操作
查看>>
java序列化
查看>>
什么是 JSON ?
查看>>
WinRAR注册
查看>>
我的友情链接
查看>>
7个常见Javascript框架介绍
查看>>
高焕堂提倡:创新设计的四项假设性思维
查看>>
我的友情链接
查看>>
路由器设置禁用应用
查看>>
mysql 安装
查看>>
SQL的优化与监视(SQL Server Profiler)
查看>>
Vagrant 实例导出box
查看>>
微信公众号开发(一)
查看>>