**目錄 (Table of Contents)**
[TOC]
## 微信關注/取消關注消息示例
```PHP
$receiver = new Receiver();
$subscribeMsg = "歡迎關注我的公眾號";
// 監聽一個關注事件,在客戶端用戶關注微信公眾號的時候,響應subscribe事件
$receiver ->addEventListener(Receiver::EVENT_SUBSCRIBE, function(/*SubscribeEventMessage*/ $msg) use($subscribeMsg) {
// 返回文本消息(Text類型)給客戶端
$textMessage = new TextMessage($msg->getPlatform(),$msg->getUser(), time(), null, $subscribeMsg);
$textMessage->response();
});
// 監聽一個取消關注事件,在客戶端用戶取消關注微信公眾號的時候,響應unsubscribe事件
$receiver ->addEventListener(Receiver::EVENT_UNSUBSCRIBE, function(/*UnSubscribeEventMessage*/ $msg) {
// 這里可以操作數據庫,刪除用戶信息等,或者記錄用戶已經取消關注
file_put_contents("log.txt","用戶:". $msg->getUser()."于".date("Y-m-d H:i:s")."取消公眾號關注\r\n",FILE_APPEND);
// do something here
});
$receiver ->receiver();
```
## 微信點擊事件消息示例
```PHP
// 假設我們有一個微信click事件的菜單,并且將該菜單的Key設置為 LVS_TEST1
$receiver = new Receiver();
// 我們在這里回復文本消息
$receiver->addEventListener(Receiver::EVENT_CLICK, function(ClickEventMessage $msg) {
$responseText = "您剛剛點擊了事件為". $msg->getEventKey()."事件的Button";
switch($msg->getEventKey()) {
case "LVS_TEST1":
$textMessage = new TextMessage($msg->getPlatform(),$msg->getUser(), time(), null, $responseText);
$textMessage->response();
break;
}
});
$receiver->receiver();
```
## 微信回復圖文消息
```JSON
假設我們從數據庫中獲取出來的圖文資源如下所示格式:
$resultsArr = [
[
"picture" => "https://endor-text/1.png",
"remarks"=>"這里是新聞1的文章簡介",
"title"=>"新聞1",
"articeid"=>"11",
],
[
"picture" => "https://endor-text/1.png",
"remarks"=>"這里是新聞2的文章簡介",
"title"=>"新聞2",
"articeid"=>"12",
],
[
"picture" => "https://endor-text/3.png",
"remarks"=>"這里是新聞3的文章簡介",
"title"=>"新聞3",
"articeid"=>"13",
],
];
```
```PHP
// 假設我們有一個LVS_TEST2的Button
$receiver = new Receiver();
$receiver->addEventListener(Receiver::EVENT_CLICK, function(/*ClickEventMessage*/ $msg) {
switch($msg->getEventKey()) {
case "LVS_TEST1":
// to do something
break;
case "LVS_TEST2":
// 您需要在這里從數據庫獲取資源,我們假設已經從數據庫中獲取到$resultsArr
$newsMessage = new NewsMessage($msg->getPlatform(),$msg->getUser(), time(), null, $responseText);
try {
foreach($resultsArr as $v)
{
// 跳轉URL地址
$link = "https://endor-test/article/".$v['articleid'].".html";
// 向圖文消息列表對象中循環插入圖文消息上下文結構
$newsMessage->addNewsContext(new NewsContext($v['title'],$v['remarks'],$v['picture'], $link));
}
$newsMessage->response();
}
catch(WechatException $e)
{
echo $e->errorMessage();
}
break;
}
});
$receiver->receiver();
```
## Echo 服務 (客戶端微信留言處理)
```PHP
// 該例子展示用戶在微信客戶端交流區輸入文字,服務器的事件響應
$receiver = new Receiver();
$receiver->addEventListener(Receiver::TEXT, function(TextMessage $msg) {
echo "接收到客戶端發來的文本消息內容為:" . $msg->getContent();
if($msg->getContent() == "時間")
{
$echoStr = "當前時間是:".Date("Y-m-d H:i:s");
$textMessage = new TextMessage($msg->getPlatform(),$msg->getUser(), time(), null,$echoStr);
$textMessage->response();
}
});
$receiver->receiver();
```
- 1、序言
- 1.1、更新說明
- 1.2、更新計劃
- 2、開始使用 Endor
- 3、目錄結構
- 4、類說明
- 4.1、WechatConfig
- 4.2、WechatValid
- 4.3、WechatCommon
- 4.4、WechatException
- 4.5、基礎接口
- 4.5.1、ShortUrl
- 4.5.2、WechatServerApi
- 4.6、菜單接口
- 4.6.1、菜單類設計
- 4.6.2、Menu
- 4.6.3、ClickMenu
- 4.6.4、ViewMenu
- 4.6.5、MiniProgramMenu
- 4.6.6、MenuApi
- 4.7、消息接口
- 4.7.1、Receiver
- 4.7.2、Message
- 4.7.3、EventMessage
- 4.7.4、TextMessage
- 4.7.5、ClickEventMessage
- 4.7.6、SubscribeEventMessage
- 4.7.7、UnSubscribeEventMessage
- 4.7.8、LocationEventMessage
- 4.7.9、ImageMessage
- 4.7.10、LinkMessage
- 4.7.11、NewsMessage
- 4.7.12、NewsContext
- 4.8、OAuth2.0權限驗證
- 4.8.1、WechatUser
- 4.8.2、OAuthApi
- 4.9、微信支付接口
- 4.9.1、微信支付類設計
- 4.9.2、PayApi
- 4.9.3、RequestPay
- 4.9.4、ResponsePay
- 4.9.5、UnifiedOrder
- 4.9.6、JsPay
- 4.9.7、Refund
- 4.9.8、Query
- 4.9.9、Bill
- 4.9.10、NotifyData
- 4.9.11、Notify
- 4.10、模板消息接口
- 4.10.1、TemplateContext
- 4.10.2、TemplateMessageApi
- 5、使用場景
- 5.1、微信接入服務器驗證
- 5.2、獲取微信API令牌(access_token)
- 5.3、獲取JS API
- 5.4、OAuth2.0靜默登錄
- 5.5、微信菜單
- 5.6、微信消息
- 5.7、微信支付
- 5.7.1、微信公眾號內JsApi支付
- 5.7.2、Native 模式二 掃碼支付
- 5.8、模板消息發送