易信公众平台自定义菜单及响应php
微信公众平台各大接口详细功能演示与实现..

json请求格式:
查询用户组所在分组
通过用户的OpenID查询其所在的GroupID。
openid为用户ID,用户关注或者发送消息时 <FromUserName></FromUserName>中的数据
修改分组名
通过分组查询中得到的groupId可以修改分组名 返回值,成功或失败
移动用户分组
通过用户的 openid和分组id修改 返回值,成功或失败
一、用户管理
4.获取用户地理位置
开通了上报地理位置接口的公众号,用户在关注后进入公众号会话 时,会弹框让用户确认是否允许公众号使Байду номын сангаас其地理位置。弹框只在关 注后出现一次,用户以后可以在公众号详情页面进行操作。
用户同意上报地理位置后,每次进入公众号会话时,都会在进入时 上报地理位置,上报地理位置以推送XML数据包到开发者填写的URL 来实现。
1 2 3 4 5
用户管理
多客服功能
自定义菜单 生成带参数的二维码 微信JS接口
一、用户管理
1.分组管理接口
2.获取用户信息 3.获取关注者列表
4.用户地理位置获取 5.网页授权获取用户基本信息
6.网页获取用户网络状态(JS接口)
一、用户管理
1.分组管理
对应公众平台模块:
创建管理:
一个公众账号,最多支持创建 500个分组。 程序实现方法: 1.获取acess_token:使用PHP方法 file_get_contents()将https:///cgibin/token?grant_type=client_credential&appid=APPID&secret=A PPSECRET获取acess_token接口作为参数则可。 2.如下例:
微信公众平台自定义菜单

微信公众平台自定义菜单[导读] 最近微信公众平台挺火的,肯定好多公司像我们公司一样,要开发微信公众平台,在此记录一下在制作自定义菜单时遇到的问题,希望能给某些人点思路,或少走点弯路为了动态修改自定义菜单,把菜单项存入数据库中$arr是最近微信公众平台挺火的,肯定好多公司像我们公司一样,要开发微信公众平台,在此记录一下在制作自定义菜单时遇到的问题,希望能给某些人点思路,或少走点弯路.为了动态修改自定义菜单,把菜单项存入数据库中$arr是从数据库查询出来的经过处理后的数组格式为:?array(1) {["button"] => array(3) {[0] => array(3) {["type"] => string(4) "view"["name"] => string(12) "公司新闻"["url"] => string(24) ""}[1] => array(3) {["type"] => string(4) "view"["name"] => string(12) "公司案例"["url"] => string(20) ""}[2] => array(2) {["name"] => string(12) "智能家居"["sub_button"] => array(5) {["url"] => string(22) ""[0] => array(3) {["type"] => string(5) "click"["name"] => string(12) "功能描述"["key"] => string(10) "smart_desc"}[1] => array(3) {["type"] => string(5) "click"["name"] => string(12) "每日一点"["key"] => string(9) "day_click"}[2] => array(3) {["type"] => string(5) "click"["name"] => string(12) "一天一点"["key"] => string(13) "eve_day_click"}[3] => array(3) {["type"] => string(5) "click"["name"] => string(12) "休闲时刻"["key"] => string(11) "xiuxian_day"}[4] => array(3) {["type"] => string(5) "click"["name"] => string(12) "做人好难"["key"] => string(3) "nan"}}}}}在添加菜单的时候发现直接json_encode($arr);会提示40016错误:不合法的按钮个数在调用了json_encode函数之后所有中文被转换成"\u8fd9" 这种形式,为了使用json_encode处理后的结构而不改变中文可以使用如下函数(来源于互联网):?/**************************************************************** 使用特定function对数组中所有元素做处理* @param string &$array 要处理的字符串* @param string $function 要执行的函数* @return boolean $apply_to_keys_also 是否也应用到key上* @access public**************************************************************/function arrayRecursive(&$array, $function, $apply_to_keys_also = false){static $recursive_counter = 0;if (++$recursive_counter > 1000) {die('possible deep recursion attack');}foreach ($array as $key => $value) {if (is_array($value)) {self::arrayRecursive($array[$key], $function, $apply_to_keys_also);} else {$array[$key] = $function($value);}if ($apply_to_keys_also && is_string($key)) {$new_key = $function($key);if ($new_key != $key) {$array[$new_key] = $array[$key];unset($array[$key]);}}}$recursive_counter--;}/**************************************************************** 将数组转换为JSON字符串(兼容中文)* @param array $array 要转换的数组* @return string 转换得到的json字符串* @access public**************************************************************/function JSON($array) {self::arrayRecursive($array, 'urlencode', true);$json = json_encode($array);return urldecode($json);}执行添加:?function apply(){$token_str = self::get_access_token();$del_url = "https:///cgi-bin/menu/delete?access_token={$token_str}";file_get_contents($del_url);$apply_url = "https:///cgi-bin/menu/create?access_token={$token_str}";$data = self::JSON(self::get_menu());//json化中文不变$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $apply_url);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');curl_setopt($ch, CURLOPT_FOLLOWLOCA TION, 1);curl_setopt($ch, CURLOPT_AUTOREFERER, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$result = curl_exec($ch);curl_close($ch);$result = json_decode($result,true);$this->redirect("Menu/index",array('msg'=>($result['errcode']==0?'操作成功':'操作失败'),'state'=>$result['errcode']==0 ? 0 : 1));}OK添加成功^_^ ,仅供参考当然代码过多发到首页肯定是过不了的,不过为了让更多人看到还是厚着脸色发布到首页(不知道能在首页呆几分钟~。
第4章1 微信公众平台API详解:高级开发(自定义菜单)

内容 导航
CONTENTS
发送HTTPS请求
自定义菜单
9
接口访问凭证
自定义菜单接口
响应菜单单击事件
3.2 接口访问凭证
自定义菜单
10
是进入各种接口的钥 匙,是公众号的全局
3.1发送HTTPS请求
HTTPS保 护用户数 据的实现
方式
自定义菜单
5
01 内容加密
OPTION
浏览器到服务器的内容都是以加密形式传输的,中间人无法直接
查看原始内容.
02
OPTION
身份加密
保证用户访问的是真正想要访问的网站,即使被DNS劫持到了 第三方站点,也会提醒用户没有访问真实站点,可能是被劫持 了.
http请求方式: GET https:///cgibin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
3.2 接口访问凭证
自定义菜单
12
3.2.2 获取接口凭证方法
手动获取 将请求内容放在浏览器的地址栏上进行直接访问。
3.1发送HTTPS请求
自定义菜单
8
3.1.2微信上的实现方法
01 静态超链接
OPTION
网站中使用最多也最简单的方法。它的好处在于容易实现,不需
要额外开发。但不容易维护管理。
02
OPTION
资源访问限制
为了保护Web应用中的敏感数据,防止资源的非法访问和保证 传输的安全性。
第9讲.PHP微信开发实例_PHP视频教程_“图片消息”和“ 回复图文消息”接口应用实例(下)

编写PHP程序,实现订餐过程中的交互(接收用户选择的套餐编号、手机号 码和当前位置) 完善代码(欢迎信息、帮助消息)
2
PHP微信开发教程: /goods-320.html
欢迎访问我们的官方网站
北风网
基于微信公众平台消息接口的应用开发
开发培训
第9讲 微信公众平台“),实现微信平台订餐系 统
讲师:fsdos (北风网版权所有)
服务器端PHP编程
准备好餐馆的菜单图片,将图片FTP到服务器上 编写PHP程序,实现回复图文消息接口以显示菜单图片(直接修改图片数据 库,然后调用上一节课的程序) 创建用户表 users
易信公众平台

注册 与微信公众号注册大同小异,需要审核。(易信公众平台尚处于试运行阶段,我们会对
申请者逐步开放,感谢你对易信的支持。)
认证加 V 关注人数 500+申请。
自定义菜单 易信公众平台所有公众号都可以使用自定义菜单(PHP 代码)。
易信公众ቤተ መጻሕፍቲ ባይዱ台
针对不通的类群增加了几个功能:客户服务、工具助手、内部分享以及媒体资讯。
四大特色服务 客服服务 易信向用户提供免费即时通讯服务,帮助企业建立维护用户关系。 工具助手 易信开放接口,支持更多开发者向用户提供更加丰富的实用工具。 内部分享 易信提供关注验证权限,更好的向企业组织提供内部分享交流服务。
微信自动回复与自定义菜单操作流程(PPT 57张)

(1)首先,登陆第三方平台,找到已添加 好的账号,点击“编辑”,即可查看对应接 口地址(URL)与TOKEN。
(2)然后回到微信公众平台,点击主页面开 发者中心按钮,进入配置项,点击修改配置。
(3)将第三方平台的URL和Token粘贴复制进去,点 击提交,微信公众平台接口就与第三方平台接口连接 起来了。(无论使用哪一种第三方平台,只需要将你 使用的第三方平台的服务器配置即URL和TOKEN连接 到微信公众平台,则可使用第三方平台功能。)
激励学生学习的名言格言 220、每一个成功者都有一个开始。勇于开始,才能找到成功的路。 221、世界会向那些有目标和远见的人让路(冯两努——香港著名推销商) 222、绊脚石乃是进身之阶。 223、销售世界上第一号的产品——不是汽车,而是自己。在你成功地把自己推销给别人之前,你必须百分之百的把自己推销给自己。 224、即使爬到最高的山上,一次也只能脚踏实地地迈一步。 225、积极思考造成积极人生,消极思考造成消极人生。 226、人之所以有一张嘴,而有两只耳朵,原因是听的要比说的多一倍。 227、别想一下造出大海,必须先由小河川开始。 228、有事者,事竟成;破釜沉舟,百二秦关终归楚;苦心人,天不负;卧薪尝胆,三千越甲可吞吴。 229、以诚感人者,人亦诚而应。 230、积极的人在每一次忧患中都看到一个机会,而消极的人则在每个机会都看到某种忧患。 231、出门走好路,出口说好话,出手做好事。 232、旁观者的姓名永远爬不到比赛的计分板上。 233、怠惰是贫穷的制造厂。 234、莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法) 235、如果我们想要更多的玫瑰花,就必须种植更多的玫瑰树。 236、伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。 237、世上没有绝望的处境,只有对处境绝望的人。 238、回避现实的人,未来将更不理想。 239、当你感到悲哀痛苦时,最好是去学些什么东西。学习会使你永远立于不败之地。 240、伟人所达到并保持着的高处,并不是一飞就到的,而是他们在同伴们都睡着的时候,一步步艰辛地向上爬 241、世界上那些最容易的事情中,拖延时间最不费力。 242、坚韧是成功的一大要素,只要在门上敲得够久、够大声,终会把人唤醒的。 243、人之所以能,是相信能。 244、没有口水与汗水,就没有成功的泪水。 245、一个有信念者所开发出的力量,大于99个只有兴趣者。 246、环境不会改变,解决之道在于改变自己。 247、两粒种子,一片森林。 248、每一发奋努力的背后,必有加倍的赏赐。 249、如果你希望成功,以恒心为良友,以经验为参谋,以小心为兄弟,以希望为哨兵。 250、大多数人想要改造这个世界,但却罕有人想改造自己。
Php 微信自定义菜单接口
Php 微信自定义菜单接口简介开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建、查询和删除等操作。
自定义菜单接口可实现以下类型按钮:click(点击事件):用户点击click类型按钮后,微信服务器会通过消息接口(event类型)推送点击事件给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值进行消息回复。
view(访问网页):用户点击view类型按钮后,会直接跳转到开发者指定的url中。
创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。
建议测试时可以尝试取消关注公众账号后,再次关注,则可以看到创建后的效果。
菜单创建接口说明通过POST一个特定结构体,实现在微信客户端创建自定义菜单。
请求说明(PS:PHP Q扣峮:276167802,验证:WK)http请求方式:POSThttps:///cgi-bin/menu/create?access_token=ACCESS_TOKEN请求示例:{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC"},{"type":"view","name":"歌手简介","url":"/"},{"name":"菜单","sub_button":[{"type":"click","name":"hello word","key":"V1001_HELLO_WORLD"},{"type":"click","name":"赞一下我们","key":"V1001_GOOD"}]}]}创建后效果:参数说明参数是否必须说明button 是按钮数组,按钮个数应为2~3个sub_button 否子按钮数组,按钮个数应为2~5个type 是按钮类型,目前有click类型name 是按钮描述,既按钮名字,不超过16个字节,子菜单不超过40个字节key 类型为click必须按钮KEY值,用于消息接口(event类型)推送,不超过128字节返回说明正确的Json返回结果:{"errcode":0,"errmsg":"ok"}错误的Json返回结果{"errcode":40018,"errmsg":"invalid button name size"}统一返回码说明菜单查询接口说明查询当前使用的自定义菜单结构。
微信公众平台使用教程fx
• 实践:
• • • 发布图文消息的流程 准备素材 处理素材
• • • • 处理文字 处理图片 处理音频和视频 本地素材管理 后台素材管理 上传图片 上传音频 上传视频 发布原创图文消息 发布带有网盘链接的图文消息 转载其它公众号的图文消息 转载其它网站新闻 保存 预览 保存并群发 群发功能
• 管理后台基本功能
•
上传素材
• • • •
•
编辑新闻
• • • •
• 管理后台基本设置
• • • • • 公众号设置 安全中心 自动回复 自定义菜单 素材管理 •
发布新闻
• • • •
本案编辑于2016年11月,因微信后台不断更新,所以本案仅供学习参考,具体功能如有变化请以后台使用帮助为准源自本课件中链接的视频教程列表
提前想好: 1.公众号名字(一年改一次,注册时设置) 2.微信号(永远改不了,后台设置) 3.进公众号的密码 提醒:以上信息记在手机备忘录中
实际操作 注册订阅号的方法
注册订阅号:其它组织(学校)——准备材料
• 组织机构代码证(可注册50个) • 管理员身份证 • 对公银行账户(若无,校长名下的银行卡也可) • 邮箱(邮箱密码一定要记住) • 手机(管理员的手机)(手机可以用五次)
公众平台服务号、订阅号、企业号的相关说明 /faq/120911VrYVrA130805byM32u.html
订阅号、服务号、企业号的功能与区别
注册订阅号:明确概念
• 1.账号主体是什么? • 2.认证的作用? • 3.订阅号和服务号用哪个合适? • 4.主体类型对比
微信认证费用可以开发票吗? /faq/120911VrYVrA131101i2MjQf.html
公众平台注册如何选择帐号主体类型? /faq/120911VrYVrA141119MfeYjy.html
微信自动回复与自定义菜单操作流程(PPT 57页)
(2)消息自动回复
如果用户发送一些你没有在后台设定好的关键字或无效信息,系统就会发送这里的内容给用 户,用于提醒和帮助引导用户使用正确的关键字进行查询。这个功能就如同网站404错误页 面一样,提示没有该信息,并引导用户回到正确的使用途径上。所以这里也是必须要设置的, 否则当用户发送一些你没有设置的关键字,系统是不会反馈任何信息给用户的,这样会给用 户一个错觉,你的账号不能用了,从而导致取消关注。
(3)选中【回复文字】,即可进入编辑界面,在“自动回复内容”编辑框里可以添加文字 与表情,对关注用户的一些欢迎与引导。
必须提出的是,第三方平台关注时可回复超链接,超链接能够使关注用户能够快速的到达所指定 的界面,如活动界面,方面快捷体验好。具体设置如下。
*1.选中所要指定给用户的文章或活动链接,复制下来。
(2)配置好后,即可进行自定义菜单的设置。乐享自定义菜单设置简单明了。点击【添加主菜 单】,即可进行编辑,如图中“御景半岛”“房贷计算”“联系我们”均为主菜单,主菜单显示 顺序“从左到右”分别为数字“由小到大”
注:若“主菜单”下无“子菜单”, 可直接填写“关键词”或者“网址链 接”,用户点击后即可直接跳转。
6章
乐享接口配置
目前微信平台内的基础功能已经远远不能满足用户的需求,因此第三方平台的使用就显得尤为 重要。目前主要讲的第三方平台为“乐享”。
(1)首先,登陆第三方平台,找到已添加 好的账号,点击“编辑”,即可查看对应接 口地址(URL)与TOKEN。
(2)然后回到微信公众平台,点击主页面开 发者中心按钮,进入配置项,点击修改配置。
(2)点击主菜单的加号,在弹出窗口输入菜单名,就可以添加一个新的子菜单。
(子菜单选项:铅笔为修改菜单名,废纸篓为删除该子菜单,子菜单下无法再建子菜单,每个主菜单最多只能新建5个子 菜单。)
微擎目录结构介绍
pro├─ addons …………………………………………【模块安装目录】 (意为附加组件)│├─ business ……………………………………模块的名称 (示例) ││├─ images 建议 css 文件也放此目录.││├─ template 模板目录│││├─ mobile APP 端模板目录││││└─ ... *.html APP 端模板文件│││└─ ... *.html Web 端模板文件││├─ inc 引用的 php 文件目录│││├─ mobile Mobile端目录││││├─ xxx.inc.php 微站入口││││└─ ... .│││└─ web Web端模板目录│││├─ xxx.inc.php 微站管理入口│││└─ ... .││├─ icon.jpg 模块图标││├─ preview.jpg 模块预览││├─ manifest.xml 安装清单││├─ module.php 模块设置││├─ processor.php 消息处理││├─ receiver.php 消息订阅││└─ site.php 微站页面│└─ ... ……………………………………………其他扩展模块├─ api ………………………………………………… .│└─ uc.php .├─ attachment ………………………………………附件文件夹│├─ audios ………………………………………音频附件文件夹│└─ images ………………………………………图片附件文件夹│├─ global …………………………………系统公共文件夹││└─上传年份││└─上传月份││└─随机文件名│└─ $uniacid ... ……………………………按公众号年月组织的图片文件├─ app ……………………………………………【微站(Mobile)入口】│├─ common .││├─ bootstrap.app.inc.php .││├─ common.func.php .││└─ template.func.php .│├─ resource .││├─ css .││├─ fonts .││└─ js .│├─ source .││├─ activity .││├─ auth 身份验证││├─ channel 频道││├─ entry 入口││├─ home 个人││├─ mc 会员中心││└─ utility .│├─ themes 微站皮肤││├─ default 系统默认││└─ ... 自定义皮肤│├─ index.php 微站入口│└─ test.php 微站测试页面├─ data ……………………………………………… .│├─ config.php.default .│├─ config.php 系统配置│└─ db.php .├─ framework ………………………………………【微擎系统通用的工具类和方法】│├─ builtin ……………………………………【微擎内建模块】││├─ basic 文字回复模块││├─ core 会话消息统计│││└─ receiver.php .││├─ cover 通用封面回复││├─ default 默认回复模块││├─ music 音乐回复模块││├─ news 图文回复模块││├─ userapi 自定义接口回复模块│││├─ api 功能文件目录││││├─ baike.php 百科││││├─ calendar.php 万年历││││├─ express.php 快递││││├─ news.php 新闻││││├─ translate.php 翻译││││├─ weather.php 天气││││└─ ... 可扩展│││├─ images .││││└─ ... .│││├─ template .││││└─ ... .│││├─ icon.jpg .│││├─ preview.jpg .│││├─ module.php .│││├─ processor.php .│││└─ site.php .││└─ ... .│├─ class …………………………………………工具类││├─ loader.class.php 文件加载器││├─ db.class.php 数据库操作类││├─ account.class.php 公众号业务操作基类, ││├─ weixin.account.class.php 微信公众号业务操作││├─ yixin.account.class.php 易信││└─ laiwang.account.class.php 来旺 .│├─ function ……………………………………工具函数││├─ global.func.php 【全局通用函数】││├─ cache.file.func.php 文件缓存││├─ cache.func.php 缓存功能││├─ cache.memcache.func.php 插件缓存││├─ cache.mysql.func.php mysql缓存││├─ communication.func.php http 通信││├─ .func.php 兼容函数(业务功能) ││├─ compat.func.php 兼容函数(逻辑功能) ││├─ file.func.php 文件操作││├─ logging.func.php 日志记录││├─ pdo.func.php 数据库访问操作││├─ db.func.php 数据库信息相关操作││└─ tpl.func.php 自定义模板控件│├─ library ………………………………………其他函数库││├─ json .││├─ pdo .││├─ phpmailer .││├─ qrcode .││└─ uc .│├─ model …………………………………………业务功能模块││├─ account.mod.php 公众号相关操作││├─ activity.mod.php 营销活动││├─ app.mod.php APP 端相关操作││├─ cache.mod.php 缓存││├─ cloud.mod.php 云服务││├─ extension.mod.php 扩展功能││├─ mc.mod.php 会员功能││├─ module.mod.php 公众号││├─ payment.mod.php 支付功能││├─ reply.mod.php 规则回复││├─ setting.mod.php 读写系统设置缓存││├─ user.mod.php 操作用户││└─ utility.mod.php .│├─ bootstrap.inc.php .│├─ const.inc.php .│└─ version.inc.php├─ payment ……………………………………………支付功能│├─ alipay 支付宝支付││└─ ...│├─ wechat 微擎支付││└─ ... .│└─ config.php 支付配置文件├─ web ………………………………………………【后台管理(Web)入口】│├─ common ………………………………………公用文件││├─ bootstrap.sys.inc.php .││├─ common.func.php .││├─ frames.inc.php .││└─ template.func.php .│├─ resource ……………………………………资源文件││├─ components 引用外部组件│││├─ colorpicker 拾色器│││├─ daterangerpicker 日期范围│││├─ datetimepicker 日历│││├─ emotions 自定义表情│││├─ jplayer 音乐播放器│││├─ kindeditor 富文本编辑器│││├─ switch 开关│││├─ tinymce ??│││└─ zclip ??││├─ css 样式文件││├─ fonts 字体资源││├─ images 图片文件││└─ js ……………………………………… js函数库││├─ app …………………………………自定义模块│││├─ biz.js 业务工具类│││├─ config.js 模块化编程配置│││├─ district.js 省市县│││├─ domReady.js .│││└─ util.js 各种功能对话框││├─ lib …………………………………│││├─ angular-sanitize.min.js .│││├─ angular.min.js .│││├─ bootstrap-filestyle.min.js .│││├─ bootstrap.min.js .│││├─ chart.min.js .│││├─ css.min.js .│││├─ jquery-1.11.1.min.js .│││├─ jquery-ui-1.10.3.min.js .│││├─ jquery.caret.js .│││├─ moment.js .│││└─ underscore-min.js .││└─ require.js ……………………… .│├─ source ………………………………………后台管理控制器││├─ account 【controller|c】公众号管理│││├─ __init.php 公众号菜单管理│││├─ post.ctrl.php 【action|a】 .│││└─ ... 公众号业务功能││├─ activity 营销活动││├─ cloud 云服务(一键更新、云服务等)││├─ extension 扩展功能││├─ home 基础设置,(模块)快捷导航││├─ mc 会员中心││├─ platform 基础设置,(模块规则,数据统计,入口设置)││├─ profile 功能选项,系统配置││├─ site 微站功能││├─ system 系统管理││├─ user 操作用户管理││└─ utility 系统业务逻辑│├─ themes ………………………………………后台管理视图││├─ default …………………………………内建后台管理样式││└─ ... ………………………………………定制界面样式│├─ index.php 后台入口│└─ test.php 后台测试单元├─ api.php …………………………………………【公众平台与微擎系统通信的接口】├─ index.php …………………………………………微擎入口└─ install.php ………………………………………微擎安装程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<?php//将本部分代码保存为menu.php,填写自己的appid和appsecret,在post处修改自己的菜单,在浏览器端输入..../menu.php,返回errmsg":"请求成功","errcode":0,即为成功。
$appid="";//填写appid$secret="";//填写appsecret$url = "https://api.yixin.im/cgi-bin/token?grant_type=client_credential&appid={ $appid}&secret={$secret}";$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);$a = curl_exec($ch);$strjson=json_decode($a);$token = $strjson->access_token;$post = ' { "button":[ { "name":"在线客服", "sub_button":[ { "name":"召唤精灵", "type":"click", "key":"/dt2/ai.yx" }, { "name":"人工服务", "type":"click", "key":"/dt2/chat.yx" } ] }, { "name":"自助服务", "type":"click", "key":"/dt2/self.yx?id=36001" }, { "name":"帐号服务", "type":"click", "key":"/dt2/self.yx" }, { "name":"其他","sub_button":[ { "name":"將军令", "type":"click", "key":"/dt2/self.yx?id=77011" }, { "name":"防盜教程", "type":"click", "key":"/dt2/self.yx" }, { "name":"防骗教程", "type":"click", "key":"/dt2/self.yx" }, { "name":"其他介紹", "type":"click", "key":"/dt2/self.yx" }, { "name":"切换帐号", "type":"click", "key":"/dt2/logout.yx" } ] } ] } ';$url = "https://api.yixin.im/cgi-bin/menu/create?access_token={$token}"; $ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post);curl_exec($ch);curl_close($ch);?>以下为响应自定义菜单,在elseif($customevent=="CLICK")部分添加。
<?php//易信公众平台地址https://plus.yixin.im/login,复制后后缀改为.phpdefine("TOKEN", "yixin");$wechatObj = new wechatCallbackapiTest();if (isset($_GET['echostr'])) {$wechatObj->valid();}else{$wechatObj->responseMsg();}class wechatCallbackapiTest{public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($this->checkSignature()){echo $echoStr;exit;}}public function responseMsg(){//get post data, May be due to the different environments$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//extract post dataif (!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDA TA);$fromUsername = $postObj->FromUserName;$toUsername = $postObj->ToUserName;$type = $postObj->MsgType;$key=$postObj->EventKey;$customevent = $postObj->Event;$latitude = $postObj->Location_X;$longitude = $postObj->Location_Y;$keyword = trim($postObj->Content);$time = time();$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDA TA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";switch ($type){ case "event";if ($customevent=="subscribe"){$contentStr = "感谢你的关注\n回复1查看账号简介\n回复2查看联系方式\n回复3查看法律文书";}elseif($customevent=="CLICK"){if ($key== "/dt2/ai.yx"){$contentStr = "召唤精灵示例";}}break;case "image";$contentStr = "你的图片很棒!";break;case "location";$contentStr = "你的纬度是{$latitude},经度是{$longitude},我已经锁定!";break;case "text";switch($keyword){case "1";$contentStr = "易伟律师,擅长交通事故、保险纠纷、医疗损害";break;case "2";$contentStr = "联系方式:汕头市金平区华乾大厦703,1341702551,email:30090032@。
";break;case "3";$contentStr = "31离婚协议\n32租房合同\n33交通事故协议书";break;default;$contentStr ="hi";}break;default;$contentStr ="此项功能尚未开发";}$msgType="text";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;}else {echo "";exit;}}private function checkSignature(){$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}}?>。