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

调用方法:

初始化对象

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

查看Access Token

  1. var_dump($weixin->access_token);

创建二维码

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

获取关注者列表

  1. var_dump($weixin->get_user_list());

获取用户信息

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

创建菜单

  1. $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":"服务热线"}]}]}';
  2. var_dump($weixin->create_menu($data));

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

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

上传下载多媒体

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

发送客服消息

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

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

  1. 微信公众平台自定义菜单及高级接口PHP SDK(转)

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

  2. 微信公众平台自定义菜单PHP开发

    微信公众平台自定义菜单PHP开发,微信公众平台自定义菜单是如何实现的呢?其实很简单,首先在微信公众平台升级为服务号,获取appid和appsecret,然后根据这2个参数获取access_token, ...

  3. java版微信公众平台自定义菜单创建代码实现

    微信公众平台自定义菜单创建代码实现—java版 搞了两天的自定义菜单,终于搞定了,现在分享下心得,以便后来者少走弯路...... 好了,先看先微信官方的API 官方写的很详细,但是我看完后很茫然,不知 ...

  4. 微信公众平台自定义菜单接口API指南

    微信公众平台开发模式自定义菜单接口API指南 简介 开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建.查询和删除等操作. 自定义菜单接口可实现以下类型按钮: clic ...

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

    今天微信公众平台发布更新,自定义菜单新增扫一扫.发图片.发送位置等功能,这对于有意挖掘微信LBS服务的运营者来说更便捷了,订阅号不用返回微信界面就能扫图.发送图片.调用地理位置,用户体验更友好,自然也 ...

  6. 微信公众平台自定义菜单创建代码实现—java版

    搞了两天的自定义菜单,终于搞定了,现在分享下心得,以便后来者少走弯路...... 好了,先看先微信官方的API 官方写的很详细,但是我看完后很茫然,不知道你们什么感觉.  我知道是post一个带参数的 ...

  7. H5网页后在返回到微信公众平台自定义菜单

    <p class="success">订阅成功!</p> <div class="btn" @click="finish ...

  8. PHP玩转微信公众平台自定义接口

    从微信公众平台开通自定义回复后,就一直在关注微信接口这一块,很想用自定义回复这块做个站长工具的查询,例如PR查询,备案查询等,输入网址信息,就能自动获取PR,获取备案信息,应该是一个不错的想法.不过以 ...

  9. 自定义菜单和高级接口-获取Access Token

    自定义菜单和高级接口都需要使用APPID和AppSecret来创建. 对应暂时没有这些权限的微信公众账号,开发者可以申请测试账号来体验和测试体验微信公众平台的所有高级接口的功能.链接 https:// ...

随机推荐

  1. eclipse远程调试

    -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000Eclipse 菜单上的 Window > Preferences > ...

  2. Servlet编程-步步为营

    [环境]eclipse j2ee;Tomcat 7.0; [模型1] package com.zhiqi; import ...; public class TestServlet extends H ...

  3. OpenGL EXT: shader_buffer_load

    http://www.opengl.org/registry/specs/NV/shader_buffer_load.txt Overview At a very coarse level, GL h ...

  4. 39. 求分数序列前N项和

    求分数序列前N项和 #include <stdio.h> int main() { int i, n; double numerator, denominator, item, sum, ...

  5. flex的Accordion组件头部文本居中显示

    flex的Accordion组件头部文本默认是居左的,可以通过设置headerStyleName属性使之居中,另外还可以设置字体的样式等 <?xml version="1.0" ...

  6. Python操作MySQL以及中文乱码的问题

    Python操作MySQL需要安装Python-MySQL可以从网上搜索一下,和一般的Python包一样安装 安装好之后,模块名字叫做MySQLdb ,在Window和Linux环境下都可以使用,试验 ...

  7. P1541 乌龟棋

    30分做法,暴力枚举: #include <bits/stdc++.h> using namespace std; const int maxn = 400; int n, m; int ...

  8. getWindow().setFlags

    //设置窗体全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams ...

  9. 有序列表和无序列表、流、格式布局:position

    列表方块: 有序列表和无序列表 ol/ul 例如<ol: style:"list-style:""  "> 1.<ol: style:&quo ...

  10. App Previews操作经验

    App Previews操作经验 http://www.cocoachina.com/ios/20140924/9741.html http://www.cocoachina.com/bbs/read ...