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




?>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值