微信公众平台自定义菜单及高级接口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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Vue.js와 ASP.NET의 결합은 웹 애플리케이션의 성능 최적화와 확장을 위한 팁과 제안을 제공합니다. 웹 애플리케이션의 급속한 발전으로 인해 성능 최적화는 개발자에게 필수적이고 중요한 작업이 되었습니다. 인기 있는 프런트 엔드 프레임워크인 Vue.js를 ASP.NET과 결합하면 더 나은 성능 최적화 및 확장을 달성하는 데 도움이 될 수 있습니다. 이 문서에서는 몇 가지 팁과 제안 사항을 소개하고 몇 가지 코드 예제를 제공합니다. 1. HTTP 요청 감소 HTTP 요청 수는 웹 애플리케이션의 로딩 속도에 직접적인 영향을 미칩니다. 통과하다

번역기 | 검토자: Chen Jun | Chonglou 1990년대에 사람들이 소프트웨어 프로그래밍을 언급할 때 이는 일반적으로 편집기를 선택하고 코드를 CVS 또는 SVN 코드 베이스로 확인한 다음 코드를 실행 파일로 컴파일하는 것을 의미했습니다. Eclipse 및 Visual Studio와 같은 해당 통합 개발 환경(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 연결 풀을 올바르게 구성하고 사용하는 방법은 무엇입니까? 인터넷의 발달과 데이터 양의 증가로 인해 데이터베이스 접속 및 연결에 대한 수요도 증가하고 있습니다. 데이터베이스의 성능과 안정성을 향상시키기 위해서는 커넥션 풀링(Connection Pooling)이 필수적인 기술이 되었습니다. 이 기사에서는 ASP.NET 프로그램에서 MySQL 연결 풀을 올바르게 구성하고 사용하여 데이터베이스의 효율성과 응답 속도를 향상시키는 방법을 주로 소개합니다. 1. 커넥션 풀링의 개념과 기능 커넥션 풀링은 데이터베이스 커넥션을 재사용하는 기술이다.

ASP.NET 프로그램에서 MySQL 연결 풀의 트랜잭션 성능을 올바르게 사용하고 최적화하는 방법은 무엇입니까? ASP.NET 프로그램에서 데이터베이스 트랜잭션은 매우 중요한 부분입니다. 트랜잭션은 데이터베이스의 일관성과 무결성을 보장하는 동시에 더 나은 성능을 제공합니다. MySQL 데이터베이스를 사용하는 경우 연결 자원을 관리하고 성능을 최적화하기 위해 연결 풀을 사용하는 것이 필수적입니다. 먼저 MySQL 커넥션 풀의 개념을 간략하게 이해해보자. 연결 풀은 특정 수의 연결을 사전 초기화하여 만든 버퍼 풀입니다.

ASP.NET의 기본 제공 개체에는 "요청", "응답", "세션", "서버", "응용 프로그램", "HttpContext", "Cache", "Trace", "Cookie" 및 "Server.MapPath": 1. 클라이언트가 발행한 HTTP 요청을 나타내는 요청 2. 응답: 웹 서버가 클라이언트에 반환한 HTTP 응답을 나타냅니다. 클라이언트 등
