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