## 推送事件處理及回復
### 注意事項
* 服務端處理代碼,即使不需要回復消息,也必須輸出 `success` 字符串。
* 如果不需要實時回復消息,可以選擇通過客服接口異步發送消息,適用于發送多條消息或業務處理較慢的場景。
* 數據格式請參考微信官方文檔,一些接口需要傳入數組,具體請查閱對應接口參數說明。
* 如果使用內存框架,請通過 `$GLOBALS['HTTP_RAW_POST_DATA']` 或 `php://input` 獲取每次請求的原始數據內容。
### 示例代碼
~~~php
try {
// 實例化接口,同時實現配置驗證與消息解密
$api = new \WeChat\Receive($config);
// 另一種方法:通過工廠方法實例化接口
// $api = \We::WeChatReceive($config);
// 獲取當前推送的消息類型 (text, image, location, event...)
$msgType = $api->getMsgType();
// 獲取當前推送消息的來源用戶 OpenID
$openid = $api->getOpenid();
// 獲取當前推送的完整消息數據
$data = $api->getReceive();
var_export($data);
// 回復文本消息
$api->text($content)->reply();
// 回復圖文消息(支持普通圖文或高級圖文,參數為數組)
$api->news($news)->reply();
// 回復圖片消息(需先上傳到微信服務器生成 media_id)
$api->image($media_id)->reply();
// 回復語音消息(需先上傳到微信服務器生成 media_id)
$api->voice($media_id)->reply();
// 回復視頻消息(需先上傳到微信服務器生成 media_id)
$api->video($media_id, $title, $desc)->reply();
// 回復音樂消息
$api->music($title, $desc, $musicUrl, $hqMusicUrl, $thumbMediaId)->reply();
// 將消息轉發至多客服服務
$api->transferCustomerService($account)->reply();
} catch (\Exception $e) {
// 處理異常情況
echo $e->getMessage();
}
~~~
### 說明
* 不同類型的消息需調用對應的回復方法,例如 `text()`、`image()` 等。
* 確保 `$config` 配置正確,尤其是 `appid` 和 `token`,否則接口驗證可能失敗。
* 復雜的業務邏輯建議通過日志記錄異常,方便后續排查問題。
> 更多功能可根據實際推送消息類型和業務需求靈活處理。