微信群发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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • datagrid激活码【在线注册码/序列号/破解码】

    datagrid激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    46
  • 《JavaScript 模式》读书笔记(1)— 简介

    哇,看了自己最近的一篇文章,已经刚好一年来,其实那时候刚刚接触Jest,啥也不会(虽然现在其实也一样不会,嘿嘿),就想记录下工作中遇到的一些问题。但是后来在持续的工作中才发现,那两篇文章写的其实是很有

    2022年3月25日
    37
  • 哈希冲突-哈希碰撞「建议收藏」

    哈希冲突-哈希碰撞「建议收藏」当我们对某个元素进行哈希运算,得到一个存储地址,然后要进行插入的时候,发现已经被其他元素占用了,其实这就是所谓的哈希冲突,也叫哈希碰撞。哈希函数的设计至关重要,好的哈希函数会尽可能地保证计算简单和散列地址分布均匀,但是,我们需要清楚的是,数组是一块连续的固定长度的内存空间,再好的哈希函数也不能保证得到的存储地址绝对不发生冲突。那么哈希冲突如何解决呢?哈希冲突的解决方案有多种:开放地址法(发生…

    2022年6月16日
    46
  • LocalDate转Date类型「建议收藏」

    LocalDate转Date类型「建议收藏」LocalDate转Date1.需要先将LocalDate转为LocalDateTimeLocalDate.atStartOfDay()2.获取Instance,需要指定时区,这里使用系统默认LocalDateTime.atZone(ZoneId.systemDefault()).toInstant()3.转化Date.from()连起来就是Date.from(LocalDate.now().atStartOfDay().atZone(ZoneId.sy

    2022年10月4日
    0
  • Ubuntu 16.04安装Java JDK8

    Ubuntu 16.04安装Java JDK8JavaJDK在linux系统有两个版本,一个开源版本Openjdk,还有一个oracle官方版本jdk,oracleJDK既可以通过添加ppa源命令行安装,也可以去官网下载jdk压缩包安装。下面分别记录一下这三种安装方式的步骤。安装openjdk1、更新软件包列表:sudoapt-getupdate2、安装openjdk-8-jdk:sudoapt-getinstall

    2022年7月12日
    13
  • JS转换HTML转义符,防止javascript注入攻击,亲测可用「建议收藏」

    JS转换HTML转义符,防止javascript注入攻击,亲测可用「建议收藏」//去掉html标签123function removeHtmlTab(tab){ return tab.replace(/]+?>/g,”);//删除所有HTML标签}//普通字符转换成转意符123fu

    2022年7月17日
    13

发表回复

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

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