[php]微信测试号调取acces_token,自定义菜单以及被动响应消息

  1 <?php
  2 /**自己写的  */
  3 $wechatObj = new wechatCallbackapiTest();
  4 $wechatObj->valid();
  5 $wechatObj->responseMsg();//响应消息
  6 $wechatObj->set_menu();//自定义菜单
  7
  8 class wechatCallbackapiTest
  9 {
 10 /**
 11  * 绑定url、token信息
 12  */ 
 13     public function valid()
 14     {
 15         $echoStr = $_GET["echostr"];
 16
 17         //valid signature , option
 18         if($this->checkSignature()){
 19             echo $echoStr;
 20             exit;
 21         }
 22     }
 23
 24 /**
 25  * 接收消息,并自动发送响应信息
 26  */ 
 27     public function responseMsg()
 28     {
 29         //get post data, May be due to the different environments
 30         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
 31
 32           //extract post data
 33           //提取post数据
 34         if (!empty($postStr)){
 35
 36                   $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
 37                 $fromUsername = $postObj->FromUserName;//发送人
 38                 $toUsername = $postObj->ToUserName;//接收人
 39                 $keyword = trim($postObj->Content);//消息内容
 40                 $time = time();//当前时间做为回复时间
 41
 42                 $textTpl = "<xml>
 43                             <ToUserName><![CDATA[%s]]></ToUserName>
 44                             <FromUserName><![CDATA[%s]]></FromUserName>
 45                             <CreateTime>%s</CreateTime>
 46                             <MsgType><![CDATA[%s]]></MsgType>
 47                             <Content><![CDATA[%s]]></Content>
 48                             <FuncFlag>0</FuncFlag>
 49                             </xml>";
 50                 if(!empty( $keyword ))
 51                 {
 52                       $msgType = "text";
 53                     $contentStr = "lpc";
 54                     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
 55                     echo $resultStr;
 56                 }else{
 57                     echo "Input something...";
 58                 }
 59
 60         }else {
 61             echo "";
 62             exit;
 63         }
 64     }
 65
 66 /**
 67 * 检查签名,确保请求是从微信发过来的
 68 */  
 69     private function checkSignature()
 70     {
 71         $signature = $_GET["signature"];
 72         $timestamp = $_GET["timestamp"];
 73         $nonce = $_GET["nonce"];
 74
 75         $token = TOKEN;
 76         $tmpArr = array($token, $timestamp, $nonce);
 77         sort($tmpArr);
 78         $tmpStr = implode( $tmpArr );
 79         $tmpStr = sha1( $tmpStr );
 80
 81         if( $tmpStr == $signature ){
 82             return true;
 83         }else{
 84             return false;
 85         }
 86     }
 87
 88 /**
 89  * 自定义菜单
 90  */ 
 91     public function set_menu()
 92     {
 93         $access_token = $this->check_token();
 94
 95         if ($access_token==‘no‘) {
 96
 97         }else{
 98             $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=$access_token";
 99
100             $post_data = ‘
101             {
102                      "button":[
103                         {
104                             "type":"view",
105                             "name":"首页",
106                             "url":"http://www.lpcblog.com/weixin/shop/"
107                         },
108                         {
109                             "name":"个人中心",
110                             "sub_button":[
111                             {
112                                 "type":"view",
113                                 "name":"个人信息",
114                                 "url":"http://www.lpcblog.com/weixin/shop/user.html"
115                             },
116                             {
117                                 "type":"view",
118                                 "name":"个人账户",
119                                 "url":"http://www.lpcblog.com/weixin/shop/myuser.html"
120                             }]
121                         },
122                         {
123                             "type":"click",
124                             "name":"关于我们",
125                             "key":"V1001_TODAY_MUSIC"
126                         }
127                         ]
128             }‘;
129
130             //设置菜单也是post传值
131             return json_decode($this->curl($url,$post_data);
132         }
133     }
134
135     //判断token值时效方法
136     public function check_token()
137     {
138         if (file_exists(‘token.txt‘))
139         {
140             //判断token值时效,修改时间
141             $mtime=filemtime("token.txt");
142             if((time()-$mtime)<7000){
143                 return $this->read_access_token();
144             }else{
145                 return ‘NO‘;
146             }
147         }else{
148             $this->mem_token();
149             return $this->read_access_token();
150         }
151     }
152
153     //curl封装类
154     public function  curl($url,$data=array())
155     {
156         // 初始化curl
157         $ch = curl_init();
158
159         curl_setopt($ch, CURLOPT_URL, $url);
160         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
161
162         // 开启支持https
163         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
164         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
165         // post数据
166         curl_setopt($ch, CURLOPT_POST, 1);
167         // post的变量
168         curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
169
170         $output = curl_exec($ch);
171         // 关闭curl
172         curl_close($ch);
173         return $output;
174     }
175
176     //获取access_token方法
177     public function get_token()
178     {
179         //加载常量文件
180         include(‘define.php‘);
181         //微信获取access_token地址
182         $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".APPID."&secret=".APP_SECRET;
183
184         //传值方式POST
185         $post_data = array(
186             ‘grant_type‘=>‘client_credential‘,
187             ‘appid‘=>APPID,
188              ‘client_secret‘=>APP_SECRET,
189         );
190         //curl方法模拟提交获取access_token(格式json)
191         $access_token = json_decode($this->curl($url,$post_data);
192         if($access_token[‘access_token‘]){
193             return $access_token;
194         }else{
195             return "获取access_token失败";
196         }
197     }
198
199     //读取access_token的方法
200     public function read_access_token()
201     {
202         $token = unserialize(file_get_contents(‘token.txt‘));
203         return $token[‘access_token‘];
204     }
205
206     //存token方法
207     public function mem_token()
208     {
209         //调用获取access_token的方法
210         $access_token = $this->get_token();
211         //序列化返回的access_token
212         $txt =  serialize($access_token);
213         //保存access_token
214         file_put_contents(‘token.txt‘,$txt);
215     }
216 } 


[php]微信测试号调取acces_token,自定义菜单以及被动响应消息

时间: 2024-12-26 16:19:44

[php]微信测试号调取acces_token,自定义菜单以及被动响应消息的相关文章

如何在微信的自定义菜单上实现“历史消息”功能?

最近在开发微信的接口发现可以通过菜单实现微信的历史消息(历史消息是指订阅号或者服务号每次群发的消息),拿出来与大家分享,操作方法如下: 1.首先进入到您维护的微信订阅号或者服务号,点击帐号详情(右上的小人像). 2.进入帐号详情,找到“查看消息”并点击进入. 3.进入到历史消息页面后,点击右上角的“更多按钮”(三个竖排的点),找到复制链接,复制这个链接,这个链接就是我们要找的历史消息链接. 4.在微信中增加一个”历史消息“菜单,设置为视图类型,将菜单试图地址设置为刚才复制的链接,然后保存生效.

小蚂蚁学习微信公众平台开发(3)--获取token,绑定微信号,自定义菜单,事件响应demo

这个教程的基础篇和提升篇都看完了,总感觉有点隔靴挠痒的感觉,讲的东西我都懂,没有吸收多少新鲜的知识.貌似还没有我这个一年前写的脚本好呢,估计也是照顾新人吧.期待高级篇的讲解,不过现在高级篇估计还在录制当中,所以对微信公众平台开发的学习就先到这里吧. 下面介绍一下我很久以前写的这个脚本.基本上常用的几个功能都有了,access_token的获取,用户的微信号和公司的账号的绑定,查询公司服务器上的资料,自定义表单什么.不过随着水平的提高,现在返回头来看,确实有很多的不足,比较最明显的就是token获

微信开发二【自定义菜单】

<?php /**  * 微信--自定义菜单  */ class Wechat_Menu {     /**      * 获取acess_token      */     public function Access_Token($appid, $appsecret)     { //         $appid = ""; //         $appsecret = "";         $url = "https://api.weix

微信公众平台开放自定义菜单

?自面向开发者和第三方平台开放微信内网页开发工具包(JS-SDK),允许接入微信小店.微信支付等多达11 类的接口集,并且向认证的服务号和订阅号开放公众平台的客服功能,以及帮助公众号把客服系统搬到微信上后,微信公众平台进一步放开基础能力,将对所有公众号开放“自定义菜单”功能.平台管理者在后台点击“添加功能插件”后,选择右下角的“自定义菜单”卡片即可申请开通插件.根据微信平台提供的消息,与之前开发的“自定义菜单”功能相似,平台管理者在编辑自定义菜单功能时,可选择“跳转到网页”和“发送消息”两种动作

微信公众号的自定义菜单事件推送

1.创建自定义菜单 2.组装自定义菜单(JSON格式数据) 微网站:可以实现跳转到微信响应式页面 产品中心:可以实时获取服务器端产品信息,并以图文形式返回 关于我们:可以返回相关的文本信息 微网站:跳转链接 产品中心与关于我们:内部请求 请求代码,请参menu.php页面,创建成功,请取消关注微信公众账号并再次关注,效果如图 3.自定义菜单事件推送 A.接收相关参数(Event和EventKey) 在之前的api.php之中添加代码 B.对参数进行判断与操作 上传代码,效果如下图所示

微信开发模式,自定义菜单的创建

在微信服务器和公众平台都配置好以后,创建菜单(通过在线接口调试工具). 开发者工具->在线接口调试工具 首先获取access_token 图中黄字部分即为access_token 选择接口类型->自定义菜单,填入access_token和相应的post数据 点击检查问题,至此菜单创建成功. 微信开发者文档内容: 请注意: 1.自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单. 2.一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替. 3.创建自定义菜单

微信公众号-开发者-自定义菜单

我是个初学者,网上找了看了好多,都是第三方实现的,考虑到安全问题,不敢用! 今天终于摸索出了实现方法. 官方api:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html 步骤1:选到“开发者中心”. 2.显示AppSecret,完整显示(要微信扫一下). 3. 去“微信公众平台接口调试工具”, a.选到“基础支持”- “获取access_token接口/token”, b.填写“appid”和“secret”(

关于微信公众平台的自定义菜单

在微信公众平台中,菜单是可以配置的,分为两种,登陆微信公众平台账号,在后台管理界面,可以进行手动配置,登陆地址:https://mp.weixin.qq.com/ 温馨提示:服务号开通即带自定义菜单,而订阅号要花钱才能开通的哦. 手动配置的东西很多的,这样不用写后台,就可以让公众号工作了,但功能有限,成为开发者就不同了,可以做随心所欲的开发. 说说成为开发者后的自定义菜单配置,首先进入开发者中心,在上面有开发者ID,复制AppID,和AppSecret(应用密钥),一会有用.向下拉,点击开发者工

微信公众号-开发者-自定义菜单-CLICK事件处理

想点击菜单,推送消息.功能很简单,坑了我一天时间.在此笔记. 菜单代码: { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜单", "sub_button":[ { "type&