WeChat 사용자 로그인을 시뮬레이션하여 사용자 그룹을 얻고 메시지를 보냅니다.
- error_reporting( E_ALL ^ E_NOTICE );
- // 사용 지침:
- // 로그인하여 시작
- $ param = array( );
- $param['username'] = '사용자 이름';
- $param['pwd'] = 'password';
- echo '
';
-
- $wx = new Weixin();
- $flag = $wx->login($param);
-
- echo "Login:n";
- var_dump($ 플래그);
-
- echo "n";
- echo "그룹 가져오기:n";
- $group = $wx->getGroup();
- var_dump($group);
-
- echo "n";
- echo "그룹 구성원:n";
- $group = $wx->getFriendByGroup('0');
- var_dump($group);
-
- echo "n";
- echo "최신 뉴스 n";
- $msg = $wx->newmesg();
- var_dump($msg);
-
- echo "n" ;
- echo "이미지 및 텍스트 가져오기:n";
- $mesg = $wx->getMsg();
- var_dump($mesg);
-
- echo "n ";
- echo "메시지 보내기:n";
-
- // 설명: $content가 텍스트인 경우 텍스트 메시지를 보냅니다.
- // 설명: $content가 그래픽 ID인 경우 그래픽 메시지
- / /$content = '테스트 텍스트'; // 텍스트
- //$content = '10000023'; // 그래픽 자료 ID
- //$mesg = $wx->battchMesgByGroup( '101', $ content);
- //var_dump($mesg);
- $arr = array(
- 'fakeId'=>'985865180',
- "nickName"=>"鄄jintao",
- "remarkName"=>'',
- 'content'=>'10000002'
- );
- $s=$wx->sendmesg($arr);
- var_dump($ s);
- echo "df";
- /**
- * 위챗 퍼블릭 플랫폼 운영
- *PHP-CURL 기준
- *
- * @author phpbin
- *
- */
- class Weixin
- {
-
- /**
- * PHP 컬 헤더 부분
- *
- * @var array
- * /
- private $ _header;
-
- /**
- * 통신 쿠키
- *
- * @var string
- */
- private $_cookie;
-
- /**
- * 토큰
- *
- * @var 문자열
- */
- private $_token;
-
- /**
- * 초기화, 헤더 설정
- */
- 공개 함수 __construct()
- {
- $this->_header = array();
- $this->_header[ ] = "호스트:mp .weixin.qq.com";
- $this->_header[] = "추천자:https://mp.weixin.qq.com/cgi-bin/getmessage";
- }
-
- /**
- * 사용자 로그인
- * 구조 $param = array('username'=>'', 'pwd'=>'');
- *
- * @param 배열 $param
- * @return 부울
- */
- 공개 함수 로그인($param)
- {
- $url = 'https://mp.weixin.qq.com/cgi -bin/login?lang =zh_CN';
- $post = 'username='.urlencode($param['username']).'&pwd='.md5($param['pwd']).'&imgcode =&f=json';
- $stream = $this->_html($url, $post);
-
- // 로그인 성공 여부 확인
- $html = preg_replace("/ ^.*{/is" , "{", $stream);
- $json = json_decode($html, true);
- //토큰 가져오기
- preg_match("/lang=zh_CN&token=(d )/is", $json ['ErrMsg'], $match);
- $this->_token = $match[1];
-
- // 쿠키 가져오기
- $this-> ;_cookie($stream);
- return (boolean)$this->_token;
- }
-
- /**
- * 그래픽 메시지 받기
- *
- * @return array
- */
- 공개 함수 getMsg()
- {
- $url = 'https://mp.weixin.qq.com/cgi-bin/operate_appmsg?token='.$this->_token.'&lang=zh_CN&sub=list&type=10&subtype=3&t=wxm- appmsgs-list-new&pagesize=10&pageidx =0&lang=zh_CN';
- $stream = $this->_html($url);
-
- // 그룹 내 친구 분석
- preg_match_all('/ "appId":"(d ) ".*?"제목":"(.*?)".*?/is', $stream, $matches);
- if ( !is_array($matches[1] )) false 반환;
-
- $returns = array();
- foreach ( $matches[1] as $key=>$val) {
- $temp = array();
- $returns[$matches[1 ][$key]] = $matches[2][$key];
- }
- return $returns;
- }
-
- /**
- * 플랫폼 그룹 가져오기
- *
- * @return 배열
- */
- 공개 함수 getGroup()
- {
- $url = 'https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=0&type =0&groupid=0&token='.$ this->_token.'&lang=zh_CN';
- $stream = $this->_html($url);
-
- // 그룹
- preg_match ('/"groups":( .*?)\}).groups/is', $stream, $match);
- $jsonArr = json_decode($match[1], true);
- $returns = array();
- foreach ( $jsonArr as $key=>$val) {
- $returns[$val['id']] = $val['name'].'('.$ val['cnt'].' )'
- }
- $returns;
- }
-
- /**
- * 取得分組成員
- *
- * @param integer $gId
- * @return array;
- */
- public function getFriendByGroup($gId)
- {
- $url = 'https://mp.weixin.qq.com/cgi-bin /contactmanage?t=user/index&pagesize=10&pageidx=0&type=0&groupid='.$gId.'&token='.$this->_token.'&lang=zh_CN';
- $stream = $this->_html ($ url);
-
- // 分析分組中好友
- preg_match('/"contacts":(.*?)\}).contacts/is', $stream, $match);
- $jsonArr = json_decode($match[1], true);
-
- if ( !is_array($jsonArr)) return false;
-
- $returns = array();
- foreach (
- $returns = array();
- foreach (
- $returns = array();
- foreach ( $jsonArr as $key=>$val) {
- $temp = array();
- $temp['fakeId'] = $val['id'];
- $temp['nickName'] = $val['nick_name'];
- $temp['remarkName'] = $val['remark_name'];
- $returns[] = $temp;
- }
- return $returns;
- }
-
- /**
- * 批次按群組傳送
- *
- * @param integer $gId 分組ID
- * @param string $content
- * @return array
- */
- public function battchMesgByGroup($gId, $content)
- {
- $meb = $this->getFriendByroup ($meb) ;
-
- if ( false == $mebInfo) return false;
-
- // 迴圈傳送
- $returns = array();
- foreach ( $mebInfoas $key=>> $val)
- {
- $val['content'] = $content;
- $this->sendmesg($val) ? $returns['succ'] : $returns['err'] ;
- }
- return $returns;
- }
-
-
- /**
- * 傳送訊息
- *
- * 結構 $param = array(fakeId, content, msgId);
- * @param array $param
- * @return boolean
- */
- public function sendmesg($param)
- {
- $url = 'https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response';
-
- // 分割型別進行個體
- if ( (int)$param['content']>100000)
- {
- $post = 'error=false&tofakeid='.$param['fakeId']. '&type=10&fid='.$param['content'].'&appmsgid='.$param['content'].'&quickreplyid='.$param['msgId'].'&token='.$this-> ;_token.'&ajax=1';
- } else {
- $post = 'error=false&tofakeid='.$param['fakeId'].'&type=1&content='.$param['content'] .'&quickreplyid='.$param['msgId'].'&token='.$this->_token.'&ajax=1';
- }
-
- $this->_header[1 ] = "引用者:https://mp.weixin.qq.com/cgi-bin/singlemsgpage?msgid=&source=&count=20&t=wxm-singlechat&fromfakeid=".$param['fakeId']."&token=". $this->_token;
- $stream = $this->_html($url, $post);
-
- // 不是設定成功
- $html = preg_replace("/^ .*{ /is", "{", $stream);
- $json = json_decode($html, true);
- return (boolean)$json['msg'] == 'ok';
- }
-
- /**
- * 從Stream擷取cookie
- *
- * @param string $stream
- */
- 陰道函數_cookie($stream)
- {
- preg_match_all("/Set-Cookie: (.*?);/is ",?);/is ", $流,$matches);
- $this->_cookie = @implode(";", $matches[1]);
- }
-
- /**
- * 取得Stream
- *
- * @param string $url
- * @param string $post
- * @return mix
- */
- 中斷函數_html($ url , $post = FALSE)
- {
- ob_start();
- $ch =curl_init($url);
- curl_setopt($ch, CURLOPT_HEADER, true);
- curl_setopt($ ) , CURLOPT_HTTPHEADER, $this->_header);
- curl_setopt($ch, CURLOPT_TIMEOUT, 60);
- if ( $post){
- curl_setopt($ch, CURLOPT, , true ( $ch, CURLOPT_POSTFIELDS, $post);
- }
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_COOKel,thisse_COOKp. ( $ch, CURLOPT_PROXY, 'http://10.100.10.100:3128');
- curl_exec($ch);
- curl_close($ch);
- $_str = ob_get_contents();
- $_str = ob_get_contents();
- ob_end_clean();
- return $_str;
- }
- /**
- * 取得最新消息
- *
- * 回傳結構:id:msgId; fakeId; nickName; content;
- *
- * @return array
- */
- }
- /***/
- public function newmesg()
- {
- $url = 'https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token='.$this - > _token;
-
- $stream = $this->_html($url);
-
- preg_match('/"msg_item":(.*?)\}).msg_item/ is', $流, $match);
- $jsonArr = json_decode($match[1], true);
-
- $returns = array();
- foreach ( $jsonArr as $val ){
- if ( isset($val['is_starred_msg'])) continue;
- $returns[] = $val;
} return $returns; }} return $returns; | }
}