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

简介: 本文介绍介绍微信公众平台自定义菜单及高级接口的PHP SDK及使用方法。   作者 方倍工作室 修正记录: 2014.05.03 v1.0   方倍工作室 http://www.cnblogs.

本文介绍介绍微信公众平台自定义菜单及高级接口的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"));

 

 

 

目录
相关文章
ly~
|
3月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
86 6
|
2月前
|
JSON 前端开发 API
使用微信JS-SDK调用发票接口的完整开发指南
本文介绍了如何使用微信JS-SDK的`chooseInvoiceTitle`接口来调用微信的发票功能。通过微信发票接口,用户可以选择开具个人或单位发票,并获取相关发票信息,如抬头、税号、公司地址等。在文中,详细描述了JS-SDK的初始化、发票接口的调用方式,并提供了完整的代码示例。文章还介绍了如何处理返回的发票信息,帮助开发者快速集成微信发票功能。
94 2
|
3月前
|
Java PHP 数据安全/隐私保护
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
本文详细介绍了PHP面向对象编程的一系列核心概念和用法,包括构造函数、析构函数、继承、方法重写、访问控制、接口、抽象类、静态成员、final关键字、以及this、self、parent这三个关键字的异同和作用。通过具体示例代码,展示了如何在PHP中使用这些面向对象的特性,以及它们在实际开发中的应用。
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
|
2月前
|
移动开发 安全 API
微信H5支付--微信JS-SDK支付--点金计划
本文详细介绍了微信H5支付和JS-SDK支付的原理、配置和开发流程,涵盖了H5支付在移动端浏览器外唤起微信支付的细节,以及JS-SDK支付在微信内置浏览器中完成支付的相关注意事项。文章还针对微信支付常见问题,提供了解决方案和代码示例。最后,文章深入解析了微信支付点金计划,包括商家小票的自定义开发、API接口以及支付成功后的页面展示逻辑,为开发者提供了完整的开发参考。
99 0
微信H5支付--微信JS-SDK支付--点金计划
|
2月前
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
44 0
|
4月前
|
网络协议 API PHP
PhalApi:在宝塔一键安装部署PHP开源接口框架的教程
要在宝塔面板上一键安装部署PhalApi开源接口框架,首先进入宝塔软件商店,切换到“一键部署”选项,搜索“phalapi”并点击“一键部署”。安装时需填写接口域名、数据库名及密码,提交后等待安装完成。安装成功后可在宝塔面板中查看新站点和源代码目录,并通过DNS解析设置访问接口域名,如`http://myapi.phalapi.net/`。默认开启的调试模式便于测试,可通过修改`config/sys.php`中的`debug`值为`false`关闭。最后,在源代码中开发自己的PHP接口,PhalApi会自动生成在线接口文档,方便后续调用与维护。更多详细教程可参考官方文档。
|
4月前
|
缓存 JavaScript 前端开发
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)更新时间(2020-10-29)
|
5月前
|
PHP
PHP 接口和继承的异同?
【7月更文挑战第2天】PHP 接口和继承的异同?
34 0
|
5月前
|
PHP
PHP中接口如何定义?
【7月更文挑战第2天】PHP中接口如何定义?
32 0
|
5月前
|
前端开发 PHP 数据格式
【附带效果视频】php接口给前端返回流式数据,php使用event-stream进行数据推送,循环一次输出一次
【附带效果视频】php接口给前端返回流式数据,php使用event-stream进行数据推送,循环一次输出一次
198 0