<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. php語言

    php實現微信公眾號主動推送消息

    時間:2025-05-12 18:33:04 php語言 我要投稿
    • 相關推薦

    php實現微信公眾號主動推送消息

      通過學習借鑒朋友的實現方法進行整理,實現了PHP版的微信公共平臺消息主動推送,分享給大家供大家參考,具體內容如下,更多消息請關注應屆畢業生網。

      此方法是通過模擬登錄微信公共平臺的方法來實現的。

      代碼如下:

      一、登錄接口部分代碼

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
      //登錄
      private function login(){
        $url = 'https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN';
        $this->send_data = array(
          'username' => $this->_account,
          'pwd' => md5($this->_password),
          'f' => 'json'
        );
        $this->referer = "https://mp.weixin.qq.com/";
        $this->getHeader = 1;
        $result = explode("\n",$this->curlPost($url));
        foreach ($result as $key => $value) {
          $value = trim($value);
          if(preg_match('/"ErrCode": (.*)/i', $value,$match)){//獲取token
            switch ($match[1]) {
              case -1:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"系統錯誤")));
              case -2:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"帳號或密碼錯誤")));
              case -3:
                die(urldecode(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>urlencode("密碼錯誤")))));
              case -4:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"不存在該帳戶")));
              case -5:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"訪問受限")));
              case -6:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"需要輸入驗證碼")));
              case -7:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"此帳號已綁定私人微信號,不可用于公眾平臺登錄")));
              case -8:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"郵箱已存在")));
              case -32:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"驗證碼輸入錯誤")));
              case -200:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"因頻繁提交虛假資料,該帳號被拒絕登錄")));
              case -94:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"請使用郵箱登陸")));
              case 10:
                die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"該公眾會議號已經過期,無法再登錄使用")));
              case 0:
                $this->userFakeid = $this->getUserFakeid();
                break;
            }
          }
          if(preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $value,$match)){//獲取cookie
            $this->cookie .=$match[1].'='.$match[2].'; ';
          }
          if(preg_match('/"ErrMsg"/i', $value,$match)){//獲取token
            $this->token = rtrim(substr($value,strrpos($value,'=')+1),'",');
          }
        }
      }

      二、信息發送部分代碼

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      //單發消息
      private function send($fakeid,$content){
        $url = 'https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN';
        $this->send_data = array(
            'type' => 1,
            'content' => $content,
            'error' => 'false',
            'tofakeid' => $fakeid,
            'token' => $this->token,
            'ajax' => 1,
          );
        $this->referer = 'https://mp.weixin.qq.com/cgi-bin/singlemsgpage?token='.$this->token.'&fromfakeid='.$fakeid.'&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN';
        return $this->curlPost($url);
      }

      三、群發信息代碼

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
      //群發消息
      public function sendMessage($content='',$userId='') {
        if(is_array($userId) && !empty($userId)){
          foreach($userId as $v){
            $json = json_decode($this->send($v,$content));
            if($json->ret!=0){
              $errUser[] = $v;
            }
          }
        }else{
          foreach($this->userFakeid as $v){
            $json = json_decode($this->send($v['fakeid'],$content));
            if($json->ret!=0){
              $errUser[] = $v['fakeid'];
            }
          }
        }
         
        //共發送用戶數
        $count count($this->userFakeid);
        //發送失敗用戶數
        $errCount count($errUser);
        //發送成功用戶數
        $succeCount $count-$errCount;
         
        $data array(
          'status'=>0,
          'count'=>$count,
          'succeCount'=>$succeCount,
          'errCount'=>$errCount,
          'errUser'=>$errUser
        );
         
        return json_encode($data);
      }

      四、獲取所有用戶信息代碼片段

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
      //獲取所有用戶信息
      public function getAllUserInfo(){
        foreach($this->userFakeid as $v){
          $info[] = $this->getUserInfo($v['groupid'],$v['fakeid']);
        }
         
        return $info;
      }
       
       
       
      //獲取用戶信息
      public function getUserInfo($groupId,$fakeId){
        $url "https://mp.weixin.qq.com/cgi-bin/getcontactinfo?t=ajax-getcontactinfo&lang=zh_CN&fakeid={$fakeId}";
        $this->getHeader = 0;
        $this->referer = 'https://mp.weixin.qq.com/cgi-bin/contactmanagepage?token='.$this->token.'&t=wxm-friend&lang=zh_CN&pagesize='.$this->pageSize.'&pageidx=0&type=0&groupid='.$groupId;
        $this->send_data = array(
          'token'=>$this->token,
          'ajax'=>1
        );
        $message_opt $this->curlPost($url);
        return $message_opt;
      }
       
      //獲取所有用戶fakeid
      private function getUserFakeid(){
        ini_set('max_execution_time',600);
        $pageSize = 1000000;
        $this->referer = "https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token={$_SESSION['token']}";
        $url "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize={$pageSize}&pageidx=0&type=0&groupid=0&token={$this->token}&lang=zh_CN";
        $user $this->vget($url);
        $preg "/\"id\":(\d+),\"name\"/";
        preg_match_all($preg,$user,$b);
        $i = 0;
        foreach($b[1] as $v){
          $url 'https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize='.$pageSize.'&pageidx=0&type=0&groupid='.$v.'&token='.$this->token.'&lang=zh_CN';
          $user $this->vget($url);
          $preg "/\"id\":(\d+),\"nick_name\"/";
          preg_match_all($preg,$user,$a);
          foreach($a[1] as $vv){
            $arr[$i]['fakeid'] = $vv;
            $arr[$i]['groupid'] = $v;
            $i++;
          }
        }
        return $arr;
      }

      希望本文所述對大家學習php程序設計有所幫助。

    【php實現微信公眾號主動推送消息】相關文章:

    php Memcache中實現消息隊列04-10

    用PHP基于Redis消息隊列實現發布微博的方法03-05

    實現PHP實現限制IP訪問02-23

    php中屏蔽與顯示錯誤消息06-24

    php實現無限級分類實現代碼07-03

    PHP中多態如何實現05-06

    PHP實現簡易blog的制作01-25

    PHP列表頁實現的方法05-24

    PHP實現多線程的方法03-19

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人