From 3253d4f3399afbf546ab45f0e1a82f17809b879a Mon Sep 17 00:00:00 2001 From: pfspx4a7z <2942132918@qq.com> Date: Wed, 8 Jan 2025 20:05:07 +0800 Subject: [PATCH] Update advancedbroadcast.lib.php --- core/advancedbroadcast.lib.php | 49 +++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/core/advancedbroadcast.lib.php b/core/advancedbroadcast.lib.php index 4e71ab8..1681f1b 100644 --- a/core/advancedbroadcast.lib.php +++ b/core/advancedbroadcast.lib.php @@ -2,11 +2,14 @@ namespace LaneWeChat\Core; // 定义命名空间,表明这个类属于LaneWeChat模块的核心部分 class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于高级群发功能 + // 上传图文消息到微信服务器 public static function uploadNews($articles){ - $queryUrl = 'https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=' AccessToken::getAccessToken(); // 构建请求URL,包含access_token + // 构建请求URL,包含access_token,使用AccessToken类的getAccessToken方法获取 + $queryUrl = 'https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; // 请求方式为POST - foreach($articles as &$article){ // 遍历文章数组,对每个文章的字段进行URL编码 + // 遍历文章数组,对每个文章的字段进行URL编码,以确保特殊字符不会影响请求 + foreach($articles as &$article){ $article['author'] = urlencode($article['author']); $article['title'] = urlencode($article['title']); $article['content'] = urlencode($article['content']); @@ -15,14 +18,18 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于 $template = array(); // 创建模板数组 $template['articles'] = $articles; // 将编码后的文章数组赋值给模板的articles字段 $template = json_encode($template); // 将模板数组转换为JSON字符串 - $template = urldecode($template); // 对JSON字符串进行URL解码(这一步可能是多余的,因为JSON字符串不需要URL解码) - $result = Curl::callWebServer($queryUrl, $template, $queryAction); // 发起网络请求,调用Curl类的方法 - return empty($result['media_id']) ? false : $result['media_id']; // 返回media_id,如果结果中没有media_id则返回false + // 对JSON字符串进行URL解码(这一步可能是多余的,因为JSON字符串不需要URL解码) + $template = urldecode($template); + // 发起网络请求,调用Curl类的方法,传入URL、数据和请求方式 + $result = Curl::callWebServer($queryUrl, $template, $queryAction); + // 返回media_id,如果结果中没有media_id则返回false + return empty($result['media_id']) ? false : $result['media_id']; } // 根据分组ID群发图文消息 public static function sentNewsByGroup($groupId, $mediaId, $isToAll=false){ - $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' AccessToken::getAccessToken(); // 构建请求URL + // 构建请求URL,包含access_token + $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; // 请求方式为POST $template = array(); // 创建模板数组 $template['filter']['group_id'] = $groupId; // 设置分组ID @@ -30,12 +37,14 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于 $template['mpnews']['media_id'] = $mediaId; // 设置图文消息的media_id $template['msgtype'] = 'mpnews'; // 设置消息类型为图文消息 $template = json_encode($template); // 将模板数组转换为JSON字符串 - return Curl::callWebServer($queryUrl, $template, $queryAction); // 发起网络请求 + // 发起网络请求 + return Curl::callWebServer($queryUrl, $template, $queryAction); } // 根据分组ID群发文本消息 public static function sentTextByGroup($groupId, $content, $isToAll=false){ - $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' AccessToken::getAccessToken(); // 构建请求URL + // 构建请求URL,包含access_token + $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; // 请求方式为POST $template = array(); // 创建模板数组 $template['filter']['group_id'] = $groupId; // 设置分组ID @@ -43,12 +52,14 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于 $template['text']['content'] = $content; // 设置文本内容 $template['msgtype'] = 'text'; // 设置消息类型为文本消息 $template = json_encode($template); // 将模板数组转换为JSON字符串 - return Curl::callWebServer($queryUrl, $template, $queryAction); // 发起网络请求 + // 发起网络请求 + return Curl::callWebServer($queryUrl, $template, $queryAction); } // 根据分组ID群发语音消息 public static function sentVoiceByGroup($groupId, $mediaId, $isToAll=false){ - $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' AccessToken::getAccessToken(); // 构建请求URL + // 构建请求URL,包含access_token + $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; // 请求方式为POST $template = array(); // 创建模板数组 $template['filter']['group_id'] = $groupId; // 设置分组ID @@ -56,12 +67,14 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于 $template['voice']['media_id'] = $mediaId; // 设置语音消息的media_id $template['msgtype'] = 'voice'; // 设置消息类型为语音消息 $template = json_encode($template); // 将模板数组转换为JSON字符串 - return Curl::callWebServer($queryUrl, $template, $queryAction); // 发起网络请求 + // 发起网络请求 + return Curl::callWebServer($queryUrl, $template, $queryAction); } // 根据分组ID群发图片消息 public static function sentImageByGroup($groupId, $mediaId, $isToAll=false){ - $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' AccessToken::getAccessToken(); // 构建请求URL + // 构建请求URL,包含access_token + $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; // 请求方式为POST $template = array(); // 创建模板数组 $template['filter']['group_id'] = $groupId; // 设置分组ID @@ -69,20 +82,24 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于 $template['image']['media_id'] = $mediaId; // 设置图片消息的media_id $template['msgtype'] = 'image'; // 设置消息类型为图片消息 $template = json_encode($template); // 将模板数组转换为JSON字符串 - return Curl::callWebServer($queryUrl, $template, $queryAction); // 发起网络请求 + // 发起网络请求 + return Curl::callWebServer($queryUrl, $template, $queryAction); } // 根据分组ID群发视频消息 public static function sentVideoByGroup($mediaId, $title, $description, $groupId, $isToAll=false){ - $queryUrl = 'https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=' AccessToken::getAccessToken(); // 构建请求URL + // 构建请求URL,包含access_token + $queryUrl = 'https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; // 请求方式为POST $template = array(); // 创建模板数组 $template['media_id'] = $mediaId; // 设置视频消息的media_id $template['title'] = $title; // 设置视频标题 $template['description'] = $description; // 设置视频描述 $template = json_encode($template); // 将模板数组转换为JSON字符串 - $result = Curl::callWebServer($queryUrl, $template, $queryAction); // 发起网络请求 - if(empty($result['type']) || $result['type'] != 'video' || empty($result['media_id'])){ // 检查返回结果是否符合预期 + // 发起网络请求 + $result = Curl::callWebServer($queryUrl, $template, $queryAction); + // 检查返回结果是否符合预期 + if(empty($result['type']) || $result['type'] != 'video' || empty($result['media_id'])){ // 如果结果中没有type字段,或者type不是video,或者没有media_id,则返回false return false; }