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

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Vue.js與ASP.NET的結合,實現Web應用的效能最佳化和擴展的技巧和建議隨著Web應用的快速發展,效能最佳化成為開發者不可或缺的重要任務。 Vue.js作為一個流行的前端框架,與ASP.NET的結合可以幫助我們實現更好的效能最佳化和擴充。本文將會介紹一些技巧和建議,並提供一些程式碼範例。一、減少HTTP請求HTTP請求的數量直接影響Web應用程式的載入速度。透過

譯者|陳峻審校|重樓上世紀90年代,當人們提起軟體程式設計時,通常意味著選擇一個編輯器,將程式碼檢入CVS或SVN程式碼庫,然後將程式碼編譯成可執行檔。與之對應的Eclipse和VisualStudio等整合開發環境(IDE)可以將程式設計、開發、文件、建置、測試、部署等步驟納入到一個完整的軟體開發生命週期(SDLC)中,從而提高了開發人員的工作效率。近年來,流行的雲端運算和DevSecOps自動化工具提升了開發者的綜合能力,使得更多的企業能夠更輕鬆地開發、部署和維護軟體應用。如今,生成式AI作為下一代開

如何在ASP.NET程式中正確使用和最佳化MySQL連線池?引言:MySQL是一種廣泛使用的資料庫管理系統,它具有高效能、可靠性和易用性的特性。在ASP.NET開發中,使用MySQL資料庫進行資料儲存是常見的需求。為了提高資料庫連接的效率和效能,我們需要正確地使用和最佳化MySQL連接池。本文將介紹在ASP.NET程式中如何正確使用和最佳化MySQL連接池的方法。

如何在ASP.NET程式中重連MySQL連線?在ASP.NET開發中,使用MySQL資料庫是非常常見的。然而,由於網路或資料庫伺服器的原因,有時會導致資料庫連線中斷或逾時。在這種情況下,為了確保程式的穩定性和可靠性,我們需要在連線中斷後重新建立連線。本文將介紹如何在ASP.NET程式中實作重連MySQL連線的方法。引用必要的命名空間首先,在程式碼檔案的頭部引用

Vue.js與ASP.NET的結合,實現企業級應用的開發和部署在當今快速發展的互聯網技術領域,企業級應用的開發和部署變得越來越重要。 Vue.js和ASP.NET是兩個在前端和後端開發中廣泛使用的技術,將它們結合起來可以為企業級應用的開發和部署帶來許多優勢。本文將透過程式碼範例介紹如何使用Vue.js和ASP.NET進行企業級應用的開發和部署。首先,我們需要安裝

如何在ASP.NET程式中正確設定和使用MySQL連線池?隨著互聯網的發展和資料量的增加,對資料庫的存取和連接需求也不斷增加。為了提高資料庫的效能和穩定性,連接池成為了一個必備的技術。本文主要介紹如何在ASP.NET程式中正確配置和使用MySQL連接池,以提高資料庫的效率和回應速度。一、連接池的概念和作用連接池是一種重複使用資料庫連接的技術,在程式初始

如何在ASP.NET程式中正確使用並最佳化MySQL連線池的事務效能?在ASP.NET程式中,資料庫事務是非常重要的一環。事務可以確保資料庫的一致性和完整性,同時也可以提供更好的效能。而在使用MySQL資料庫時,利用連線池來管理連線資源和最佳化效能是不可或缺的。首先,讓我們簡單了解一下MySQL連接池的概念。連接池是一組連接的緩衝池,透過預先初始化一定數量的數

使用VisualStudio在Linux上進行ASP.NET開發的建議配置概述:隨著開源軟體的發展和Linux作業系統的普及,越來越多的開發者開始在Linux上進行ASP.NET開發。而作為一款功能強大的開發工具,VisualStudio在Windows平台上一直佔有主導地位。本文將介紹如何在Linux上設定VisualStudio來進行ASP.NE
