微信公众平台自定义菜单及高级接口PHP SDK

本文介绍介绍微信公众平台自定义菜单及高级接口的PHP SDK及使用方法。

作者


方倍工作室

修正记录:

2014.05.03 v1.0

方倍工作室
http://www.cnblogs.com/txw1958/

SDK 源码:


  1 /*
2 方倍工作室 http://www.cnblogs.com/txw1958/
3 CopyRight 2014 www.doucube.com All Rights Reserved
4 */
5
6 class class_weixin_adv
7 {
8 var $appid = "";
9 var $appsecret = "";
10
11 //构造函数,获取Access Token
12 public function __construct($appid = NULL, $appsecret = NULL)
13 {
14 if($appid){
15 $this->appid = $appid;
16 }
17 if($appsecret){
18 $this->appsecret = $appsecret;
19 }
20
21 //hardcode
22 $this->lasttime = 1395049256;
23 $this->access_token = "nRZvVpDU7LxcSi7GnG2LrUcmKbAECzRf0NyDBwKlng4nMPf88d34pkzdNcvhqm4clidLGAS18cN1RTSK60p49zIZY4aO13sF-eqsCs0xjlbad-lKVskk8T7gALQ5dIrgXbQQ_TAesSasjJ210vIqTQ";
24
25 if (time() > ($this->lasttime + 7200)){
26 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
27 $res = $this->https_request($url);
28 $result = json_decode($res, true);
29 //save to Database or Memcache
30 $this->access_token = $result["access_token"];
31 $this->lasttime = time();
32 }
33 }
34
35 //获取关注者列表
36 public function get_user_list($next_openid = NULL)
37 {
38 $url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$this->access_token."&next_openid=".$next_openid;
39 $res = $this->https_request($url);
40 return json_decode($res, true);
41 }
42
43 //获取用户基本信息
44 public function get_user_info($openid)
45 {
46 $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
47 $res = $this->https_request($url);
48 return json_decode($res, true);
49 }
50
51 //创建菜单
52 public function create_menu($data)
53 {
54 $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$this->access_token;
55 $res = $this->https_request($url, $data);
56 return json_decode($res, true);
57 }
58
59 //发送客服消息,已实现发送文本,其他类型可扩展
60 public function send_custom_message($touser, $type, $data)
61 {
62 $msg = array(‘touser‘ =>$touser);
63 switch($type)
64 {
65 case ‘text‘:
66 $msg[‘msgtype‘] = ‘text‘;
67 $msg[‘text‘] = array(‘content‘=> urlencode($data));
68 break;
69 }
70 $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$this->access_token;
71 return $this->https_request($url, urldecode(json_encode($msg)));
72 }
73
74 //生成参数二维码
75 public function create_qrcode($scene_type, $scene_id)
76 {
77 switch($scene_type)
78 {
79 case ‘QR_LIMIT_SCENE‘: //永久
80 $data = ‘{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": ‘.$scene_id.‘}}}‘;
81 break;
82 case ‘QR_SCENE‘: //临时
83 $data = ‘{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": ‘.$scene_id.‘}}}‘;
84 break;
85 }
86 $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->access_token;
87 $res = $this->https_request($url, $data);
88 $result = json_decode($res, true);
89 return "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($result["ticket"]);
90 }
91
92 //创建分组
93 public function create_group($name)
94 {
95 $data = ‘{"group": {"name": "‘.$name.‘"}}‘;
96 $url = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=".$this->access_token;
97 $res = $this->https_request($url, $data);
98 return json_decode($res, true);
99 }
100
101 //移动用户分组
102 public function update_group($openid, $to_groupid)
103 {
104 $data = ‘{"openid":"‘.$openid.‘","to_groupid":‘.$to_groupid.‘}‘;
105 $url = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=".$this->access_token;
106 $res = $this->https_request($url, $data);
107 return json_decode($res, true);
108 }
109
110 //上传多媒体文件
111 public function upload_media($type, $file)
112 {
113 $data = array("media" => "@".dirname(__FILE__).‘\\‘.$file);
114 $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=".$this->access_token."&type=".$type;
115 $res = $this->https_request($url, $data);
116 return json_decode($res, true);
117 }
118
119 //https请求(支持GET和POST)
120 protected function https_request($url, $data = null)
121 {
122 $curl = curl_init();
123 curl_setopt($curl, CURLOPT_URL, $url);
124 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
125 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
126 if (!empty($data)){
127 curl_setopt($curl, CURLOPT_POST, 1);
128 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
129 }
130 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
131 $output = curl_exec($curl);
132 curl_close($curl);
133 return $output;
134 }
135 }

方倍工作室
http://www.cnblogs.com/txw1958/

调用方法:

初始化对象


$weixin = new class_weixin_adv("wx6222221b11111111", "3079cb22ad383ae7371d12aed1b2d0cc");

查看Access Token


var_dump($weixin->access_token);

创建二维码


var_dump($weixin->create_qrcode("QR_SCENE", "134324234"));

获取关注者列表


var_dump($weixin->get_user_list());

获取用户信息


$openid = "oLVPpjkttuZTbwDwN7vjHNlqsmPs";
var_dump($weixin->get_user_info($openid));

创建菜单


$data =‘{"button":[{"name":"方倍工作室","sub_button":[{"type":"click","name":"公司简介","key":"公司简介"},{"type":"click","name":"社会责任","key":"社会责任"},{"type":"click","name":"联系我们","key":"联系我们"}]},{"name":"产品服务","sub_button":[{"type":"click","name":"微信平台","key":"微信平台"},{"type":"click","name":"微博应用","key":"微博应用"},{"type":"click","name":"手机网站","key":"手机网站"}]},{"name":"技术支持","sub_button":[{"type":"click","name":"文档下载","key":"文档下载"},{"type":"click","name":"技术社区","key":"技术社区"},{"type":"click","name":"服务热线","key":"服务热线"}]}]}‘;
var_dump($weixin->create_menu($data));

用户分组 方倍工作室
http://www.cnblogs.com/txw1958/


var_dump($weixin->create_group("老师"));
var_dump($weixin->update_group($openid, "100"));

上传下载多媒体


var_dump($weixin->upload_media("image","pondbay.jpg"));

发送客服消息


var_dump($weixin->send_custom_message($openid, "text", "asdf"));

=========================================================

方倍工作室微信公众平台账号关注方法:
1. 微信通讯录-添加朋友-查找公众号-搜索“方倍工作室”
2.
微信通讯录-添加朋友-搜号码-输入“pondbaystudio”
3. 使用微信扫描下面的二维码

微信公众平台自定义菜单及高级接口PHP SDK,布布扣,bubuko.com

时间: 2024-08-06 16:05:21

微信公众平台自定义菜单及高级接口PHP SDK的相关文章

手把手教会你微信公众平台自定义菜单开发——创建菜单

一如既往的,关于微信公众平台的开发,不算出自大牛的代码,但是简单易懂适合刚入门的朋友. 首先先介绍一下逻辑,因为发现很多朋友都不能看懂微信官方的文档,当然啦,这跟你是否认真看有关的,认真看总能看懂的,废话不说了.此时,我当你已经有一个已经申请到自定义菜单开发权限的微信服务号.首先,你要在后台开发模式下面找到你的AppId 还有 AppSecret并且记下来,然后通过这两个官方发放给你的ID去获取一个ACCESS_TOKEN[官方解释是:第三方访问api资源的票据],稍后会通过这个ACCESS_T

微信公众平台自定义菜单开发——创建菜单

自己从不会到最后做出来,所以好东西必须分享,所以我就给大家写一下过程 1.首先必须是成为微信的开发者,这样才有AppId 和AppSecret 2步就是获取access_token 在你的浏览器上输入https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET (注意连接中得appid=APPID&secret=APPSECRET 分别是你自己在微信

微信公众平台开放 9 大高级接口,它有什么意义?

微信刚刚更新公众平台,向服务号开放微信认证,开放 9 大高级接口,增加开发者问答系统,并对微信公众平台的后台管理界面进行改版. 其中最受关注的是微信向开发者开放的九大高级接口.这些接口为: 语音识别接口 客服接口 OAuth2.0 网页授权接口 生成带参数的二维码接口 获取用户地理位置接口 获取用户基本信息接口 获取关注者列表接口 用户分组接口 上传下载多媒体文件接口 上图中,微信官方对九大接口作了详细的介绍.我们一起来看看微信开放这些接口有什么意义. 1. 语音识别 描述:通过语音识别接口,用

微信公众平台开发(76) 无高级接口账号获取用户基本信息

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access

微信公众平台自定义菜单新增扫一扫、发图片、发位置 LBS运作更便捷

今天微信公众平台发布更新,自定义菜单新增扫一扫.发图片.发送位置等功能,这对于有意挖掘微信LBS服务的运营者来说更便捷了,订阅号不用返回微信界面就能扫图.发送图片.调用地理位置,用户体验更友好,自然也提高了黏度,对涨粉也好一些.详细能力如下: 公众号自定义菜单新增扫一扫.发图片.发位置功能 1. 扫码推送事件 用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息. 2. 扫码推送事件,且弹出“消息接收

微信公众平台自定义菜单问题解决

在制作(www.helpqy.com)的过程中,进行微信公众平台的自定义菜单操作,调了很久微信服务器都返回错误代码,提示button size不对.一直怀疑是json格式不对,因为一直是将原始的Json通过加引号的方式变成字符串.后面自定义对象,将对象序列化为json,然后将此json传给服务器,成功自定义菜单.自定义对象的时候需要注意,由于菜单的每一项都可以不同,在需要定义泛型来接纳,并且为了保证泛型能够接纳不同类型,需要定义一个基本类型,然后其它类都继承自此类,泛型也使用这个基本类为基类.

微信公众平台自定义菜单

之前申请了一个订阅号,当准备大张旗鼓的开始创建自定义菜单的时候发现自定义菜单不针对订阅号开放,没有办法,只好再申请服务号,问题又产生了,服务号不针对个人 开放,经过一系列的折腾,不能不说我最后还是申请到了一个服务号(xiaofeiyu_super),还是蛮感谢腾讯审核的那个人的,虽然不知道是哪位,并且之前也给我拒绝过一次. 废话少说,也不再扯些自定义菜单有什么好处,我想对于大多说我们来说,就只是为了好玩,发现有这么个东西,便想着去玩玩.还是开始今天的主题,怎样才能生成自己的 菜单吧.其实对于自定

微信公众平台自定义菜单配置工具的实现

由于JS脚本跨域访问的问题,无法通过jQuery的Ajax方法直接调用微信的API,故采用服务器端转发的方式与微信API交互. 配置自定义菜单须先获取Access Token,前端JS代码如下: 1 function getAccessToken() 2 { 3 var appidParam = $("#appid").val(); 4 var secretParam = $("#secret").val(); 5 var date = new Date(); 6

微信公众平台开发(88) 用户分组接口

本文介绍在微信公众平台上如何使用高级接口开发用户分组接口的功能. 一.接口介绍 开发者可以使用接口,对公众平台的分组进行查询.创建.修改操作,也可以使用接口在需要时移动用户到某个分组. 一个公众账号,最多支持创建500个分组. 接口调用请求说明创建分组http请求方式: POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN POST数据格式:json POST数据例子: