微信群发sdk「建议收藏」

微信群发sdk「建议收藏」微信sdk

大家好,又见面了,我是你们的朋友全栈君。

微信sdk

<?php /*2018.8.21:xucheng * 微信群发sdk */ class weChatSendNews { 
     private $appid, $secret; public function __construct($appid, $secret) { 
     $this->appid = $appid; $this->secret = $secret; } /* * 微信群发 */ public function index($data){ 
     $access_token = self::getToken(); $url = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token='.$access_token; $res = self::http_post_json($url, $data); if ($res['0'] != 200){ $err = array(); $err['error'] = $res['0']; $err['msg'] = 'http error'; echo json_encode($err); }else{ echo $res['1'] ; } } /* * 获取token */ public function getToken(){ 
     $url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appid.'&secret='.$this->secret; $res = self::http_get_json($url); if ($res['0'] != 200){ $err = array(); $err['error'] = $res['0']; $err['msg'] = 'http error'; echo json_encode($err); }else{ $access_token = json_decode($res['1'],true); return $access_token['access_token']; } } public function http_get_json($url){ 
     $ch = curl_init(); //设置选项,包括URL curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//绕过ssl验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //执行并获取HTML文档内容 $output = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); //释放curl句柄 curl_close($ch); return array($httpCode, $output); } public function http_post_json($url, $jsonStr) { 
     $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charset=utf-8', 'Content-Length: ' . strlen($jsonStr) ) ); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return array($httpCode, $response); } /* * 微信上传图片 * $data 消息json串 * https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1481187827_i0l21 */ public function updateImage($path,$type){ 
     // $type = "image"; //声明上传的素材类型,这里为image $token = self::getToken();//调用接口需要获取token,这里使用一个封装好的调取access_token的函数 $url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$token."&type=".$type; //这里是请求地址,token和素材类型通过get方式传递 $file_path = $path; //这里声明文件的路径,使用绝对路径 $file_data = array("media" => new \CURLFile($file_path)); //传递的数组,方式二:从PHP5.5版本以后,引入了新的CURLFile 类来指向文件,参数传入的也是绝对路径 $ch = curl_init(); //初始化一个新的会话,返回一个cURL句柄,供curl_setopt(), curl_exec()和curl_close() 函数使用。 curl_setopt($ch , CURLOPT_URL , $url); //需要获取的URL地址,也可以在curl_init()函数中设置。 curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1); //使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存, //而不是直接输出。这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true curl_setopt($ch , CURLOPT_POST, 1); //发送一个POST请求 curl_setopt($ch , CURLOPT_POSTFIELDS, $file_data); //传递一个关联数组,生成multipart/form-data的POST请求 $output = curl_exec($ch);//发送请求获取结果 curl_close($ch);//关闭会话 $err = array('error'=>'1','msg'=>'update fail'); if($output){ $res = json_decode($output,true); if($res['errcode'] != 0 ){ echo json_encode($err); }else{ echo $output; } }else{ echo json_encode($err); } } /* * 上传图文 */ public function updateMedia($data){ 
     $url = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=".self::getToken(); $res = self::http_post_json($url, $data); if ($res['0'] != 200){ $err = array(); $err['error'] = $res['0']; $err['msg'] = 'http error'; echo json_encode($err); }else{ echo $res['1'] ; } } } ?>




测试类

<?php require_once 'weChatSendNews.php'; // $fu = $_GET['a']; $appid = 'wxbfa927e8c095210a'; $secret = 'e02254872763dabe92b37eef01a06dc9'; //$appid = 'wx861be46cbde5a8fd'; //$secret = '815cc4c299112eed011cafe67d0bdf8d'; $file_path = "/Users/alieven/Documents/phpspace/f9e3e3711b88629935ea890252bcc0b3.jpg"; $media_id ='gy4qgbDhECeCjvLixlERL4vDjphZgdq4pMWxnKxwnBM'; $t_media_id ='gy4qgbDhECeCjvLixlERL743MLPSCfJMLo6GN11061E'; $a_media_id = 'gy4qgbDhECeCjvLixlERL2Zv2L7LdgYYUSv9cWvgkvk'; $dataindex = '{"filter":{"is_to_all":true},"text":{"content":"123123"},"msgtype":"text"}'; $type = "thumb"; //参数 是否必须 说明 //title 是 标题 //thumb_media_id 是 图文消息的封面图片素材id(必须是永久mediaID) //author 否 作者 //digest 否 图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空。如果本字段为没有填写,则默认抓取正文前64个字。 //show_cover_pic 是 是否显示封面,0为false,即不显示,1为true,即显示 //content 是 图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS,涉及图片url必须来源 "上传图文消息内的图片获取URL"接口获取。外部图片url将被过滤。 //content_source_url 是 图文消息的原文地址,即点击“阅读原文”后的URL $data = '{ "articles": [{ "title": "测试123", "thumb_media_id": "gy4qgbDhECeCjvLixlERL743MLPSCfJMLo6GN11061E", "author": "测试", "digest": "测试哦", "show_cover_pic": 1, "content": "gy4qgbDhECeCjvLixlERL743MLPSCfJMLo6GN11061E", "content_source_url": "www.baidu.com" }, ] }'; $wx = new weChatSendNews($appid,$secret); $wx->updateImage($file_path,$type); // $wx->updateMedia($data); // $wx->getToken(); // $wx->index($dataindex); ?>


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135884.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TI C66x DSP 系统events及其应用 – 5.1(QM accumulator的配置)

    TI C66x DSP 系统events及其应用 – 5.1(QM accumulator的配置)

    2021年12月1日
    50
  • Eurake注册中心

    Eurake注册中心 eureka找到了&nbsp;有了服务端server用于服务注册与发现,系统中其他的微服务使用客户端client链接服务端,并且维持心跳连接,server端会不断的检查client端是否存活,心跳检测,健康检查,负载均衡功能eureka.client.fetch-registry=false一个服务可以即是…

    2022年6月11日
    41
  • 图标变成了一张白纸_电脑图标是白纸形式但能打开

    图标变成了一张白纸_电脑图标是白纸形式但能打开大家好,我是波导终结者。WIN10到现在也有些年头了,虽然好的不学学坏的,天天搞强制升级有些烦人,有时候新版本的BUG也比较致命,但是整体的性能,功能和稳定性上还是有飞跃性的提升。其实WIN10自带不少实用工具,而且兼容性和稳定性没得说,很多时候我们可以不必寻找第三方工具,省了很多钱,也提高了不少效率。今天就一起来看看吧。WIN10自带截图工具WIN10自带截图工具,虽然肯定不比专业的截图工具强,…

    2022年10月19日
    3
  • es6箭头函数详解_es6的新特性

    es6箭头函数详解_es6的新特性ES6标准新增了一种新的函数:ArrowFunction(箭头函数)。基础语法通常函数的定义方法varfn1=function(a,b){returna+b}functionfn2(a,b){returna+b}使用ES6箭头函数语法定义函数,将原函数的“function”关键字和函数名都删掉,并使用“=>”连接参数…

    2022年4月19日
    36
  • 【图文详解】【pycharm】pycharm更换背景颜色

    【图文详解】【pycharm】pycharm更换背景颜色首先 File Settings 然后如图所示 其中下拉选择有各种背景 下方有效果 可根据个人喜好设置最后 琉佳提醒 不要忘记保存 未保存等于没有设置

    2025年9月18日
    3
  • Java SpringBoot下载文件超时

    Java SpringBoot下载文件超时#端口server.port=9098#server端的socket超时间(毫秒),使用值-1表示没有(即无限)超时,默认值为60000(即60秒)#Tomcat附带的标准server.xml将此值设置为20000(即20秒),除非disableUploadTimeout设置为false,否则在读取请求正文(如果有)时也会使用此超时server.connection-timeout=80000server.disableUploadTimeout=false…

    2025年6月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号