官方文档
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1481187827_i0l21
根据文档要求
1 上传图文消息内的图片获取URL【订阅号与服务号认证后均可用】 2 上传图文消息素材【订阅号与服务号认证后均可用】 3 根据标签进行群发【订阅号与服务号认证后均可用】 4 根据OpenID列表群发【订阅号不可用,服务号认证后可用】 5 删除群发【订阅号与服务号认证后均可用】 6 预览接口【订阅号与服务号认证后均可用】 7 查询群发消息发送状态【订阅号与服务号认证后均可用】 8 事件推送群发结果 9 使用 clientmsgid 参数,避免重复推送 10 控制群发速度
1、上传图文消息内的图片获取URL
//上传图片 jpg 格式public function test(){ $accessToken = $this->getToken($this->appid, $this->appsecret); $url="https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$accessToken; $data = array("file" => "@" . dirname(__FILE__) . "\a.jpg"); $result = $this->request_post($url, $data); return json_decode($result,true); } //获取 access_token
public function getToken($appid, $appsecret){ if (S($appid)) { $access_token = S($appid); } else { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret; $json = file_get_contents($url); $result = json_decode($json); $access_token = $result->access_token; S($appid, $access_token, 7200); } return $access_token;} //发送POST请求
function request_post($url = ‘‘, $param = ‘‘){ if (empty($url) || empty($param)) { return false; } $postUrl = $url; $curlPost = $param; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); curl_close($curl); return $data;}
成功返回 URL
2、上传图文消息素材
可以直接用微信的debug上传图片,返回的 图片media_id 直接用作图文消息 thumb_media_id(缩略图media_id)
https://mp.weixin.qq.com/debug
执行上传图文消息,这里的 thumb_media_id 就是上一步得到的图片 media_id
public function test(){ $accessToken = $this->getToken($this->appid, $this->appsecret); $url="https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=".$accessToken; $data=‘{ "articles": [ { "thumb_media_id":"WfKJPCNZy8seDitzd8_LiWa_EUGy9nqaPwW0Gp4wWZV4Q6KyfmH7-KWx3QZ13BUR", "author":"作者", "title":"标题", "content_source_url":"http://www.coolrong.com", "content":"具体内容", "digest":"简短简绍", "show_cover_pic":1 }, { "thumb_media_id":"WfKJPCNZy8seDitzd8_LiWa_EUGy9nqaPwW0Gp4wWZV4Q6KyfmH7-KWx3QZ13BUR", "author":"xxx", "title":"Happy Day", "content_source_url":"www.baidu.com", "content":"content", "digest":"digest", "show_cover_pic":0 }] }‘; $result = $this->request_post($url, $data); return json_decode($result,true);}
返回结果,注意这个 media_id 是图文消息的 media_id
3、因为测试群发次数有限,我们使用预览测试一下
注意:这里的 madia_id 就是上一步获取的 madia_id
public function test(){ $accessToken = $this->getToken($this->appid, $this->appsecret); $url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=".$accessToken; $data=‘{ "touser":"测试微信的 openID", "mpnews": { "media_id":"VtbL-3wOv1_jn78u9S6VAyvkhbWjMznWuKap7hOCRNCgrtSfXApnWTLMpx......" }, "msgtype":"mpnews" }‘; $result = $this->request_post($url, $data); return json_decode($result,true); }
成功返回
4、群发
注意:这里的 madia_id 就是与预览中的相同,tag_id为标签,给全部用户推送可以不填写
public function test(){ $accessToken = $this->getToken($this->appid, $this->appsecret); $url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token==".$accessToken; $data=‘{ "filter":{ "is_to_all":false, "tag_id":2 }, "mpnews":{ "media_id":"VtbL-3wOv1_jn78u9S6VAyvkhbWjMznWuKap7hOCRNCgrtSfXApnWTLMpx......" }, "msgtype":"mpnews", "send_ignore_reprint":0 }‘; $result = $this->request_post($url, $data); return json_decode($result,true); }
这样,就OK了! 实际都是根据文档去实现,所有步骤大同小异,如有疑问,请留言!
原文地址:https://www.cnblogs.com/eeds-wangwei/p/8203382.html
时间: 2025-01-18 05:11:49