源碼 ASP源碼 PHP源碼 NET源碼 JAVA源碼 FLASH源碼 其它源碼 整站源碼 常見問題

微信PHP快速開發框架

PHP源碼 HTML我幫您 2月前  次瀏覽

簡介:這是一個為快速開發微信應用而生的PHP框架。將微信的開發者功能根據文檔進行了封裝。為了快速開發的目的,開發者完全不需要要知道具體是如何實現的,只需要簡單的調用方法即可

開發語言:PHP

版本要求:原則PHP5.3以上

版本規避:若版本低于PHP5.3,則刪除本框架所有頁面開頭“namespace”的行、刪除本框架中所有的“use LaneWeChat”開頭的行,刪除“LaneWeChat\Core”,修改Autoloader::NAMESPACE_PREFIX='',修改curl.lib.php的\Exception為Exception即可。

命名空間:本框架的命名空間均為LaneWeChat開頭。

開源協議:Do What The Fuck You Want To Public License

更新日志:

2015-04-29 1.5.1   1、新增獲取微信服務器IP列表接口。如果需要安全性校驗,可以每次判斷請求的來源IP。   2、新增接收消息類型:小視頻   3、新增 模板消息-設置行業 和 模板消息-獲取模板ID   4、高級群發接口-根據分組群發 新增參數is_to_all,使用is_to_all為true且成功群發,會使得此次群發進入歷史消息列表。   5、新增 高級群發接口-預覽接口【訂閱號與服務號認證后均可用】 和 高級群發接口-查詢群發消息發送狀態【訂閱號與服務號認證后均可用】   6、新增 客服帳號管理-獲取所有客服賬號列表/添加客服賬號/修改客服賬號/刪除客服賬號/設置客服頭像   7、新增 自動回復-獲取自動回復 接口  2014-12-04 1.4.2   1、解決CURL的GET調用在php5.3以下時出現errno=60(CA證書無效)的BUG。(解決人:大志<[email protected]>)   2、文檔、注釋優化。(zhulin3141)   3、實戰演練 - 添加微信自定義菜單 文檔場景描述錯誤  2014-11-05:1.4版本   兼容性:  設置菜單Menu::setMenu($menuList)參數結構和返回值重寫,不向下兼容。  根目錄下新增lanewechat.php:  在項目用需要使用本SDK的地方,只需要include 'lanewechat/lanewechat.php',然后可以直接ClassName::method()調用即可。   安全性升級:  因為SSL爆出高危漏洞,公眾平臺在2014.11.30起,將關閉SSLv2,SSLv3版本的支持。根據官方實例,LaneWeChat的CURL類中也將使用curl_setopt($curl, CURLOPT_SSLVERSION, 1)   新增消息體簽名加解密驗證(EncodingAESKey),默認為空,為空時微信公眾號平臺會自動生成。也可以開發者自行手動指定。   新增語音消息識別   新增高級群發接口:  1 上傳圖文消息素材  2 根據分組進行群發,可發送圖文消息,文本消息,圖片消息,語音消息,視頻消息。  3 根據OpenID列表群發,,可發送圖文消息,文本消息,圖片消息,語音消息,視頻消息。  4 刪除群發  5 事件推送群發結果   新增模板消息接口:  1、主動推送給用戶模板消息的接口  2、被動接收微信服務器發送的關于主動推送模板消息的結果通知。   用戶管理接口:  1、新增設置備注名。開發者可以通過該接口對指定用戶設置備注名,該接口暫時開放給微信認證的服務號。   網頁授權接口:  注意:此access_token與基礎支持的access_token不同。  1、新增刷新access_token。由于access_token擁有較短的有效期,當access_token超時后,可以使用refresh_token進行刷新,refresh_token擁有較長的有效期(7天、30天、60天、90天),當refresh_token失效的后,需要用戶重新授權。  2、新增scope為snsapi_userinfo的模式下(會在網頁彈出一個授權框),拉取用戶信息的接口。  3、新增檢驗授權憑證(access_token)是否有效接口   新增多客服功能:  1、新增將消息轉發到多客服接口:在接收到用戶發送的消息時,調用ResponsePassive::forwardToCustomService($fromusername, $tousername),微信服務器在收到這條消息時,會把這次發送的消息轉到多客服系統。用戶被客服接入以后,客服關閉會話以前,處于會話過程中,用戶發送的消息均會被直接轉發至客服系統。  2、新增獲取客服聊天記錄接口:在需要時,開發者可以通過獲取客服聊天記錄接口,獲取多客服的會話記錄,包括客服和用戶會話的所有消息記錄和會話的創建、關閉等操作記錄。利用此接口可以開發如“消息記錄”、“工作監控”、“客服績效考核”等功能。   自定義菜單:  警告:設置菜單Menu::setMenu($menuList)參數結構和返回值重寫,自1.4版本起不向下兼容。  注意:所有新增的菜單類型,僅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用戶,舊版本微信用戶點擊后將沒有回應,開發者也不能正常接收到事件推送。  1、新增“scancode_push:掃碼推事件”類型菜單  用戶點擊按鈕后,微信客戶端將調起掃一掃工具,完成掃碼操作后顯示掃描結果(如果是URL,將進入URL),且會將掃碼的結果傳給開發者,開發者可以下發消息。  2、新增“scancode_waitmsg:掃碼推事件且彈出‘消息接收中’提示框”類型菜單  用戶點擊按鈕后,微信客戶端將調起掃一掃工具,完成掃碼操作后,將掃碼的結果傳給開發者,同時收起掃一掃工具,然后彈出“消息接收中”提示框,隨后可能會收到開發者下發的消息。  3、新增“pic_sysphoto:彈出系統拍照發圖”類型菜單  用戶點擊按鈕后,微信客戶端將調起系統相機,完成拍照操作后,會將拍攝的相片發送給開發者,并推送事件給開發者,同時收起系統相機,隨后可能會收到開發者下發的消息。  4、新增“pic_photo_or_album:彈出拍照或者相冊發圖”類型菜單  用戶點擊按鈕后,微信客戶端將彈出選擇器供用戶選擇“拍照”或者“從手機相冊選擇”。用戶選擇后即走其他兩種流程。  5、新增“pic_weixin:彈出微信相冊發圖器”類型菜單  用戶點擊按鈕后,微信客戶端將調起微信相冊,完成選擇操作后,將選擇的相片發送給開發者的服務器,并推送事件給開發者,同時收起相冊,隨后可能會收到開發者下發的消息。  6、新增“location_select:彈出地理位置選擇器”類型菜單  用戶點擊按鈕后,微信客戶端將調起地理位置選擇工具,完成選擇操作后,將選擇的地理位置發送給開發者的服務器,同時收起位置選擇工具,隨后可能會收到開發者下發的消息。  7、新增了以上6種菜單類型、view(點擊跳轉鏈接)的菜單類型的被動響應的支持。默認講點擊菜單的事件推送數據發送文本消息返回給用戶。開發者請自行修改。   新增語義理解接口  1、如輸入“查一下明天從北京到上海的南航機票”,類型為“flight,hotel”,則返回機票信息。   新增推廣支持:  1、新增獲取二維碼接口。二維碼分臨時二維碼和永久二維碼。第一步先獲取ticket,第二部是拿ticket獲取二維碼圖片。二維碼可以保存為文件,也可以展示預覽。  2、新增長鏈接轉短鏈接接口。   新增實例示范:  1、被動響應用戶 - 發送圖文消息  2、群發圖文消息  3、推送模板消息  4、添加自定義菜單  5、頁面展示二維碼   關于獲取用戶信息的新亮點 - unionId:  獲取用戶信息是根據openId獲取,同一個微信用戶對于不同的公眾號,是不同的openId。那問題就來了,如果你有多個公眾號,想要共享一份用戶數據,可是同一個用戶在不同的公眾號是不同的openId,我們無法判斷是否是同一個用戶,現在微信引入了UnionId的概念。  如果開發者有在多個公眾號,或在公眾號、移動應用之間統一用戶帳號的需求,需要前往微信開放平臺(open.weixin.qq.com)綁定公眾號后,才可利用UnionID機制來滿足上述需求。  在綁定了公眾號后,我們根據openId獲取用戶信息的時候,會新增一個字段“unionid”,只要是同一個用戶,在不同的公眾號用不同的openId獲取用戶信息的時候unionid是相同的。  此功能不需要新增/修改代碼,只需要在微信開放平臺綁定公眾號就可以了。仍舊使用獲取用戶信息接口UserManage::getUserInfo($openId);  2014-10-14:1.2.2版本。新增自動載入函數  2014-08-17:1.2版本。新增自定義菜單功能、新增多媒體上傳下載功能。  2014-08-07:1.0版本

文檔目錄:

1、常識普及。  2、如何安裝。  3、初出茅廬。  4、流程分析。  5、牛刀小試。  6、函數詳解。  7、實例示范。

常識普及:

一、微信公眾賬號分兩種,一種是訂閱號,一種是服務號。

1、訂閱號是被動響應用戶消息功能,并且每天推送一條消息。  2、服務號是300元/每年認證,被動響應用戶消息,主動給用戶發送消息,自定義菜單按鈕,網頁授權等功能,并且每月推送一條消息。  3、訂閱號適合消息類,新聞類應用,常常需要推送文章給用戶的;服務號適合自助查詢等。  4、訂閱號被認證后也享用自定義菜單等功能,仍舊是300元/每年

二、專業術語:

1、OpenId:微信服務器并不會告訴公眾號用戶的微信ID,即使是你的關注者也不行,為了解決開發中唯一標識的問題,微信使用了OpenId,所謂的OpenId,就是用戶和微信公眾號之間的一種唯一關系。一個用戶在一個公眾號面前,享用唯一的OpenId,不會和別人重復。換言之,同一個用戶在另一個公眾號面前,是擁有另一個OpenId的。再直白些就是$openId = md5('用戶微信ID+公眾號ID')  2、Access_Token:此項只有認證號的功能才會使用的到,Access_token是一個授權標識,即一個授權驗證碼,一個標識10分鐘內有效,10分鐘的有效期內公眾號的多個關注者可以使用同一個Access_Token。在使用主動給指定用戶發送消息、自定義菜單、用戶管理和用戶組管理等功能的時候,每次操作需要給微信服務器以參數的形式附帶Access_token。  3、Access_Token網頁版:本Access_Token網頁版授權時會使用到,和2中的Access_Toekn是不同的東西,不過使用我們的LaneWeChat微信快速開發框架是不需要了解這些的。Access_Token網頁版是說在用戶打開你的公眾號提供的網頁的時候,你的網頁需要獲取用戶的OpenId、昵稱、頭像等信息的時候授權用的。同時,本Access_Token網頁版有兩種用法,一種是打開網頁后彈出一個授權框,讓用戶點擊是否授權,界面像主流的開放平臺授權界面(比如QQ登陸某網站,支付寶賬號登陸某網站等);另一種是不需要彈出授權框仍舊可以獲取用戶信息,用法可以在實例中看到。

如何安裝:

1、本框架以代碼包的插件形式放在項目的目錄中即可。調用時只需要include 'lanewechat/lanewechat.php'即可。如:    include 'lanewechat/lanewechat.php';  //獲取自定義菜單列表  $menuList = Menu::getMenu();  2、配置項:打開根目錄下的config.php,修改定義常量WECHAT_APPID,WECHAT_APPSECRET,WECHAT_URL。其中前兩項可以在微信公眾號官網的開發者頁面中找到,而WECHAT_URL是你微信項目的URL,以http://開頭  3、本框架的外部訪問唯一入口為根目錄下的wechat.php,本框架的內部調用唯一入口為根目錄下的lanewechat.php。兩者的區別是wechat.php是通過http://www.abc.com/lanewechat/wechat.php訪問,是留給微信平臺調用的入口。而lanewechat.php是我們項目內部調用時需要include 'lanewechat/lanewechat.php';  4、首次使用時,請打開根目錄下的wechat.php,注釋掉26行,并且打開注釋第29行。  5、在微信開發者-填寫服務器配置頁面,填寫URL為http://www.lanecn.com/wechat.php,保證該URL可以通過80端口正常訪問(微信服務器目前只支持80端口),并且將Token填寫為config.php中的WECHAT_TOKEN常量的內容(可以修改)。  6、微信服務器在第4步驗證通過后,反向操作第4步,即注釋掉第27行,打開注釋第26行。至此,安裝配置完成。

初出茅廬:

1、給你的微信公眾號發送一條文本消息,比如hello world或者其他什么的。這個時候你應該會收到一條“收到文本”的服務器反饋的被動響應的消息。  2、這個時候你需要先為自己鼓掌。

流程分析:

1、我們給微信服務器發送了一條“hello world”的文本消息。  2、微信服務器收到我們的消息后,查找該公眾賬號所配置的服務器信息中的URL(如何安裝部分 - 第5步)。  3、微信服務器向第二步獲取的URL發送請求,參數是微信服務器自己拼接過的XML格式。  4、根目錄下的wechat.php,引入了我們的配置文件和所需的類后,進入了類WeChat的方法run()。該類位于core/wechat.lib.php。微信的XML數據此時已經被解析為數組,變量名為$request。  5、然后,我們進入了類WechatRequest的方法switchType(),根據不同的消息類型,給予不同的響應。比如用戶發送文本消息和關注事件,給出的返回應該是不同的。當然,你要給出同樣的提示也不能說是錯的。  6、在第5步中的方法中,是一個switch,根據消息類型(此時是文本類型,微信服務器給我的是text)選擇了一個處理文本消息的方法,類WechatRequest中的方法text()。該方法的功能是發送文本消息,文本內容是“收到文本”。  7、此時,我們return了一個數據返回給了上層調用,層層return,就到了我們根目錄的下的唯一入口文件wechat.php,此時我們返回的數據被echo出來了。  8、微信服務器拿到了輸出的數據,微信服務器進行分析和處理,將文本發送給了用戶的微信客戶端。我們就在手機上看到了微信輸出的“收到文本”。  9、流程結束,這就是發送“hello world”,然后返回給用戶“收到文本”。

牛刀小試:

1、打開core/wechatrequest.php文件,講方法text()中的變量修改為$content = '收到文本消息'.$request['content'];  2、保存并且上傳到你的服務器。  3、在微信中打開你的公眾號,輸入文本消息“hello world”。見證奇跡的時刻到了。這個時候你的手機微信客戶端中現實的是“收到文本消息hello world”。

函數詳解:

一、被動給用戶發送消息。   1、類簡介:用戶輸入文本、圖片、語音、音樂、視頻等消息,以及關注、取消關注,上報地理位置等事件后,服務器被動給出應答。   2、使用命名空間:use LaneWeChat\Core\ResponsePassive;   3、參數:  $fromusername = "誰發給你的?(用戶的openId)"  在變量$request['fromusername']中   $tousername = "你的公眾號Id";                 在變量$require['tousername']中   $mediaId = "通過上傳多媒體文件,得到的id。";   4、發送文本  ResponsePassive::text($fromusername, $tousername, '文本消息內容');   5、發送圖片  ResponsePassive::image($fromusername, $tousername, $mediaId);   6、發送語音  ResponsePassive::voice($fromusername, $tousername, $mediaId);   7、發送視頻  ResponsePassive::video($fromusername, $tousername, $mediaId, '視頻標題', '視頻描述');   8、發送音樂  ResponsePassive::music($fromusername, $tousername, '音樂標題', '音樂描述', '音樂鏈接', '高質量音樂鏈接,WIFI環境優先使用該鏈接播放音樂', '縮略圖的媒體id,通過上傳多媒體文件,得到的id');   9、發送圖文  1)創建圖文消息內容  $tuwenList = array();  $tuwenList[] = array('title'=>'標題1', 'description'=>'描述1', 'pic_url'=>'圖片URL1', 'url'=>'點擊跳轉URL1');  $tuwenList[] = array('title'=>'標題2', 'description'=>'描述2', 'pic_url'=>'圖片URL2', 'url'=>'點擊跳轉URL2');  2)構建圖文消息格式  $itemList = array();  foreach($tuwenList as $tuwen){  $itemList[] = ResponsePassive::newsItem($tuwen['title'], $tuwen['description'], $tuwen['pic_url'], $tuwen['url']);  }  3)發送圖文消息  ResponsePassive::news($fromusername, $tousername, $itemList);  二、AccessToken授權。   1、類簡介:除了被動相應用戶之外,在主動給用戶發送消息,用戶組管理等高級操作,是需要AccessToken授權的,我們調用一個URL給微信服務器,微信服務器會返回給我們一個散列字符串,在高級操作的時候需要將此串以參數的形式發送。散列字符串10分鐘內有效,過期需要重新獲取,獲取新的后之前的全部失效。   2、使用命名空間:use LaneWeChat\Core\AccessToken;   3、參數:無   4、獲取AccessToken  AccessToken::getAccessToken(); 該調用會返回微信服務器散列后的AccessToken字符串。   5、溫馨提示   如果暫且用不到此功能,請跳過。最后來看這里!   6、功能補充  有一個地方需要用戶自行完善,根據介紹我們已經知道了,獲取AccessToken只有10分鐘的有效期,過期需要重新獲取。因此,我們需要存儲這個AccessToken。  由于大家的存儲方式各不相同,有Mysql的,有Redis的,有MongoDB的,還有Session的。所以這里我講存儲和讀取給留空了。  流程:AccessToken類,public方法只有一個,就是getAccessToken()。這個方法會調用一個私有方法_checkAccessToken()來檢測AccessToken是否存在并且是否過期,如果不存在或過期,則調用私有方法_getAccessToken()  完善步驟:  1)、打開core/accesstoken.lib.php文件。  2)、私有方法_getAccessToken()的倒數第二行(return是倒數第一行),在這個地方,請講變量$accessTokenJson存儲起來,變量$accessTokenJson是一個字符串。  3)、私有方法_checkAccessToken()的第一行就是讀取操作(有一行偽代碼$accessToken = YourDatabase::get('access_token');),將剛才第二步的存儲的東西給讀出來,并且賦值給$accessToken。  4)、在第二步的存儲,第三部的讀取的時候,請不要修改數據,僅僅完善一個讀和存的操作就可以了。  三、主動給用戶發送消息。   1、類簡介:用戶輸入文本、圖片、語音、音樂、視頻等消息,以及關注、取消關注,上報地理位置等事件后,服務器被動給出應答。   2、使用命名空間:use LaneWeChat\Core\ResponsePassive;   3、參數  $tousername = "你的公眾號Id";  在變量$require['tousername']中  $mediaId = "通過上傳多媒體文件,得到的id。";   4、發送文本內容  ResponseInitiative::text($tousername, '文本消息內容');   5、發送圖片  ResponseInitiative::image($tousername, $mediaId);   6、發送語音  ResponseInitiative::voice($tousername, $mediaId);   7、發送視頻  ResponseInitiative::video($tousername, $mediaId, '視頻描述', '視頻標題');   8、發送地理位置  ResponseInitiative::music($tousername, '音樂標題', '音樂描述', '音樂鏈接', '高質量音樂鏈接,WIFI環境優先使用該鏈接播放音樂', '縮略圖的媒體id,通過上傳多媒體文件,得到的id');   9、發送圖文消息  1)創建圖文消息內容  $tuwenList = array();  $tuwenList[] = array('title'=>'標題1', 'description'=>'描述1', 'pic_url'=>'圖片URL1', 'url'=>'點擊跳轉URL1');  $tuwenList[] = array('title'=>'標題2', 'description'=>'描述2', 'pic_url'=>'圖片URL2', 'url'=>'點擊跳轉URL2');  2)構建圖文消息格式  $itemList = array();  foreach($tuwenList as $tuwen){  $itemList[] = ResponseInitiative::newsItem($tuwen['title'], $tuwen['description'], $tuwen['pic_url'], $tuwen['url']);  }  3)發送圖文消息  ResponseInitiative::news($tousername, $itemList);  四、用戶及用戶組管理。   1、類簡介:獲取粉絲列表,創建\修改用戶組,講用戶添加\移除到用戶組。   2、使用命名空間:use LaneWeChat\Core\UserManage;   3、參數  $openId = '用戶和微信公眾號的唯一ID';    在變量$require['openid']中  $mediaId = "通過上傳多媒體文件,得到的id。";  $groupId = '分組ID';    在添加新分組、獲取分組列表的時候可以得到   4、分組管理 - 創建分組  UserManage::createGroup('分組名');   5、分組管理 - 獲取分組列表  UserManage::getGroupList();   6、分組管理 - 查詢用戶所在分組  UserManage::getGroupByOpenId($openId);   7、分組管理 - 修改分組名  UserManage::editGroupName($groupId, '新的組名');   8、分組管理 - 移動用戶分組  UserManage::editUserGroup($openId, $groupId);   9、用戶管理 - 獲取用戶基本信息  UserManage::getUserInfo($openId);   10、用戶管理 - 獲取關注者列表  UserManage::getFansList($next_openId='');   11、用戶管理 - 獲取網絡狀態  UserManage::getNetworkState();   12、設置備注名 開發者可以通過該接口對指定用戶設置備注名,該接口暫時開放給微信認證的服務號。  UserManage::setRemark($openId, $remark);  $openId:用戶的openId  $remark:新的昵稱   13、關于獲取用戶信息的新亮點 - unionId:  獲取用戶信息是根據openId獲取,同一個微信用戶對于不同的公眾號,是不同的openId。那問題就來了,如果你有多個公眾號,想要共享一份用戶數據,可是同一個用戶在不同的公眾號是不同的openId,我們無法判斷是否是同一個用戶,現在微信引入了UnionId的概念。  如果開發者有在多個公眾號,或在公眾號、移動應用之間統一用戶帳號的需求,需要前往微信開放平臺(open.weixin.qq.com)綁定公眾號后,才可利用UnionID機制來滿足上述需求。  在綁定了公眾號后,我們根據openId獲取用戶信息的時候,會新增一個字段“unionid”,只要是同一個用戶,在不同的公眾號用不同的openId獲取用戶信息的時候unionid是相同的。  此功能不需要新增/修改代碼,只需要在微信開放平臺綁定公眾號就可以了。仍舊使用獲取用戶信息接口UserManage::getUserInfo($openId);  五、網頁授權。   1、類簡介:在網頁中獲取來訪用戶的數據。   2、使用命名空間:use LaneWeChat\Core\WeChatOAuth;   3、參數  $openId = '用戶和微信公眾號的唯一ID';           在變量$require['openid']中  $mediaId = "通過上傳多媒體文件,得到的id。";  $groupId = '分組ID';                         在添加新分組、獲取分組列表的時候可以得到   4、獲取CODE。  參數:$scope:snsapi_base不彈出授權頁面,只能獲得OpenId;snsapi_userinfo彈出授權頁面,可以獲得所有信息  參數:$redirect_uri:將會跳轉到redirect_uri/?code=CODE&state=STATE 通過GET方式獲取code和state。獲取CODE時,發送請求和參數給微信服務器,微信服務器會處理后將跳轉到本參數指定的URL頁面  WeChatOAuth::getCode($redirect_uri, $state=1, $scope='snsapi_base');   5、通過code換取網頁授權access_token(access_token網頁版)。首先請注意,這里通過code換取的網頁授權access_token,與基礎支持中的access_token不同。公眾號可通過下述接口來獲取網頁授權access_token。如果網頁授權的作用域為snsapi_base,則本步驟中獲取到網頁授權access_token的同時,也獲取到了openid,snsapi_base式的網頁授權流程即到此為止。  參數:$code getCode()獲取的code參數。$code = $_GET['code'];  WeChatOAuth::getAccessTokenAndOpenId($code);   6、刷新access_token(如果需要)  由于access_token擁有較短的有效期,當access_token超時后,可以使用refresh_token進行刷新,refresh_token擁有較長的有效期(7天、30天、60天、90天),當refresh_token失效的后,需要用戶重新授權。  WeChatOAuth::refreshToken($refreshToken);  $refreshToken:通過本類的第二個方法getAccessTokenAndOpenId可以獲得一個數組,數組中有一個字段是refresh_token,就是這里的參數   7、拉取用戶信息(需scope為 snsapi_userinfo)  如果網頁授權作用域為snsapi_userinfo,則此時開發者可以通過access_token和openid拉取用戶信息了。  WeChatOAuth::getUserInfo($accessToken, $openId, $lang='zh_CN');  $accessToken:網頁授權接口調用憑證。通過本類的第二個方法getAccessTokenAndOpenId可以獲得一個數組,數組中有一個字段是access_token,就是這里的參數。注意:此access_token與基礎支持的access_token不同。  $openId:用戶的唯一標識  $lang:返回國家地區語言版本,zh_CN 簡體,zh_TW 繁體,en 英語   8、檢驗授權憑證(access_token)是否有效  WeChatOAuth::checkAccessToken($accessToken, $openId){  $accessToken:網頁授權接口調用憑證。通過本類的第二個方法getAccessTokenAndOpenId可以獲得一個數組,數組中有一個字段是access_token,就是這里的參數。注意:此access_token與基礎支持的access_token不同。  六、多媒體上傳下載   1、類簡介:在網頁中獲取來訪用戶的數據。上傳的多媒體文件有格式和大小限制,如下:  * 圖片(image): 1M,支持JPG格式  * 語音(voice):2M,播放長度不超過60s,支持AMR\MP3格式  * 視頻(video):10MB,支持MP4格式  * 縮略圖(thumb):64KB,支持JPG格式  * 媒體文件在后臺保存時間為3天,即3天后media_id失效   2、使用命名空間:use LaneWeChat\Core\Media;   3、參數  $filename 上傳的文件的絕對路徑  $type 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb)  $mediaId = "通過上傳多媒體文件,得到的id。";  $groupId = '分組ID';                         在添加新分組、獲取分組列表的時候可以得到   4、上傳:上傳后,微信服務器會返回一個mediaId。  Media::upload($filename, $type);   5、下載:根據mediaId下載一個多媒體文件。  Media::download($mediaId);  七、自定義菜單   1、類簡介:添加自定義菜單。最多可以有三個一級菜單,每個一級菜單最多可以有五個菜單。一級菜單最多4個漢字,二級菜單最多7個漢字。創建自定義菜單后,由于微信客戶端緩存,需要24小時微信客戶端才會展現出來。建議測試時可以嘗試取消關注公眾賬號后再次關注,則可以看到創建后的效果。   警告:設置菜單Menu::setMenu($menuList)參數結構和返回值重寫,自1.4版本起不向下兼容。   注意:所有新增的菜單類型(除了click類型和view類型),僅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用戶,舊版本微信用戶點擊后將沒有回應,開發者也不能正常接收到事件推送。   摘自微信官方網站:目前自定義菜單接口可實現兩種類型按鈕,如下:   click:  用戶點擊click類型按鈕后,微信服務器會通過消息接口推送消息類型為event的結構給開發者,并且帶上按鈕中開發者填寫的key值,開發者可以通過自定義的key值與用戶進行交互;   view:  用戶點擊view類型按鈕后,微信客戶端將會打開開發者在按鈕中填寫的url值(即網頁鏈接),達到打開網頁的目的,建議與網頁授權獲取用戶基本信息接口結合,獲得用戶的登入個人信息。   總結一下哦,就是微信的菜單分兩種,一種是view型,就是你設置一個網址,點了這個菜單之后就跳到你設置的網址去了。另一種就是click型,你設置一個key,然后用戶點擊的時候會通過本框架唯一入口wechat.php發送一個消息類型為event的請求,在wechatrequest.lib.php文件下的eventClick方法中可以使用。   1、新增“scancode_push:掃碼推事件”類型菜單  用戶點擊按鈕后,微信客戶端將調起掃一掃工具,完成掃碼操作后顯示掃描結果(如果是URL,將進入URL),且會將掃碼的結果傳給開發者,開發者可以下發消息。   2、新增“scancode_waitmsg:掃碼推事件且彈出‘消息接收中’提示框”類型菜單  用戶點擊按鈕后,微信客戶端將調起掃一掃工具,完成掃碼操作后,將掃碼的結果傳給開發者,同時收起掃一掃工具,然后彈出“消息接收中”提示框,隨后可能會收到開發者下發的消息。   3、新增“pic_sysphoto:彈出系統拍照發圖”類型菜單  用戶點擊按鈕后,微信客戶端將調起系統相機,完成拍照操作后,會將拍攝的相片發送給開發者,并推送事件給開發者,同時收起系統相機,隨后可能會收到開發者下發的消息。   4、新增“pic_photo_or_album:彈出拍照或者相冊發圖”類型菜單  用戶點擊按鈕后,微信客戶端將彈出選擇器供用戶選擇“拍照”或者“從手機相冊選擇”。用戶選擇后即走其他兩種流程。   5、新增“pic_weixin:彈出微信相冊發圖器”類型菜單  用戶點擊按鈕后,微信客戶端將調起微信相冊,完成選擇操作后,將選擇的相片發送給開發者的服務器,并推送事件給開發者,同時收起相冊,隨后可能會收到開發者下發的消息。   6、新增“location_select:彈出地理位置選擇器”類型菜單  用戶點擊按鈕后,微信客戶端將調起地理位置選擇工具,完成選擇操作后,將選擇的地理位置發送給開發者的服務器,同時收起位置選擇工具,隨后可能會收到開發者下發的消息。   7、新增了以上6種菜單類型、view(點擊跳轉鏈接)的菜單類型的被動響應的支持。默認講點擊菜單的事件推送數據發送文本消息返回給用戶。開發者請自行修改。   2、使用命名空間:use LaneWeChat\Core\Menu;   3、設置菜單:是所有的菜單數據全部發送一次,可不是每新增一個只發一個菜單。  Menu::setMenu($menuList);  $menuLis 是菜單列表,結構如下:  $menuList = array(  array('id'=>'1', 'pid'=>'0', 'name'=>'頂級分類一', 'type'=>'', 'code'=>''),  array('id'=>'2', 'pid'=>'1', 'name'=>'分類一子分類一', 'type'=>'click', 'code'=>'lane_wechat_menu_1_1'),  array('id'=>'3', 'pid'=>'1', 'name'=>'分類一子分類二', 'type'=>'1', 'code'=>'http://www.lanecn.com'),  array('id'=>'4', 'pid'=>'0', 'name'=>'頂級分類二', 'type'=>'1', 'code'=>'http://www.php.net/'),  array('id'=>'5', 'pid'=>'0', 'name'=>'頂級分類三', 'type'=>'2', 'code'=>'lane_wechat_menu_3'),  );  'id'是您的系統中對分類的唯一編號;  'pid'是該分類的上級分類,頂級分類則填寫0;  'name'是分類名稱;  'type'是菜單類型,如果該分類下有子分類請務必留空;  'type'的值從以下類型中選擇:click、view、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album、pic_weixin、location_select。  'code'是view類型的URL或者其他類型的自定義key,如果該分類下有子分類請務必留空。   4、獲取微信菜單:獲取到的是已經設置過的菜單列表,格式為Json,是微信服務器返回的原始數據。  Menu::getMenu();   5、刪除微信菜單:將會刪除設置過的所有菜單(一鍵清空)。  Menu::delMenu();  八、高級群發接口   1、類簡介:根據分組、openId列表進行群發(推送)。圖文消息需要先將圖文消息當作一個素材上傳,然后再群發,其他類型的消息直接群發即可。   注意:推送后用戶到底是否成功接受,微信會向公眾號推送一個消息。消息類型為事件消息,可以在lanewechat/wechatrequest.lib.php文件中的方法eventMassSendJobFinish(&$request)中收到這條消息。   2、使用命名空間:use LaneWeChat\Core\AdvancedBroadcast;   3、上傳圖文消息。創建一個圖文消息,保存到微信服務器,可以得到一個id代表這個圖文消息,發送的時候根據這個id發送就可以了。  Menu::uploadNews($articles);  $articles 是圖文消息列表,結構如下:  $articles = array(  array('thumb_media_id'=>'多媒體ID,由多媒體上傳接口獲得' , 'author'=>'作者', 'title'=>'標題', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'是否設置為封面(0或者1)'),  array('thumb_media_id'=>'多媒體ID,由多媒體上傳接口獲得' , 'author'=>'作者', 'title'=>'標題', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'是否設置為封面(0或者1)'),  );  'thumb_media_id'多媒體ID,由多媒體上傳接口獲得:Media::upload($filename, $type);  'author'作者  'title'標題  'content_source_url'一個URL,點擊“閱讀全文”跳轉的地址  'digest'摘要  'show_cover_pic'0或1,是否設置為封面。  下面的方法,圖文消息的參數mediaId是由上面這個方法(3)Menu::uploadNews($articles);獲得的,其他的mediaId是多媒體上傳獲得的Media::upload($filename, $type);  根據分組群發的所有接口最后一個參數,$isToAll,默認未false。使用true且成功群發,會使得此次群發進入歷史消息列表。   4、根據分組進行群發 - 發送圖文消息:  AdvancedBroadcast::sentNewsByGroup($groupId, $mediaId, $isToAll=false);   5、根據分組進行群發 - 發送文本消息  AdvancedBroadcast::sentTextByGroup($groupId, $content, $isToAll=false);   6、根據分組進行群發 - 發送語音消息  AdvancedBroadcast::sentVoiceByGroup($groupId, $mediaId, $isToAll=false);   7、根據分組進行群發 - 發送圖片消息  AdvancedBroadcast::sentImageByGroup($groupId, $mediaId, $isToAll=false);   8、根據分組進行群發 - 發送視頻消息  AdvancedBroadcast::sentVideoByGroup($mediaId, $title, $description, $groupId, $isToAll=false);   9、根據OpenID列表群發 - 發送圖文消息  AdvancedBroadcast::sentNewsByOpenId($toUserList, $mediaId);   10、根據OpenID列表群發 - 發送文本消息  AdvancedBroadcast::sentTextByOpenId($toUserList, $content);   11、根據OpenID列表群發 - 發送語音消息  AdvancedBroadcast::sentVoiceByOpenId($toUserList, $mediaId);   12、根據OpenID列表群發 - 發送圖片消息  AdvancedBroadcast::sentImageByOpenId($toUserList, $mediaId);   13、根據OpenID列表群發 - 發送視頻消息  AdvancedBroadcast::sentVideoByOpenId($toUserList, $mediaId, $title, $description);   14、刪除群發  請注意,只有已經發送成功的消息才能刪除刪除消息只是將消息的圖文詳情頁失效,已經收到的用戶,還是能在其本地看到消息卡片。 另外,刪除群發消息只能刪除圖文消息和視頻消息,其他類型的消息一經發送,無法刪除。  AdvancedBroadcast::delete($msgId);  $msgId:以上的群發接口成功時都會返回msg_id這個字段   15、預覽圖文消息  AdvancedBroadcast::previewNewsByGroup($openId, $mediaId);   16、預覽文本消息  AdvancedBroadcast::previewTextByGroup($openId, $content);   17、預覽語音消息  AdvancedBroadcast::previewVoiceByGroup($openId, $mediaId);   18、預覽圖片消息  AdvancedBroadcast::previewImageByGroup($openId, $mediaId);   19、預覽視頻消息  AdvancedBroadcast::previewVideoByGroup($mediaId, $title, $description, $openId);   20、查詢群發消息發送狀態【訂閱號與服務號認證后均可用】  AdvancedBroadcast::getStatus($openId, $mediaId);  九、多客服接口   1、類簡介:客服功能接口。   2、使用命名空間:use LaneWeChat\Core\CustomService;   3、獲取客服聊天記錄接口,有分頁,一次獲取一頁,一頁最多1000條。不能跨日。  在需要時,開發者可以通過獲取客服聊天記錄接口,獲取多客服的會話記錄,包括客服和用戶會話的所有消息記錄和會話的創建、關閉等操作記錄。利用此接口可以開發如“消息記錄”、“工作監控”、“客服績效考核”等功能。  CustomService::getRecord($startTime, $endTime, $pageIndex=1, $pageSize=1000, $openId='')  'startTime':查詢開始時間,UNIX時間戳  'startTime':查詢結束時間,UNIX時間戳,每次查詢不能跨日查詢   4、將用戶發送的消息轉發到客服:  調用ResponsePassive::forwardToCustomService($fromusername, $tousername)。  如用戶在微信給公眾號發送一條文本消息“iphone 6 多少錢?”,我們就可以在lanewechat/wechatrequest.lib.php文件中的方法text(&$request)中收到這條消息(如果不了解為什么會在這里收到文本消息,請重頭再看文檔)。  然后在text(&$request)方法中,我們可以調用ResponsePassive::forwardToCustomService($request['fromusername'], $request['tousername'])。那么剛才用戶發的“iphone 6 多少錢?”就會被轉發到客服系統,在微信的客服客戶端中就可以收到了。   5、添加客服帳號  必須先在公眾平臺官網為公眾號設置微信號后才能使用該能力。  開發者可以通過本接口為公眾號添加客服賬號,每個公眾號最多添加10個客服賬號。  CustomService::addAccount($kfAccount, $nickname, $password)  $kfAccount String 完整客服賬號,格式為:賬號前綴@公眾號微信號  $nickname String 昵稱  $password String 密碼   6、修改客服帳號  必須先在公眾平臺官網為公眾號設置微信號后才能使用該能力。  CustomService::editAccount($kfAccount, $nickname, $password)  $kfAccount String 完整客服賬號,格式為:賬號前綴@公眾號微信號  $nickname String 昵稱  $password String 密碼   7、刪除客服帳號  必須先在公眾平臺官網為公眾號設置微信號后才能使用該能力。  CustomService::delAccount($kfAccount, $nickname, $password)  $kfAccount String 完整客服賬號,格式為:賬號前綴@公眾號微信號  $nickname String 昵稱  $password String 密碼   8、獲取所有客服賬號  必須先在公眾平臺官網為公眾號設置微信號后才能使用該能力。  CustomService::getAccountList($kfAccount, $nickname, $password)  $kfAccount String 完整客服賬號,格式為:賬號前綴@公眾號微信號  $nickname String 昵稱  $password String 密碼   9、設置客服帳號的頭像  必須先在公眾平臺官網為公眾號設置微信號后才能使用該能力。  CustomService::setAccountImage($kfAccount, $imagePath)  $kfAccount String 完整客服賬號,格式為:賬號前綴@公眾號微信號  $imagePath String 待上傳的頭像文件路徑  十、智能接口   1、類簡介:智能接口。   2、使用命名空間:use LaneWeChat\Core\IntelligentInterface;   3、語義理解:比如輸入文本串,如“查一下明天從北京到上海的南航機票”就可以收到關于這個問題的答案。  單類別意圖比較明確,識別的覆蓋率比較大,所以如果只要使用特定某個類別,建議將category只設置為該類別。  IntelligentInterface::semanticSemproxy($query, $category, $openId, $latitude='', $longitude='', $region='', $city=''){  $query 輸入文本串,如“查一下明天從北京到上海的南航機票"  $category String 需要使用的服務類型,如“flight,hotel”,多個用“,”隔開,不能為空。詳見《接口協議文檔》  $latitude Float 緯度坐標,與經度同時傳入;與城市二選一傳入。詳見《接口協議文檔》  $longitude Float 經度坐標,與緯度同時傳入;與城市二選一傳入。詳見《接口協議文檔》  $region String 區域名稱,在城市存在的情況下可??;與經緯度二選一傳入。詳見《接口協議文檔》  $city 城市名稱,如“北京”,與經緯度二選一傳入  $openId  《接口協議文檔》:http://mp.weixin.qq.com/wiki/images/1/1f/微信語義理解協議文檔.zip  十一、推廣支持   1、類簡介:推廣支持。   2、使用命名空間:use LaneWeChat\Core\Popularize;   3、生成帶參數的二維碼 - 第一步 創建二維碼ticket  獲取帶參數的二維碼的過程包括兩步,首先創建二維碼ticket,然后憑借ticket到指定URL換取二維碼。  目前有2種類型的二維碼,分別是臨時二維碼和永久二維碼,  前者有過期時間,最大為1800秒,但能夠生成較多數量,后者無過期時間,數量較少(目前參數只支持1--100000)。  兩種二維碼分別適用于帳號綁定、用戶來源統計等場景。  Popularize::createTicket($type, $expireSeconds, $sceneId);  $type Int 臨時二維碼類型為1,永久二維碼類型為2  $expireSeconds Int 過期時間,只在類型為臨時二維碼時有效。最大為1800,單位秒  $sceneId Int 場景值ID,臨時二維碼時為32位非0整型,永久二維碼時最大值為100000(目前參數只支持1--100000)   4、生成帶參數的二維碼 - 第二步 通過ticket換取二維碼  public static function getQrcode($ticket, $filename='');  $ticket Popularize::createTicket()獲得的  $filename String 文件路徑,如果不為空,則會創建一個圖片文件,二維碼文件為jpg格式,保存到指定的路徑  返回值:如果傳遞了第二個參數filename則會在filename指定的路徑生成一個二維碼的圖片。如果第二個參數filename為空,則直接echo本函數的返回值,并在調用頁面添加header('Content-type: image/jpg');,將會展示出一個二維碼的圖片。   5、將一條長鏈接轉成短鏈接。   主要使用場景:開發者用于生成二維碼的原鏈接(商品、支付二維碼等)太長導致掃碼速度和成功率下降,將原長鏈接通過此接口轉成短鏈接再生成二維碼將大大提升掃碼速度和成功率。  Popularize::long2short($longUrl);  $longUrl String 需要轉換的長鏈接,支持http://、https://、weixin://wxpay 格式的url  十二、模板消息接口   1、類簡介:模板消息僅用于公眾號向用戶發送重要的服務通知,只能用于符合其要求的服務場景中,如信用卡刷卡通知,商品購買成功通知等。不支持廣告等營銷類消息以及其它所有可能對用戶造成騷擾的消息。   關于使用規則,請注意:  1、所有服務號都可以在功能->添加功能插件處看到申請模板消息功能的入口,但只有認證后的服務號才可以申請模板消息的使用權限并獲得該權限;  2、需要選擇公眾賬號服務所處的2個行業,每月可更改1次所選行業;  3、在所選擇行業的模板庫中選用已有的模板進行調用;  4、每個賬號可以同時使用15個模板。  5、當前每個模板的日調用上限為10000次。   關于接口文檔,請注意:  1、模板消息調用時主要需要模板ID和模板中各參數的賦值內容;  2、模板中參數內容必須以".DATA"結尾,否則視為保留字;  3、模板保留符號"{{ }}"。   2、使用命名空間:use LaneWeChat\Core\TemplateMessage;   3、向用戶推送模板消息  TemplateMessage::sendTemplateMessage($data, $touser, $templateId, $url, $topcolor='#FF0000'){  $data = array(  'first'=>array('value'=>'您好,您已成功消費。', 'color'=>'#0A0A0A')  'keynote1'=>array('value'=>'巧克力', 'color'=>'#CCCCCC')  'keynote2'=>array('value'=>'39.8元', 'color'=>'#CCCCCC')  'keynote3'=>array('value'=>'2014年9月16日', 'color'=>'#CCCCCC')  'keynote3'=>array('value'=>'歡迎再次購買。', 'color'=>'#173177')  );  $touser 接收方的OpenId。  $templateId 模板Id。在公眾平臺線上模板庫中選用模板獲得ID  $url URL  $topcolor 頂部顏色,可以為空。默認是紅色   注意:推送后用戶到底是否成功接受,微信會向公眾號推送一個消息。消息類型為事件消息,可以在lanewechat/wechatrequest.lib.php文件中的方法eventTemplateSendJobFinish(&$request)中收到這條消息。   4、設置行業  TemplateMessage::setIndustry($industryId1, $industryId2){  $industryId1 公眾號模板消息所屬行業編號 請打開連接查看行業編號 http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html#.E8.AE.BE.E7.BD.AE.E6.89.80.E5.B1.9E.E8.A1.8C.E4.B8.9A  $industryId2 公眾號模板消息所屬行業編號。在公眾平臺線上模板庫中選用模板獲得ID   5、獲得模板ID  TemplateMessage::getTemplateId($templateIdShort)  $templateIdShort 模板庫中模板的編號,有“TM**”和“OPENTMTM**”等形式  十三、安全性   1、類簡介:安全性相關接口   2、使用命名空間:use LaneWeChat\Core\Auth;   3、獲取微信服務器IP列表,用于驗證每次的請求來源是否是微信服務器。  Auth::getWeChatIPList();  十四、自動回復   1、類簡介:自動回復   2、使用命名空間:use LaneWeChat\Core\AutoReply;   3、獲取自動回復規則  AutoReply::getRole($industryId1, $industryId2);  返回結果與字段說明請查看http://mp.weixin.qq.com/wiki/7/7b5789bb1262fb866d01b4b40b0efecb.html

實例示范:

一、通過網頁授權獲得用戶信息   場景:用戶點擊了我的自定義菜單,或者我發送的文本消息中包含一個URL,用戶打開了我的微信公眾號的網頁版,我需要獲取用戶的信息。   代碼:     use LaneWeChat\Core\WeChatOAuth;  use LaneWeChat\Core\UserManage;   //第一步,獲取CODE  WeChatOAuth::getCode('http://www.lanecn.com/index.php', 1, 'snsapi_base');  //此時頁面跳轉到了http://www.lanecn.com/index.php,code和state在GET參數中。  $code = $_GET['code'];  //第二步,獲取access_token網頁版  $openId = WeChatOAuth::getAccessTokenAndOpenId($code);  //第三步,獲取用戶信息  $userInfo = UserManage::getUserInfo($openId['openid']);  ?>  二、被動響應用戶 - 發送圖文消息   場景描述:用戶給我們的公眾號發送了一條消息,我們的公眾號被動響應,給用戶回復一條圖文消息。   場景舉例:用戶給我們的公眾號發送了“周末聚會”,我們的公眾號給用戶回復了一條圖文消息,有十條,每一條都是一個標題和圖片,點擊可以連接到一個地址。   代碼:   //圖文列表逐條放入數組  $tuwenList = array();  $tuwenList[] = array(  'title' => '標題:聚會地點一故宮',  'description' => '描述:還有人去故宮聚會啊',  'pic_url' => 'http://www.gugong.com/logo.jpg',  'url' => 'http://www.lanecn.com/',  );  $tuwenList[] = array(  'title' => '標題:聚會地點一八達嶺',  'description' => '描述:八達嶺是聚會的嗎?是去看人擠人的!',  'pic_url' => 'http://www.badaling.com/logo.jpg',  'url' => 'http://www.lanecn.com/',  );  $item = array();  //構建圖文列表  foreach($tuwenList as $tuwen){  $item[] = ResponsePassive::newsItem($tuwen['title'], $tuwen['description'], $tuwen['pic_url'], $tuwen['url']);  }  //發送圖文列表  ResponsePassive::news($request['fromusername'], $request['tousername'], $item);  三、群發圖文消息   場景描述:用戶給我們的公眾號發送了一條消息,我們的公眾號被動響應,給用戶回復一條圖文消息。   場景舉例:用戶給我們的公眾號發送了“周末聚會”,我們的公眾號給用戶回復了一條圖文消息,有十條,每一條都是一個標題和圖片,點擊可以連接到一個地址。   代碼:   $fansList = \LaneWeChat\Core\UserManage::getFansList();  //上傳圖片  $menuId = \LaneWeChat\Core\Media::upload('/var/www/baidu_jgylogo3.jpg', 'image');  if(empty($menuId['media_id'])){  die('error');  }  //上傳圖文消息  $list = array();  $list[] = array('thumb_media_id'=>$menuId['media_id'] , 'author'=>'作者', 'title'=>'標題', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'1');  $list[] = array('thumb_media_id'=>$menuId['media_id'] , 'author'=>'作者', 'title'=>'標題', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'0');  $list[] = array('thumb_media_id'=>$menuId['media_id'] , 'author'=>'作者', 'title'=>'標題', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'0');  $mediaId = \LaneWeChat\Core\AdvancedBroadcast::uploadNews($list);  //給粉絲列表的用戶群發圖文消息  $result = \LaneWeChat\Core\AdvancedBroadcast::sentNewsByOpenId($fansList['data']['openid'], $mediaId);  四、推送模板消息   場景描述:公眾號推送的模板消息,比如領取紅包、滴滴打車紅包領取、大眾點評微信支付等   場景舉例:我們在實體店的一家服裝店買了新衣服,而我們又是會員,他們檢測到會員的手機號消費了,有新積分增加,而這個手機號又關注了這家服裝店的微信公眾號,根據手機號可以在服裝店自己的數據庫中查到微信粉絲openId,這個時候就會給這個用戶發送一個模板消息。   代碼:     include 'lanewechat.php';   $data = array(  'first'=>array('value'=>'您好,您已成功消費。', 'color'=>'#0A0A0A')  'keynote1'=>array('value'=>'巧克力', 'color'=>'#CCCCCC')  'keynote2'=>array('value'=>'39.8元', 'color'=>'#CCCCCC')  'keynote3'=>array('value'=>'2014年9月16日', 'color'=>'#CCCCCC')  'keynote3'=>array('value'=>'歡迎再次購買。', 'color'=>'#173177')  );   //$touser 接收方的OpenId。  //$templateId 模板Id。在公眾平臺線上模板庫中選用模板獲得ID  //$url URL 點擊查看的時候跳轉到URL。  //$topcolor 頂部顏色,可以為空。默認是紅色  \LaneWeChat\Core\TemplateMessage::sendTemplateMessage($data, $touser, $templateId, $url, $topcolor='#FF0000');  五、添加自定義菜單   場景描述:微信公眾號底部的導航欄按鈕   場景舉例:自定義菜單可以更加快捷方便的為用戶服務。而不需要用戶每次都要打字發送消息來獲取所需要的信息。輕輕一點按鈕,馬上擁有!   注:微信官方僅供認證號使用自定義菜單。   代碼:     include 'lanewechat.php';   $menuList = array(  array('id'=>'1', 'pid'=>'0', 'name'=>'菜單1', 'type'=>'', 'code'=>''),  array('id'=>'2', 'pid'=>'0', 'name'=>'菜單2', 'type'=>'', 'code'=>''),  array('id'=>'3', 'pid'=>'0', 'name'=>'地理位置', 'type'=>'location_select', 'code'=>'key_7'),  array('id'=>'4', 'pid'=>'1', 'name'=>'點擊推事件', 'type'=>'click', 'code'=>'key_1'),  array('id'=>'5', 'pid'=>'1', 'name'=>'跳轉URL', 'type'=>'view', 'code'=>'http://www.lanecn.com/'),  array('id'=>'6', 'pid'=>'2', 'name'=>'掃碼推事件', 'type'=>'scancode_push', 'code'=>'key_2'),  array('id'=>'7', 'pid'=>'2', 'name'=>'掃碼等收消息', 'type'=>'scancode_waitmsg', 'code'=>'key_3'),  array('id'=>'8', 'pid'=>'2', 'name'=>'系統拍照發圖', 'type'=>'pic_sysphoto', 'code'=>'key_4'),  array('id'=>'9', 'pid'=>'2', 'name'=>'彈拍照或相冊', 'type'=>'pic_photo_or_album', 'code'=>'key_5'),  array('id'=>'10', 'pid'=>'2', 'name'=>'彈微信相冊', 'type'=>'pic_weixin', 'code'=>'key_6'),  );   $result = \LaneWeChat\Core\Menu::setMenu($menuList);  六、頁面展示二維碼   場景描述:在網頁中展示微信公眾號的二維碼   場景舉例:太多了吧,就不說了…   代碼:     include 'lanewechat.php';   header('Content-type: image/jpg');  $ticket = \LaneWeChat\Core\Popularize::createTicket(1, 1800, 1);  $ticket = $ticket['ticket'];  $qrcode = \LaneWeChat\Core\Popularize::getQrcode($ticket);  echo $qrcode;

相關鏈接

版權所有

發表評論

2017怎样手机上赚钱