主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
本文主要详细介绍了php微信开发自定义菜单的完整过程,具有一定的参考价值。感兴趣的朋友可以参考一下。
一、自定义菜单概述
自定义菜单可以帮助微信官方账号丰富界面,让用户更好更快地了解微信官方账号的功能。打开自定义菜单后,微信官方账号界面如下所示:
第二,申请定制菜单
个人订阅号通过微博认证,企业订阅号通过微信认证;你可以申请定制菜单的资格。
默认情况下,服务号码具有菜单权限。
第三,获取AppId和AppSecert。
AppId和AppSecret可以在开发者中心-开发者Id中找到。
第四,获取访问令牌
用appid和appsecert获取访问令牌,接口为
api.weixin.qq.com/cgi-bi...MP;秘密=APPSECRET
该计划的实施如下
$ appid = & quot";$ appsecret = & quot";$ url = & quothttps://api.weixin.qq.com/cgi-bin/token?格兰特类型=客户证书。appid = $ appid & ampsecret = $ appsecret & quot;$ ch = curl _ init();curl _ setopt($ ch,CURLOPT_URL,$ URL);curl _ setopt($ ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl _ setopt($ ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl _ setopt($ ch,CURLOPT_RETURNTRANSFER,1);$ output = curl _ exec($ ch);curl _ close($ ch);$ JSON info = JSON _ decode($ output,true);$access_token = $jsoninfo
其中N2 l7 kxa 084 velonyjkj _ Trabmccvy _ ukmpuzlrq 0 ea 2 ynp 3i 6 esurg G0 bhar _ viswd 50 vdupky 5 ng 43 D1 GBM -ol T2 krmxosve 08 rfed 9 lvk 9 lmg ung 9 kpikkgzejif 8 JV 2m 9 fhfbna -YQH3G为访问令牌。
或者使用https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?.的官方界面调试工具t = index & type = % E8 % 87% AA % E5 % AE % 9A % E4 % B9 % 89% E8 % 8F % 9C % E5 % 8D % 95 & form = % E8 % 87% AA % E5 % AE % 9A % E4 % B9 % 89% E8 % 8F % 9C % E5 % 8D % 95% E5 % 88% 9B % E5 % BB % BA % E6 % 8E % A5 % E5 % 8F % A3 % 20/菜单/创建
使用Web调试工具调试自定义菜单界面
点击检查问题并获取。
这也获得了访问令牌。
五、组织菜单内容
目前,自定义菜单最多包括三个一级菜单,每个一级菜单最多包括五个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字。多余的部分将被替换为“。。。”。请注意,创建自定义菜单后,由于微信客户端的缓存,微信客户端需要24小时才能显示。建议在测试时,可以尝试取消关注公众账号后重新关注,创建后即可看到效果。
目前自定义菜单界面可以实现两种类型的按钮,如下:
点击:用户点击点击型按钮后,微信服务器会通过消息接口(参考消息接口指南)向开发者推送事件的消息类型的结构,并将开发者填写的键值带入按钮中,开发者可以通过自定义的键值与用户进行交互;查看:用户点击查看类型按钮后,微信客户端会打开开发者填写的url值(即网页链接),从而打开网页。建议结合网页授权接口获取用户基本信息来获取用户的登录个人信息。
接口调用请求描述
Http请求方法:POST(请使用https协议)api.weixin.qq.com/cgi-bi..._ token = access _ token。
请求示例
{ & quot按钮& quot:
返回结果
如果正确,返回的JSON包如下:
{“errcode“:0,“errmsg“:“ok“}
出错时返回的JSON数据包如下(例如,无效的菜单名称长度):
{“errcode“:40018,“errmsg“:“无效的按钮名称大小“}
第六,将菜单内容提交给服务器。
菜单的JSON结构是
{ & quot按钮& quot:
提交成功后,再次关注后可以看到菜单。菜单效果类似于以下内容:
七、响应菜单点击事件
在消息接口中处理event事件,其中click代表菜单点击,通过响应菜单结构中的键值来响应消息,view事件将直接跳过。
定义(& quot令牌& quot,& quot微信& quot);$ wechatObj = new wechatCallbackapiTest();如果(!isset($ _ GET【& amp;#39;回声报& amp#39;】)){ $ wechatobj -》;response msg();} else { $ wechatobj -& gt;valid();} class wechatcallbackapistest { public function valid(){ $ echoStr = $ _ GET【& quot;echostr & quot];if($ this -》;check signature()){ echo $ echoStr;退出;} }私有函数check signature(){ $ signature = $ _ GET【& quot;签名& quot];$ timestamp = $ _ GET【& quot;时间戳& quot];$ nonce = $ _ GET【& quot;nonce"];$ token = TOKEN$ TM parr = array($ token,$timestamp,$ nonce);sort($ tmpArr);$tmpStr =内爆($ TM parr);$ tmps tr = sha1($ tmps tr);if($ tmpStr = = $ signature){ return true;}else{返回false} }公共函数responseMsg(){ $ postStr = $ GLOBALS【& quot;HTTP _ RAW _ POST _ DATA & quot];如果(!empty($ postStr)){ $ post obj = SimpleXML _ load _ string($ postStr,& amp#39;SimpleXMLElement & amp#39;,LIBXML _ NOCDATA);$ RX _ TYPE = trim($ post obj -& gt;msg type);switch($ RX _ TYPE){ case & quot;文本& quot:$ resultStr = $ this -& gt;receive text($ post obj);打破;案例& quot事件& quot:$ resultStr = $ this -& gt;receive event($ post obj);打破;默认值:$ resultStr = & quot";打破;} echo $ resultStr} else { echo & quot";退出;} }私有函数receive text($ object){ $ func flag = 0;$ contentStr = & quot您发送的内容是:“。$ object -》;内容;$ resultStr = $ this -& gt;transmitText($ object,$contentStr,$ func flag);返回$ resultStr}私有函数receive event($ object){ $ contentStr = & quot;";开关($ object -》;事件){案例& quot订阅& quot:$ contentStr = & quot欢迎来到杨洋博客”;案例& quot取消订阅":break案例& quot单击":开关($ object -》;事件键){ case & quot公司& quot:$ contentStr【】= array(& quot;标题& quot= & gt"公司简介“,& quot描述"= & gt"杨洋的博客”PicUrl & quot= & gt"http://discuz . com Li . com/weixin/weather/icon/cartoon . jpg & quot;,& quotUrl & quot= & gt"weixin://addfriend/pondbaystudio & quot;);打破;默认值:$ contentStr【】= array(& quot;标题& quot= & gt"默认菜单回复“,& quot描述"= & gt"你正在使用
因为菜单中只能填写固定的url地址,所以可以使用OAuth2.0授权从菜单中获取用户的OpenID。
URL中填写的地址是一个固定的回调地址。原理和方法可以参考微信公众平台开发(99)自定义菜单获取OpenID。
& lt?杨洋的博客令牌& quot,& quot微信& quot);$ wechatObj = new wechatCallbackapiTest();if(isset($ _ GET【& amp;#39;回声报& amp#39;】)){ $ wechatobj -》;valid();} else { $ wechatobj -& gt;response msg();} class wechatcallbackapistest { public function valid(){ $ echoStr = $ _ GET【& quot;echostr & quot];if($ this -》;check signature()){ header(& amp;#39;内容-类型:文本& amp#39;);echo $ echoStr退出;} }私有函数check signature(){ $ signature = $ _ GET【& quot;签名& quot];$ timestamp = $ _ GET【& quot;时间戳& quot];$ nonce = $ _ GET【& quot;nonce"];$ token = TOKEN$ TM parr = array($ token,$timestamp,$ nonce);SORT($ TM parr,SORT _ STRING);$tmpStr =内爆($ TM parr);$ tmps tr = sha1($ tmps tr);if($ tmpStr = = $ signature){ return true;}else{返回false} }公共函数responseMsg(){ $ postStr = $ GLOBALS【& quot;HTTP _ RAW _ POST _ DATA & quot];如果(!empty($ postStr)){ $ post obj = SimpleXML _ load _ string($ postStr,& amp#39;SimpleXMLElement & amp#39;,LIBXML _ NOCDATA);$ from username = $ posto bj -& gt;from用户名;$ touser name = $ posto bj -& gt;ToUserName$ keyword = trim($ post obj -& gt;内容);$ time = time();$ textTpl = & quot& ltxml & gt& ltToUserName & gt& lt!【CDATA【% s】】& gt;& lt/touser name & gt;& ltfrom用户名& gt& lt!【CDATA【% s】】& gt;& lt/from用户名& gt& lt创建时间& gt% s & lt/create time & gt;& ltMsgType & gt& lt!【CDATA【% s】】& gt;& lt/msg type & gt;& lt内容& gt& lt!【CDATA【% s】】& gt;& lt/Content & gt;& ltFuncFlag>0 & lt/func flag & gt;& lt/XML & gt;";if($ keyword = = & quot;?"| | $ keyword = = & quot?"){ $ msgType = & quot文本& quot;$ contentStr = & amp#39;当前时间是:&;#39;。日期(& quoty-m-d H:I:s & quot;,time());$ resultStr = sprintf($ text TPL,$fromUsername,$toUsername,$time,$msgType,$ contentStr);echo $ resultStr} } else { echo & quot";退出;} } } ?& gt【相关建议】
1.特别推荐:下载php程序员工具箱V0.1版。
2.下载微信微信官方账号平台源代码
3.阿里订单子系统源代码下载
这几篇文章你可能也喜欢:
- Windows搭建IIS+PHP+MySQL环境(Windows搭建php服务器)
- 宝塔 panel php安装扩展失败怎么办(宝塔 panel php安装扩展失败怎么办?)
- 创建mysql索引极大地优化了php应用程序的性能(创建MySQL索引极大地优化了PHP应用程序的性能模块)
- Apache+MySQL+php环境安装(示例总结)(php安装mysqli扩展)
- 检索kintone记录信息的方法(如何检索)
本文由主机参考刊发,转载请注明:微信开发实现自定义菜单代码教程(如何从微信自定义菜单跳转到网页) https://zhujicankao.com/114939.html
评论前必须登录!
注册