前两节说的都是微信开发的初级篇,这一节说高级篇。微信公众号关注以后,下面都是有菜单的,底部有三个一级菜单,每个一级菜单可以添加5个二级菜单。一级菜单最多四个汉字,二级菜单最多7个汉字,多出来的汉字用“......”号,菜单自定义以后,由于缓存原因,需要取消再次关注才能生效。微信的菜单本质上就是一个按钮,既然是按钮,他就是有多种属性的按钮,微信开发中我们最常用的按钮类型是clickview,其他的按钮类型还有scancode_push(调用扫一扫)、scancode_waitmsgpic_sysphotopic_photo_or_albumpic_weixin等等,这些不常用而已。所以我主要说的菜单类型click,view这两种,创建菜单,代码如下:

<?php

//自定义菜单需要access_token,所以我们这里先获取票据access_token,这里可以写一个方法,

public function getToken(){

//由于token一天的访问次数是两千次,并且每次的有效时长是7200秒,所以我们可以给他做一存储,可以在cookie,session,redis,memcache,mysql中都可以,我们这里存储在session中

if( $SESSION['token'] && $SESSION[keeptime]>time() ){

//直接返回票据access_token()

return  $SESSION['token'];

}else{

$appid = "";          //这里填写你自己的公众号里的appid

$appsecret = "";   //这里填写你自己的公众号里的appsecret

$url  =  "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

//初始化curl

$ch = curl_init();

//设置参数

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_RETURNTRNSFER,1);

//执行curl

$token = curl_exec($ch);

//关闭curl

curl_close();

//由于返回的数据是json个格式,需要进行转换

$token  = json_decode($token,true);

$SESSION['token'] = $token['access_token'];

$SESSION['keeptime'] = $tokenp['exprires_in']+time();

}

}

//定义自定义菜单的方法

public function createcai(){

//获取token

$token = $this->$getToken();

//api请求URL,这里用的是POST方法

$url  =  "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$token;

//数据设置

/**

下面是微信公众平台官方提供的数据格式

{
          "button":[
          {
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
          },
          {
          "name":"菜单",
          "sub_button":[
            {
              "type":"view",
              "name":"搜索",
              "url":"http://www.soso.com/"
            },
            {
              "type":"miniprogram",
              "name":"wxa",
              "url":"http://mp.weixin.qq.com",
              "appid":"wx286b93c14bbf93aa",
              "pagepath":"pages/lunar/index"
             },
            {
              "type":"click",
              "name":"赞一下我们",
              "key":"V1001_GOOD"
            }]
           }]
          }

**/

//数据设置

$arr = array(

"button"=>array(

array("type"=>"click","name"=>"今日新闻","key"=>"item1"),

array("name"=>"网红新闻","sub_button"=>array(

array("type"=>"view","name"=>"网红天佑","url"=>"http://www.baidu.com"),

array("type"=>"click","name"=>"网红大事件","key"=>"item2"),

),

array("type"=>"click","name"=>"关于我们","key"=>"item3")

);

);

//把上面的数据的转换为json个格式,这里需要注意一个问题,json_encode()函数在转换时,中文的会乱码,所以这里需要urlencode()函数

$arr = urldecode(json_decode(urlencode($arr)));

//使用curl的post请求,curl在微信开发中的使用非常的频繁,可以写一个方法封装好,我这里为了方便大家学习就没有封装

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_HEADER,false);

curl_setopt($ch,CURLOPT_POSTFILDS,$arr);

curl_setopt($ch,CURLOPT_POST,true);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

$res = curl_exec();

if(curl_errno($ch)){

return curl_error($ch);

}else{

return json_decode($res,true);

}

curl_close();

}

这样自定义菜单就实现了,其实还是非常简单的,需要大家反复的联系。

微信公众号群发功能也是一个常见的功能,群发功能是订阅号每天一次,服务号是一个月4次,所以开发的时候切记不要直接用群发接口,可以使用预览接口,这样可以防止错误后不能再发顺。群发可以是文本,图片,视频,音频等。这个功能实现起来也是非常简单,话不多说,代码如下:

<?php

//这里我调用的接口是预览接口,其实是一样的,只是把请求的URL换掉就可以了

public function qunfa(){

//获取token

$token = $this->getToken();

//这是预览接口的url,POST请求

$url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=".$token;

/**

这是文本的格式

{
        "touser":"OPENID",
        "text":{
          "content":"CONTENT"
         },
        "msgtype":"text"
       }

**/

//设置数据,按照文档给的文本格式

$arr = array(

"touser"=>" 填写用户ID","text"=>array("content"=>"大家好,新年快乐!"),"msgtype"=>"text"

);

//curl发顺请求

$ch = curl_init();

//设置参数

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);

curl_setopt($ch,CURLOPT_POST,true);

$res = curl_exec();

if(curl_errno($ch)){

return curl_error($ch);

}else{

return json_decode($res,true);

}

}

以上就是预览群发功能,接下来是给大家讲一讲网页授权的功能

网页授权是微信开发非常重要的知识点,也是必须要掌握的,在公司的营销,以及业务场景中是经常用到的,学习的时候建议结合开发文档进行,应用场景:如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。今天有点累了,后边明天给大家分享。

转载于:https://www.cnblogs.com/beili/p/8436210.html

微信公众平台开发,自定义菜单,群发消息,网页授权(3)相关推荐

  1. php微信自定义菜单开发,微信公众平台开发自定义菜单功能开发

    一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接.自 ...

  2. java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...

    微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读"网页授权获取用户基本信息"的接口说明 在微信公众账号开发中,往往有定义一个菜单,然后用户点击 ...

  3. 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)

    之前写过一篇微信公众号开发–自定义菜单跳转页面并获取用户信息 由于当时是刚学习微信公众号开发当时的思路虽然可行,不过不是最好的,最近也用到了需要获取用户信息的地方,再次整理一下. 流程 注意点 ### ...

  4. 公众号如何跳转到页面php,图文详解微信公众号开发自定义菜单跳转页面并获取用户信息实例...

    这篇文章主要介绍了微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解的相关资料,需要的朋友可以参考下 微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读&qu ...

  5. 微信自定义菜单java_使用Java语言开发微信公众平台(八)——自定义菜单功能

    随着上一篇文章的结束,我们已经实现了所有消息的类型的回复功能.今天,我们来学习更加高大上,也更加重要的自定义菜单功能. 一.了解自定义菜单 自定义菜单是微信公众平台最常用也是最重要的功能之一.根据微信 ...

  6. 微信公众平台创建自定义菜单的PHP代码

    接口说明 在使用通用接口前,你需要做以下两步工作: 1.拥有一个  微信公众账号,并获取到  appid和appsecret(在公众平台申请自定义菜单功能,开启开发者模式,填写URL与Token后获得 ...

  7. java推送微信消息换行_微信公众平台开发教程之文本消息如何换行(第十二课)

    上两节课介绍了微信公众平台开发工具类的开发,这节课呢就用到了,没有读前两节课程的读者建议看前两节课程,当然你可以可以去下载实例代码直接运行 . 使用"\n"换行 回复用户的文本消息 ...

  8. 微信公众平台开发(十) 消息回复总结

    一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个PO ...

  9. 微信公众平台开发(十) 消息回复总结——用其xml模板

    一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个PO ...

  10. 微信公众平台开发(10) 消息回复总结

    一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个PO ...

最新文章

  1. 用python做算法_自己用python写的螺旋矩阵生成算法
  2. 程序世界的秘密(上)
  3. Web应用程序运行平台的数据安全传输
  4. JVM 调优实战--可视化GC日志分析工具GC Easy使用教程
  5. Codeforces - 65D - Harry Potter and the Sorting Hat - 简单搜索
  6. WPF DataGrid根据内容设置行颜色
  7. [html] 你有使用过del标签吗?说说它的用途
  8. 27岁到来之际,我在大厂实现了年薪40W+的小目标
  9. 用SPSS做数据分析(1)
  10. ngnix 端口映射
  11. mac 安装java8
  12. 选型宝分享上市公司女CIO亲身讲述BPM系统选型历程
  13. 【计算机网络】集线器、网桥、交换机、路由器、网关大解析
  14. 淘宝-51CTO学院-01-概述 - OpenCV介绍与环境搭建
  15. G - Nightmare Ⅱ (双向BFS)
  16. 多层神经网络 ——小批量梯度下降法
  17. 主流平面设计软件推荐,实用工具推荐必坑指南!
  18. java循环输出abcd_java 输 abcd 输出其所有排列情况 permutate
  19. fan类java_(Fan类)(Fan class)
  20. 到圣诞节了,不得不庆祝一下,用C++ Beep函数做了一个小程序

热门文章

  1. OX Pattern
  2. Linux负载均衡软件LVS
  3. Linux-DNS服务器的配置与管理(上)
  4. UVA662- Fast Food
  5. 驰骋工作流引擎是如何实现自动更新的?
  6. SQL Server 自动增长清零
  7. 高内聚、低耦合的含义是什么?
  8. Java单例模式:饿汉与懒汉区别
  9. CentOS Firewall防火墙设置规则
  10. BootStrap selectpicker