## 推送事件处理及回复
### 注意事项
* 服务端处理代码,即使不需要回复消息,也必须输出 `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`,否则接口验证可能失败。
* 复杂的业务逻辑建议通过日志记录异常,方便后续排查问题。
> 更多功能可根据实际推送消息类型和业务需求灵活处理。