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


相关推荐

  • 高手入门STM32总结+学习步骤

    高手入门STM32总结+学习步骤一、入门总结1.1为什么要把时间花在“犹豫”上?每当我们在入门之前(ARM是这样,DSP也一样),总会有很多疑问,会有很多顾虑。我们渴望知道学习STM32前景如何?需要啥基础?难不难?适不适合我?但是什么时候能心潮澎湃地、相当着急地开始学STM32?日子在一天一天过去!你开始行动了吗?没有行动的思索,永远都不可能入门!把这些时间用来看书吧,效果能好一万倍。大家可能是从51单片机过来的,回想一…

    2025年9月7日
    6
  • CNN垃圾分类_垃圾分类卡通画

    CNN垃圾分类_垃圾分类卡通画基于TensorFlow和Keras的垃圾分类模型本篇博客主要介绍基于TensorFlow和Keras实现垃圾分类模型,目前是一篇占坑的博客,由于该项目目前用于参加比赛,因此暂时不能提供代码,感兴趣的可以私信我一起交流,识别结果如下所示:

    2022年10月6日
    4
  • python 比较字符串是否一样

    python 比较字符串是否一样在python中,判断两个变量是否相等或一样,可以使用==或者is来判断;判断不一样可以使用isnot。示例1.有时候两个字符串打印出来看着一样,但是判断却是False?如果两个字符串末尾有其他符号,比如回车‘\n’,print的时候无法发现的,所以需要strip:a=a.strip()b=b.strip()ifa==b: print&amp;amp;amp;quot;True&amp;amp;amp;quot;2.有时候==判断是Tr…

    2022年6月18日
    29
  • 手把手教你学DSP视频教程分享

    手把手教你学DSP视频教程分享手把手教你学DSP视频教程分享零基础入门,ccs软件环境搭建;硬件外设手把手调试;初学者入门必备;链接:https://pan.baidu.com/s/1y5ITVYF4h7kIwhDc3edu0Q提取码:2468

    2022年4月30日
    49
  • JSONObject转集合List

    JSONObject转集合ListJSONObject转集合ListStringjsonObjString=responseJsonObj.getString(“Result”);List<PurchaseOrder>purchaseOrders=(List<PurchaseOrder>)JSONArray.parseArray(jsonObjString,Purc…

    2022年5月12日
    45
  • URL 规范 整理

    URL 规范 整理

    2022年3月5日
    54

发表回复

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

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