微信群发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); ?>


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 连接kafka报错:1 partitions have leader brokers without a matching listener「建议收藏」

    连接kafka报错:1 partitions have leader brokers without a matching listener「建议收藏」服务输出部分错误日志截图2020/12/25下午2:32:442020-12-2514:32:44.320WARN[tag-service,,,]1—[ntainer#4-0-C-1]org.apache.kafka.clients.NetworkClient:[ConsumerclientId=consumer-5,groupId=statistic-processor]1partitionshaveleaderbrokerswithoutamatchi

  • OpenCV-Python (Sobel算子)[通俗易懂]

    OpenCV-Python (Sobel算子)[通俗易懂]Sobel算子Sobel算子的基本概念Sobel算子是一个主要用于边缘检测的离散微分算子(discretedifferentiationoperator)。它结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度。在图像的任意一点使用此算子,都将会产生对应的梯度矢量或是其法矢量。原型Sobel算子依然是一种过滤器,只是其是带有方向的。在OpenCV-Pyt…

  • 进程的挂起状态详细分析方法_线程挂起

    进程的挂起状态详细分析方法_线程挂起通常我们所认为的进程有五大状态,新建态,就绪态,阻塞态,运行态,退出态。 下面是示意图: 事实上还存在被挂起的进程。    交换的需要前面图中三个基本状态(就绪态、运行态和阻塞态)提供了一种为进程行为建立模型的系统方法,并指导操作系统的实现。 但是,可以证明往模型中增加其他状态也是合理的。下面考虑一个没有使用虚拟内存的系统,每次执行中的进程必须完全载入内存。因此

    2022年10月26日
  • python语言程序设计教程赵璐主编_一加6第三方ROM推荐

    python语言程序设计教程赵璐主编_一加6第三方ROM推荐从数据处理到人工智能python数据分析方向第三方库有:Numpy,SciPy,PandasPython数据可视化方向的第三方库有:Seaborn,Matplotblib,Mayavi,Bokeh,Gleam,Plotly,visoy,ggplot,geoplotlib,pygal,Arcade,missingno,dataswimPython文本处理方向…

    2022年10月14日
  • C语言打印short、long、long long和unsigned类型整数[通俗易懂]

    C语言打印short、long、long long和unsigned类型整数[通俗易懂]要打印unsignedint数字,可以使用%u符号。打印long数值,可以使用%d格式说明符。如果系统的int和long类型具有同样的长度,使用%d就可以打印long数值,但是这会给程序移植到其他系统(这两种数据类型的长度不一样的系统)带来麻烦,所以建议使用%ld打印long数值。在x和o符号前也可以使用l前缀,因此%lx表示以十六进制格式打印长整数,%lo表示

  • Kali Linux三种网络攻击方法总结(DDoS、CC和ARP欺骗)

    Kali Linux三种网络攻击方法总结(DDoS、CC和ARP欺骗)本文章使用的是KaliLinux的2020-4-installer-amd64版本KaliLinux的安装过程本文章不做过多说明,请自行百度一、DDos攻击首先,打开一个命令行输入以下命令:gitclonehttps://github.com/Ha3MrX/DDos-Attack提示如图所示这样,用于DDos的数据包就已经下载到了你的Kali上下面,进入你所下载的DDos文件夹,输入命令(注意大小写):cdDDos-Attack然后设置ddos-attack.py设置

发表回复

您的电子邮箱地址不会被公开。

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