微信公众平台开发(三)——二维码、创建菜单

一、二维码

目前有2种类型的二维码:点击查看在线文档

1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的7天(即604800秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。永久二维码时最大值为100000(目前参数只支持1--100000)。

下面的代码是获取永久二维码的事例:

/**
     * 获取永久二维码需要的ticket
     * @param $access_token access_token
     * @param $sceneId 场景值id
     * @return bool|mixed
     */
    public function getQrticket($access_token, $sceneId)
    {$url = ‘https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=‘ . $access_token;
        $raw = array(
                ‘action_name‘ => ‘QR_LIMIT_SCENE‘,
                ‘action_info‘ => array(
                        ‘scene‘ => array(
                                ‘scene_id‘ => $sceneId
                        )
                )
        );
        $json = json_encode($raw);
        $res = $this->rawpost($url, $json);
        if ($res === false) {
            return false;
        }
        $qrres = json_decode($res, true);
        if (isset($qrres[‘errcode‘])) {
            return false;
        }
        return $qrres;
    }

返回的JSON将如下图所示:

这个JSON中的URL就是二维码的内容,接下来就是将URL转换为二维码,高端点的话可以通过代码,我偷懒了下,就直接用在线制作二维码来做了。点击打开在线二维码制作

这边我通过微信扫二维码而关注的,将会推送不同的提示消息。下面是部分的代码:

if (isset($msgObj->EventKey) && preg_match(‘/qrscene_(.*)/‘, $msgObj->EventKey, $scene)) {
                //扫码关注
                switch ($scene[1]) {
                    case AppConst::SCENE_ALCOHOL:
                        $pushData[‘Title‘] = ‘标题‘;
                        break;
                }
                $pushData[‘PicUrl‘] = ‘http://mmbiz.qpic.cn‘;
                $pushData[‘Description‘] = ‘描述!‘;
                $pushData[‘Url‘] = ‘http://mp.weixin.qq.com‘;
                $msg = $weixin->createRawTuWenMsg($fromUserName, $openId, array($pushData));

            }

二、创建菜单

1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。

2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。

3、创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。

测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。点击查看在线文档

自定义菜单接口可实现多种类型按钮,这里我就介绍了两种,如下:

1、click:点击推事件

用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;

2、view:跳转URL

用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。

public function actionCreatemenu()
    {
        $token = $this->get(‘token‘);
        $innerWeixinKey = WEIXIN_INNER_KEY;
        $trueToken = md5(‘menu‘ . $innerWeixinKey . ‘menu‘);
        if ($token != $trueToken) {
            $this->innerOutput(1, ‘无法通过请求认证‘);
        }
        $weixin = new Weixin();
        //请注意菜单中的中文一定要采用某种方编码
        $menu = array(
            ‘button‘ => array(
                    array(
                        ‘name‘ => $this->encodeZH(‘菜单一‘),
                        ‘sub_button‘ => array(
                            array(
                                ‘type‘ => ‘view‘,
                                ‘name‘ => $this->encodeZH(‘子菜单一‘),
                                ‘key‘ => ‘MENU_GENE_INDEX‘,
                                ‘url‘ => ‘http://mp.weixin.qq.com/‘
                            ),
                            array(
                                ‘type‘ => ‘view‘,
                                ‘name‘ => $this->encodeZH(‘趣味文章‘),
                                ‘key‘ => ‘MENU_ARTICLE‘,
                                ‘url‘ => ‘http://mp.weixin.qq.com‘
                            ),
                            array(
                                ‘type‘ => ‘view‘,
                                ‘name‘ => $this->encodeZH(‘产品预告‘),
                                ‘key‘ => ‘MENU_PRODUCT‘,
                                ‘url‘ => ‘http://mp.weixin.qq.com/‘
                            )
                        )
                    ),
                    array(
                        ‘name‘ => $this->encodeZH(‘产品流程‘),
                        ‘sub_button‘ => array(
                            array(
                                ‘type‘ => ‘view‘,
                                ‘name‘ => $this->encodeZH(‘武松打虎‘),
                                ‘key‘ => ‘MENU_GAME‘,
                                ‘url‘ => ‘xxxx‘
                            ),
                            array(
                                ‘type‘ => ‘view‘,
                                ‘name‘ => $this->encodeZH(‘产品详情‘),
                                ‘key‘ => ‘MENU_PRODUCT_DETAIL‘,
                                ‘url‘ => ‘http://mp.weixin.qq.com/‘
                            )
                        )
                    )
                )
        );

        $menuMsg = $this->decodeZHMsg(json_encode($menu));

        $accessMongo = new WeixinAccessToken();
        $access_token = $accessMongo->getAccessToken();
        if (!$access_token) {
            $this->innerOutput(2, ‘无法获取access_token‘);
        }
        $weixin = new Weixin();
        $res = $weixin->customMenu($menuMsg, $access_token);
        if (!$res) {
            $this->innerOutput(3, ‘菜单创建失败‘);
        }
        $this->innerOutput(0, ‘菜单创建成功‘);
    }

1、代码的开始用WEIXIN_INNER_KEY做了一次简单的校验,不做也可以

2、开始组织菜单的结构需要name、type等

3、获取到普通的token,这里可以参照上一篇的方法获取到。

4、注意上面的代码中有encodeZH和decodeZHMsg这两个方法,用于编码的。

/**
     * 针对中文字符串编码
     * @param $name
     * @return string
     */
    private function encodeZH($name)
    {
        return ‘[@‘ . base64_encode($name) . ‘@]‘;
    }
/**
     * 针对消息中存在中文编码过的串进行解码
     * @param $msg
     * @return mixed
     */
    private function decodeZHMsg($msg)
    {
        return preg_replace_callback(‘/\[\@(.+?)\@\]/‘, function ($match) {
            return base64_decode($match[1]);
        }, $msg);
    }

demo下载:

http://download.csdn.net/detail/loneleaf1/9045731

摘自:http://www.cnblogs.com/strick/p/4754305.html

时间: 2024-10-11 13:21:04

微信公众平台开发(三)——二维码、创建菜单的相关文章

【微信公共平台开发】二维码的获取

<?php $access_token="p3Tb67358J6l0zioGqNGnHSkbNES5ZDY88qZTZBaobJtN2udLrnrKnimzGpKvsC9ii0edJ6Yk2xnffkgbEVxWhzgREwvAmF0C7JFwNx9gYQNLUcAIAECL"; //生成永久二维码 $qrcode='{"action_name": "QR_LIMIT_SCENE", "action_info": {&q

微信公众平台带参数二维码配置工具的实现

配置带参数的二维码同样需要先获取Access Token,获取方法在上一篇文章中有描述:http://www.cnblogs.com/leoyoungblog/p/5032249.html. 利用获取到的Access Token,可以创建二维码的Ticket.通过POST方法向服务器提交相关信息,JS代码如下: 1 function getTicket() 2 { 3 var url = "qrcode_manage.php?access_token="+$("#access

微信公众平台开发(二) 微信公众平台示例代码分析

原文地址:http://www.cnblogs.com/mchina/archive/2013/06/07/3120592.html 一.摘要 微信公众平台提供了一个简单的php示例代码,在做进一步开发之前,我们有必要将其详细了解一下. 二.获取代码 微信官网:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip 三.分析代码 完整代码如下: <?php /** * wechat php test */ //define your

微信公众平台开发(二)——access_token、日志

一.access_token 1)两种access_token,网页授权access_token和普通access_token 1.微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息. 2.其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用.access_t

微信公众号带参数二维码怎么生成?

微信公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送.二维码分为临时二维码和永久二维码!就算你不用代码也没关系,使用微号帮平台渠道二维码生成,轻松完成带参数二维码生成 1.登录微号帮平台操作 已注册用户,输入用户名密码登录即可:未注册用户,点击注册按钮注册一个即可. 2.选择要生成带参数二维码的服务号选择微号帮服务号,已微信认证的服务号才有生成带参数二维码的功能 3.选择渠道二维码生成即带参数二维码生成进入这个功能后,可以生成

Java微信公众平台开发(三)--接收消息的分类及实体的创建

转自:http://www.cuiyongzhi.com/post/41.html 前面一篇有说道应用服务器和腾讯服务器是通过消息进行通讯的,并简单介绍了微信端post的消息类型,这里我们将建立消息实体以方便我们后面的使用! (一)消息实体基础类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

微信公众号在线生成二维码带参数怎么搞?

带参数二维码是微信公众号渠道二维码的一种实现 微信的带参数二维码有两种,一种是临时二维码,一种是永久二维码,但是永久二维码的生成是有个数限制的,微号帮功能实现生成二维码海报.渠道二维码生成,确保公众号在合适的场景使用合适的功能 渠道二维码功能 推广员二维码 推广员二维码生成后 海报二维码功能 海报二维码效果数据 海报二维码推广员(即参加海报二维码推广的人) 用户通过二维码进入,自动回复信息支持文字.图片.单图文.小程序等信息格式,图文信息可以指向任意URL:推送给用户,实时监控到二维码来源的所有

微信公众号带参数二维码的使用?

带参数的二维码:使用微号帮平台生成,每一个二维码都带有参数,可以统计关注的每一个粉丝从哪里来的,做到渠道场景分析,方便以后进行粉丝精细化运营,使用微号帮平台其他发信息功能,针对性推送信息给公众号粉丝. 1.创建渠道二维码从微号帮后台高级功能点击[渠道二维码生成],右侧选择+创建渠道二维码 2.[0515卡券发放]实例创建[0515卡券发放],准备通过带参数二维码向粉丝发放卡券 3.扫码弹出信息设置卡券带参数二维码设置弹出卡券领取 4.卡券设置选择公众号后台已经制作好的卡券二维码,默认卡券二维码只

asp.net 微信公众平台开发(二)公众账号开发模式

微信公众平台后台导航的"高级功能"选项可以进入模式选择界面,有两种模式可供选择,分别是"编辑模式"和"开发模式". 至于微信公众平台传输信息的机制在上一章节已经说过,那么这一节粗略讲讲API接口简介,详细的会在后面的文章中着重讲述. 微信公众平台开发者文档地址:http://mp.weixin.qq.com/wiki/home/index.html 在开发文档中我们可以知道,微信传输是用XML格式的数据,以及告诉了我们每一个字段的意思,我们只要根

微信公众平台开发(二)网页授权

微信公众平台OAuth2.0授权详细步骤如下: 1. 用户关注微信公众账号.2. 微信公众账号提供用户请求授权页面URL.3. 用户点击授权页面URL,将向服务器发起请求4. 服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤)5. 用户同意(scope为snsapi_base时无此步骤)6. 服务器将CODE通过回调传给微信公众账号7. 微信公众账号获得CODE8. 微信公众账号通过CODE向服务器请求Access Token9. 服务器返回Access T