微信公众平台自定义菜单及高级接口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ヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Vue.js と ASP.NET の組み合わせは、Web アプリケーションのパフォーマンスの最適化と拡張のためのヒントと提案を提供します。Web アプリケーションの急速な開発に伴い、パフォーマンスの最適化は開発者にとって不可欠かつ重要なタスクになっています。人気のフロントエンド フレームワークとして、Vue.js を ASP.NET と組み合わせることで、より優れたパフォーマンスの最適化と拡張を実現できます。この記事では、いくつかのヒントと提案を紹介し、いくつかのコード例を示します。 1. HTTP リクエストの削減 HTTP リクエストの数は、Web アプリケーションの読み込み速度に直接影響します。合格

翻訳者 | 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 は、フロントエンドとバックエンドの開発で広く使用されている 2 つのテクノロジであり、これらを組み合わせることで、エンタープライズ レベルのアプリケーションの開発と展開に多くの利点をもたらします。この記事では、コード例を通じて、Vue.js と ASP.NET を使用してエンタープライズ レベルのアプリケーションを開発およびデプロイする方法を紹介します。まず、インストールする必要があります

ASP.NETプログラムでMySQL接続プールを正しく構成して使用する方法は?インターネットの発展とデータ量の増加に伴い、データベースへのアクセスと接続の需要も増加しています。データベースのパフォーマンスと安定性を向上させるために、接続プーリングは不可欠なテクノロジーになっています。この記事では、データベースの効率と応答速度を向上させるために、ASP.NET プログラムで MySQL 接続プールを正しく構成および使用する方法を主に紹介します。 1. コネクションプーリングの概念と機能 コネクションプーリングはデータベースコネクションを再利用する技術であり、プログラムの冒頭で使用されます。

ASP.NET プログラムで MySQL 接続プールのトランザクション パフォーマンスを正しく使用し、最適化するにはどうすればよいですか? ASP.NET プログラムでは、データベース トランザクションは非常に重要な部分です。トランザクションにより、データベースの一貫性と整合性が確保されると同時に、パフォーマンスも向上します。 MySQL データベースを使用する場合、接続リソースを管理し、パフォーマンスを最適化するために接続プールを使用することが不可欠です。まず、MySQL 接続プールの概念を簡単に理解しましょう。接続プールは、接続グループのバッファ プールです。

ASP.NET の組み込みオブジェクトには、「リクエスト」、「レスポンス」、「セッション」、「サーバー」、「アプリケーション」、 「HttpContext」、「Cache」、「Trace」、「Cookie」、および「Server.MapPath」: 1. リクエスト、クライアントによって発行された HTTP リクエストを示します; 2. レスポンス: Web サーバーによって返された HTTP 応答を示します。クライアントなど
