微信公众号发送客服消息

<?php
/**
 * PushMessage
 * 微信公众号发送文本信息
 */
class PushMessage{
    private $appID = "";          // 服务号appID
    private $appSecret = "";     // 服务号appSerect
    // 获取access_token
    public function getAccessToken() {
        $appID = $this->appID;                                   // 服务号appID
        $appSecret = $this->appSecret;                           // 服务号appSerect
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appID&secret=$appSecret";
        $content = file_get_contents($url); 
        $content = (array)json_decode($content); 
        if(isset($content['errcode'])){
            echo '授权失败';
            exit;
        }
        $record = array();
        $record['token'] = $content['access_token'];
        return $record['token'];
    }

    // 2. 判断是否关注公众号。
    // 判断当前用户是否关注公众号
    public  function isSubscribe($openid) {

        $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appID&secret=$this->appSecret";
        $access_msg = json_decode(file_get_contents($access_token));
        $token = $access_msg->access_token;
        $subscribe_msg = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$token&openid={$openid}";
        $subscribe = json_decode(file_get_contents($subscribe_msg));
        $gzxx = $subscribe->subscribe;
        //
        if($gzxx === 1){
            return 1;
        }else{
            return 0;
             
        }
    }
 

    // 3. 发送客服消息。
    public function solPushMsg($openid, $content) {
        // 获取access_token
        $accessToken = $this->getAccessToken();
       $sta = $this->isSubscribe($openid);
        if(!$sta){
            return '请关注公众号接受信息';
        }
       // content
        $data = array(
          'touser' => $openid,              // 用户openID
          'msgtype' => 'text',
          'text' => [
                'content' => urlencode($content),     // 内容
            ],
        );
        // send
        $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$accessToken; 
        $res = $this->getJson($url,urldecode(json_encode($data))); // urldecode必须带上,不然发出的消息可能是unicode编码的
        
        return $res;
        
    }   
    function getJson($url,$data=0){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if(!empty($data)){
               curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
         }
        
        $output = curl_exec($ch);
        curl_close($ch);
        return json_decode($output, true);
    }
}
$message = new PushMessage;
$message->solPushMsg('openID','文本内容');

 

posted @ 2020-08-26 08:50  时间掉飞机  阅读(300)  评论(0编辑  收藏  举报