毕业设计经过前期的学习和实践,现在已经将自定义菜单开发出来并成功显示了。

首先,对于第一次进行开发的小白来说,注册一个订阅号是第一步,大部分学习者是选择个人非认证的,并不影响开发学习(具体注册步骤可以百度进行,并没有太大的难度)。然后需要充分了解并熟悉微信公众账号非开发者模式下的运营(推送消息以及非开发者模式下的菜单等功能)。建议花几天时间用自己注册的微信账号进行文章推送等运维,熟悉了微信公众账号非开发者模式下的运作才能更好的进行开发者模式的功能构思及设计。

我是选择使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境。(本人购买了方倍工作室出版的《微信公众平台开发最佳实践》一书,有习惯书本学习的同学可以购买,也可以通过方倍的博客http://www.cnblogs.com/txw1958/ 里面有微信开发的入门教程,非常有详细的操作步骤,并且可以免除按照书本逐行敲代码的麻烦。不过,如果是想要扎实学习微信开发的同学,需要弄懂代码,直接复制上传而不去弄懂代码,就无法对代码进行更改和有效的利用。(学习代码前需要了解PHP语言,掌握基本的语法和定义,可以通过w3school网站来进行快速有效的学习:http://www.w3school.com.cn/php/index.asp


第一步:申请服务器资源

参照http://www.cnblogs.com/txw1958/p/wechat-tutorial.html里面有详细步骤,新浪云的服务器是需要云豆来支持(学习时效短的同学可以通过是实名认证获取一定的云豆,使用3个多月是没有问题的,如果需要长期支持微信就需要付钱使用了)

第二步:启用开发者模式

需要在注册的微信公众号中启动开发者模式,在方倍的博客中有很详细的说明,这里我想要说明的是使用测试号来进行学习。因为个人学习者的微信公众号是未进行认证的,也就是不能边写代码边进行查看菜单的效果,所以需要注册测试号来查看自定义菜单的效果。普通的文本等消息回复是可以在微信账号中测试的。

注册微信测试号的地址为:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

如果之前已经注册过可以扫码登录,登陆后,需要扫测试号的二维码关注这个测试号。然后将接口配置信息做相应的修改:

接口配置成功之后,就可以使用这个测试号了。如果配置接口失败,很可能是新浪云没有进行实名认证,我也是在实名认证通过之后才配置成功的。

第三步:这时按照教程代码里已经有了上传的index.php文件,里面包括了回复文本、语音等消息的测试,可以对公众账号进行一下功能测试。

接下来就是编写关于自定义菜单实现的相应代码,在编辑代码界面新建一个menu.php文件用来写自定义菜单的代码。

代码分析:

1.     用appid和appsecert获得access token,代码为:

//请求url
$appid ="wx517acaa54b77e0ed";
$appsecret= "d3ad15478ee75ead5b0a6886d8698d1e";
//$url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
$url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=Rb4v8xCdtR93qsxc9ikfEbUrV1VymPSvc5gMhmoBU0FyTni2dPkoUaEHSh2FkFmjVE4oiV9F-P3xMfS_j_08HPeZJ5GsWmRgA0tyvlUHZxSnAWTJSDT0PeA-bd3wjt5UUJVjACADSE";
//模拟发送POST请求(使用curl)
//1.创建curl句柄
$ch=curl_init();
//2.设置curl参数
curl_setopt($ch,CURLOPT_URL, $url);
//捕获内容但不输出
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
//模拟发送POST请求
curl_setopt($ch,CURLOPT_POST, 1);

2.    发送相关数据,即为菜单的设置(一级菜单内容以及二级菜单的设置)使用json数据的形式。例如:我这里采用三个一级菜单(分别为:鲜花订阅、钟爱花园、客户管理),然后每一个一级菜单下对应设置二级菜单,分别设置4个、4个、5个二级菜单,而且设置菜单的自定义类型为view,即跳转URL。用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。代码如下:(此处跳转链接统一设置为https://mp.weixin.qq.com/)

//发送相关数据
$data='{"button":[{     "name":"鲜花订阅","sub_button":[{  "type":"view","name":"混搭包月4束/196","url":" https://mp.weixin.qq.com/"},{     "type":"view","name":"单品包月4束/99","url":" https://mp.weixin.qq.com/"  },{       "type":"view","name":"花边小物","url":" https://mp.weixin.qq.com/"    },{"type":"view","name":"礼品花3小时急速送达","url":" https://mp.weixin.qq.com/" }]},{   "name":"钟爱花园","sub_button":[{  "type":"view","name":"花&生活","url":" https://mp.weixin.qq.com/"},{"type":"view","name":"赏花晒图","url":"https://mp.weixin.qq.com/"},{"type":"view","name":"鲜花养护DIY","url":"https://mp.weixin.qq.com/"},{"type":"view","name":"物流信息追踪","url" https://mp.weixin.qq.com/"}]},{"name":"客户管理","sub_button":[{  "type":"view","name":"我的二维码","url":" https://mp.weixin.qq.com/"}, {     "type":"view","name":"每日打卡","url":" https://mp.weixin.qq.com/"},{     "type":"view","name":"积分兑换","url":" https://mp.weixin.qq.com/"},{"type":"view","name":"人工客服","url":" https://mp.weixin.qq.com/"},{"type":"view","name":"我的订单","url":" https://mp.weixin.qq.com/"}]}]}';

3.

//发送POST请求时传递数据
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
//禁止服务器端校验SSL
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
//3.执行curl
$output=curl_exec($ch);
if($output==false){
echo curl_error($ch);
}
else{
echo $output;
}
//4.关闭curl
curl_close($ch);

通过这三部分代码就完成了我定义的菜单的设置。

保存了更改的代码之后,会出现手机测试号不能及时出现菜单的问题。这时,就设计一个很重要的问题,就是access token的更新。每次更改代码之后,就要重新获取一次access token。这里提供一种方法,其他方法获取也可以。将代码中的包含access token值的代码注释掉,将$url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";代码行的注释取消,保存后,在menu.php文件名上右击,选择通过URL访问,这时会跳出一个页面,显示有新的获取到的access token值,将引号里面的值都复制,粘贴在含有原先access token的代码里,替换原先的值。例如:将如图的代码复制,粘贴进

然后将含有新获取的access token值的代码注释取消,

将$url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";代码注释掉,保存。

如果这时测试号还是没有出现菜单,那就需要检查是否连接成功。同样在文件名后右击选择通过URL访问。出现{"errcode":0,"errmsg":"ok"}即为链接成功。如果问题还没有解决,就需要认真检查appid以及appsecret是否为对应的测试号的正确id及secret。

按照上述步骤就可以成功完成自定义菜单的开发。菜单的设置和类型可以根据实际业务进行不同的调整。

微信公众号开发-初学者-SAE新浪云申请及自定义菜单相关推荐

  1. 微信公众号开发及运营(二)——自动回复与自定义菜单

    如果你不具备开发能力或者不想使用微信公众平台提供的接口来运营自己的公众号的话,微信公众平台提供了一些功能插件,可以满足你的部分需求,接下来我们看看这些功能插件都能实现些什么? 一.自动回复功能 从上图 ...

  2. 微信公众号开发工具汇总

    前面写了篇入坑指南,介绍了下开发微信公众号的基本流程.最近又捣鼓了一阵,发现这开发工具的选择对于提高开发效率真是有莫大的帮助,所谓"只要工具选得好,月底奖金跑不了".今天得空,笔者 ...

  3. 微信公众号 用户绑定 php,微信公众号开发——网页授权实现简化用户绑定

    本教程的学习条件: 了解微信公众号开发的基本知识.已经申请了微信公众号并设置了开发模式等.如果不了解,请先到微信官方平台学习 需要服务器端开发的基本技能,本文主要讲解流程,基本不涉及具体开发语言. 首 ...

  4. 微信公众号开发入门教程第一篇

    微信公众号开发入门教程第一篇 关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/ ...

  5. 微信公众号开发之准备工作

    这是微信公众号开发的第一步.是网页授权的那章的前提. 工作室有关一个订餐系统的开发,我对公众号开发比较感兴趣,所以参与这方面的学习. 本章主要讲述两个方面的内容,一是工具的准备,二是环境的配置. -- ...

  6. 什么是php微信开发,php微信公众号开发模式详解

    这篇文章主要介绍了php微信公众号开发者模式,通过后台服务器与微信关注用户实现更多的交互作用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 学习步骤:分四章来讲述这部分内容,下面是每章的大致内容. ...

  7. php微信公众号开发难吗,PHP微信公众号开发的两种模式

    微信现在已经深入到每个家庭,每个人至少人手一个账号是确定的,所以开发公众号也是很普遍的,今天爱站技术频道小编为大家带来的是PHP微信公众号开发的两种模式,感兴趣的小伙伴们可以参考下面的介绍. 学习步骤 ...

  8. 微信公众号开发(一)--开发模式与编辑模式

    学习步骤:分四章来讲述这部分内容,下面是每章的大致内容. 1.了解开发模式与编辑模式,开发前的一些准备. 2.开发模式用户.微信服务器.个人服务器是如何交互的.什么是接口. 3.各种接口功能的调用与实 ...

  9. 微信公众号开发之授权

    微信公众号开发之授权 开发前准备 首先准备自己的服务器资源,已有服务器的请忽略服务器资源. 我这里演示新浪云服务器环境搭建:(新注册号有免费云豆可用) 服务器资源(https://sae.sina.c ...

最新文章

  1. Windows 不能在 本地计算机 启动 SQL Server 服务
  2. codesmith学习总结
  3. MySQL索引分析和优化(转)
  4. spring jms 消息_Spring JMS,消息自动转换,JMS模板
  5. openstack vm实例pxe无法启动
  6. matlab菲涅尔衍射,基于matlab的菲涅尔衍射仿真
  7. 如何将Word转换成PDF的几种使用方法
  8. 秒杀功能设计思想 php,seckill-system-php
  9. Virtual Table — RTTI — typeinfo dynamic_cast 模板编程 orocos OperationCaller 类的设计
  10. (附源码)计算机毕业设计SSM音乐鉴赏网站前端开发
  11. html自动适应屏幕分辨率,css如何设置适配不同分辨率屏幕?
  12. Byte历险记(tomcat+web游历)
  13. 含有一般疑问句的歌_七年级——一般现在时
  14. GraphicsMagick创建空白图片
  15. 「数据集」自动驾驶都有什么测试基准?
  16. NDK开发——Android Studio+CMake实现QQ变声效果
  17. Fitbit IPO给智能硬件从业者的启示
  18. socks代理服务器协议的说明
  19. 计量经济学学习笔记:导论
  20. 信号的解调与调制matlab,基于MATLAB常用数字信号调制与解调

热门文章

  1. 飞桨领航团AI达人创造营第三课笔记
  2. 黑马程序员——IOS学习—基本UI控件的代码创建
  3. 中国石油大学远程教育《大学英语(四)》第一阶段在线作业
  4. 从理解需求到创造需求,解码YUU品牌成功秘诀
  5. phpcms之管理栏目添加单网页遇到的英文名称已经存在的问题
  6. 微信群营销方式微信群建群营销案例
  7. 学红外雨量IFR202型传感器应用于智慧灌溉自动门窗地质灾害
  8. typescript之typings(*.d.ts类型声明)
  9. DDD浮夸,Eric Evans开了个坏头
  10. php字体大小_php设置字体的方法