• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > 微信公众平台开发二维码、创建菜单

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

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了微信开发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、二维码

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,这里可以参照微信公众平台开发access_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下载:

github地址:https://github.com/pwstrick/weixin_demo

CSDN地址:http://download.csdn.net/detail/loneleaf1/9045731

更多微信公众平台开发二维码、创建菜单 相关文章请关注!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 微信开发之微信jsapi选择图片,上传图片,预览和下载图片方法
  • C#开发微信门户及应用微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)
  • php实现微信跳一跳小游戏
  • 微信开发入门(八)页面路由
  • 微信公众平台开发自动更新微信access token
  • 微信开发之准备阶段的图文代码介绍
  • 微信开发-ACCESS TOKEN 过期失效解决方案
  • 微信公众号开发通过接口删除菜单方法介绍
  • 微信公众平台开发多客服
  • C#开发微信门户及应用微信门户应用管理系统功能介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 分享微信开发之支付功能(前端)的实现
    • 微信小程序 教程之小程序配置
    • PHP微信开发用Cache 解决数据缓存
    • 关于wxss的10篇文章推荐
    • 微信企业号开发获取用户信息的介绍
    • 微信开发之onShareAppMessage分享参数的用法
    • 微信开发之免充值代金券和免充值立减与折扣
    • 微信公众平台开发:使用Senparc.Weixin.MP SDK
    • C#开发微信门户及应用微信企业号的客户端管理功能
    • 详解iOS微信支付开发案例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有