From e426c0f308daa80c8fea959c1844be3c21ca0a6e Mon Sep 17 00:00:00 2001 From: fanbo <3412853751@qq.com> Date: Mon, 16 Dec 2024 21:32:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 13 ++ README.md | 8 +- autoloader.php | 25 +++ config.php | 47 ++++++ core/accesstoken.lib.php | 38 +++++ core/advancedbroadcast.lib.php | 79 +++++++++ core/aes/ReadMe.txt | 4 + core/aes/demo.php | 37 +++++ core/aes/errorcode.lib.php | 18 ++ core/aes/pkcs7encoder.lib.php | 32 ++++ core/aes/prpcrypt.lib.php | 74 +++++++++ core/aes/sha1.lib.php | 17 ++ core/aes/wxbizmsgcrypt.lib.php | 24 +++ core/aes/xmlparse.lib.php | 32 ++++ core/auth.lib.php | 21 +++ core/media.lib.php | 17 ++ core/menu.lib.php | 62 +++++++ core/msg.lib.php | 19 +++ core/msgconstant.lib.php | 20 +++ core/popularize.lib.php | 37 +++++ core/responseinitiative.lib.php | 128 ++++++++++++++ core/responsepassive.lib.php | 143 ++++++++++++++++ core/wechat.lib.php | 63 +++++++ core/wechatoauth.lib.php | 47 ++++++ core/wechatrequest.lib.php | 286 ++++++++++++++++++++++++++++++++ demo.php | 132 +++++++++++++++ detx.txt | 0 lanewechat.php | 10 ++ sorc.txt | 0 wechat.php | 20 +++ 30 files changed, 1447 insertions(+), 6 deletions(-) create mode 100644 LICENSE create mode 100644 autoloader.php create mode 100644 config.php create mode 100644 core/accesstoken.lib.php create mode 100644 core/advancedbroadcast.lib.php create mode 100644 core/aes/ReadMe.txt create mode 100644 core/aes/demo.php create mode 100644 core/aes/errorcode.lib.php create mode 100644 core/aes/pkcs7encoder.lib.php create mode 100644 core/aes/prpcrypt.lib.php create mode 100644 core/aes/sha1.lib.php create mode 100644 core/aes/wxbizmsgcrypt.lib.php create mode 100644 core/aes/xmlparse.lib.php create mode 100644 core/auth.lib.php create mode 100644 core/media.lib.php create mode 100644 core/menu.lib.php create mode 100644 core/msg.lib.php create mode 100644 core/msgconstant.lib.php create mode 100644 core/popularize.lib.php create mode 100644 core/responseinitiative.lib.php create mode 100644 core/responsepassive.lib.php create mode 100644 core/wechat.lib.php create mode 100644 core/wechatoauth.lib.php create mode 100644 core/wechatrequest.lib.php create mode 100644 demo.php create mode 100644 detx.txt create mode 100644 lanewechat.php create mode 100644 sorc.txt create mode 100644 wechat.php diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..67f6166 --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2014 Lane + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. \ No newline at end of file diff --git a/README.md b/README.md index 84f01cd..72292fd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,2 @@ -# git-test -jyp 12.16 -duanzejia 12.16 -jiajiayi 12.16 -lihaoyang 12.16 -hezhefeng 12.16 21:26 \ No newline at end of file +第一次作业 + diff --git a/autoloader.php b/autoloader.php new file mode 100644 index 0000000..363c863 --- /dev/null +++ b/autoloader.php @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/core/accesstoken.lib.php b/core/accesstoken.lib.php new file mode 100644 index 0000000..68122d2 --- /dev/null +++ b/core/accesstoken.lib.php @@ -0,0 +1,38 @@ +1407743423"; + +$pc = new WXBizMsgCrypt($token, $encodingAesKey, $appId); +$encryptMsg = ''; +$errCode = $pc->encryptMsg($text, $timeStamp, $nonce, $encryptMsg); +if ($errCode == 0) { + print("加密后: " . $encryptMsg . "\n"); +} else { + print($errCode . "\n"); +} + +$xml_tree = new DOMDocument(); +$xml_tree->loadXML($encryptMsg); +$array_e = $xml_tree->getElementsByTagName('Encrypt'); +$array_s = $xml_tree->getElementsByTagName('MsgSignature'); +$encrypt = $array_e->item(0)->nodeValue; +$msg_sign = $array_s->item(0)->nodeValue; + +$format = ""; +$from_xml = sprintf($format, $encrypt); + +$msg = ''; +$errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg); +if ($errCode == 0) { + print("解密后: " . $msg . "\n"); +} else { + print($errCode . "\n"); +} \ No newline at end of file diff --git a/core/aes/errorcode.lib.php b/core/aes/errorcode.lib.php new file mode 100644 index 0000000..1b5a928 --- /dev/null +++ b/core/aes/errorcode.lib.php @@ -0,0 +1,18 @@ + 32) { + $pad = 0; + } + return substr($text, 0, (strlen($text) - $pad)); + } +} \ No newline at end of file diff --git a/core/aes/prpcrypt.lib.php b/core/aes/prpcrypt.lib.php new file mode 100644 index 0000000..f7322fd --- /dev/null +++ b/core/aes/prpcrypt.lib.php @@ -0,0 +1,74 @@ +key = base64_decode($k . "="); + } + + public function encrypt($text, $appid) + { + try { + $random = $this->getRandomStr(); + $text = $random . pack("N", strlen($text)) . $text . $appid; + $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); + $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); + $iv = substr($this->key, 0, 16); + $pkc_encoder = new PKCS7Encoder; + $text = $pkc_encoder->encode($text); + mcrypt_generic_init($module, $this->key, $iv); + $encrypted = mcrypt_generic($module, $text); + mcrypt_generic_deinit($module); + mcrypt_module_close($module); + return array(ErrorCode::$OK, base64_encode($encrypted)); + } catch (\Exception $e) { + return array(ErrorCode::$EncryptAESError, null); + } + } + + public function decrypt($encrypted, $appid) + { + try { + $ciphertext_dec = base64_decode($encrypted); + $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); + $iv = substr($this->key, 0, 16); + mcrypt_generic_init($module, $this->key, $iv); + $decrypted = mdecrypt_generic($module, $ciphertext_dec); + mcrypt_generic_deinit($module); + mcrypt_module_close($module); + } catch (\Exception $e) { + return array(ErrorCode::$DecryptAESError, null); + } + try { + $pkc_encoder = new PKCS7Encoder; + $result = $pkc_encoder->decode($decrypted); + if (strlen($result) < 16) + return ""; + $content = substr($result, 16, strlen($result)); + $len_list = unpack("N", substr($content, 0, 4)); + $xml_len = $len_list[1]; + $xml_content = substr($content, 4, $xml_len); + $from_appid = substr($content, $xml_len + 4); + } catch (\Exception $e) { + return array(ErrorCode::$IllegalBuffer, null); + } + if ($from_appid != $appid) + return array(ErrorCode::$ValidateAppidError, null); + return array(0, $xml_content); + } + + function getRandomStr() + { + $str = ""; + $str_pol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; + $max = strlen($str_pol) - 1; + for ($i = 0; $i < 16; $i++) { + $str .= $str_pol[mt_rand(0, $max)]; + } + return $str; + } +} \ No newline at end of file diff --git a/core/aes/sha1.lib.php b/core/aes/sha1.lib.php new file mode 100644 index 0000000..753d8fe --- /dev/null +++ b/core/aes/sha1.lib.php @@ -0,0 +1,17 @@ +token = $token; + $this->encodingAesKey = $encodingAesKey; + $this->appId = $appId; + } + + public function encryptMsg($replyMsg, $timeStamp, $nonce, &$encryptMsg) + { + $pc = new Prpcrypt($this->encodingAesKey); + $array = $pc->encrypt($replyMsg, $this->appId); + $ret = $array[0]; + if ($ret != 0) { + return $ret; + \ No newline at end of file diff --git a/core/aes/xmlparse.lib.php b/core/aes/xmlparse.lib.php new file mode 100644 index 0000000..4d56da8 --- /dev/null +++ b/core/aes/xmlparse.lib.php @@ -0,0 +1,32 @@ +loadXML($xmltext); + $array_e = $xml->getElementsByTagName('Encrypt'); + $array_a = $xml->getElementsByTagName('ToUserName'); + $encrypt = $array_e->item(0)->nodeValue; + $tousername = $array_a->item(0)->nodeValue; + return array(0, $encrypt, $tousername); + } catch (\Exception $e) { + return array(ErrorCode::$ParseXmlError, null, null); + } + } + + public function generate($encrypt, $signature, $timestamp, $nonce) + { + $format = " + + +%s + +"; + return sprintf($format, $encrypt, $signature, $timestamp, $nonce); + } +} +?> \ No newline at end of file diff --git a/core/auth.lib.php b/core/auth.lib.php new file mode 100644 index 0000000..2b2fb32 --- /dev/null +++ b/core/auth.lib.php @@ -0,0 +1,21 @@ + '@' . $filename); + return Curl::callWebServer($queryUrl, $data, 'POST', 1, 0); + } + + public static function download($mediaId) { + $accessToken = AccessToken::getAccessToken(); + $queryUrl = 'http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=' . $accessToken . '&media_id=' . $mediaId; + return Curl::callWebServer($queryUrl, '', 'GET', 0); + } +} \ No newline at end of file diff --git a/core/menu.lib.php b/core/menu.lib.php new file mode 100644 index 0000000..799c66a --- /dev/null +++ b/core/menu.lib.php @@ -0,0 +1,62 @@ +$menu){ + foreach($menuList2 as $k=>$menu2){ + if($menu['id'] == $menu2['pid']){ + $menuList[$key]['sub_button'][] = $menu2; + unset($menuList[$k]); + } + } + } + foreach($menuList as $key=>$menu){ + if($menu['type'] == 'view'){ + $menuList[$key]['url'] = urlencode($menu['code']); + }else if($menu['type'] == 'click'){ + $menuList[$key]['key'] = $menu['code']; + }else if(!empty($menu['type'])){ + $menuList[$key]['key'] = $menu['code']; + if(!isset($menu['sub_button'])) $menuList[$key]['sub_button'] = array(); + } + unset($menuList[$key]['code'], $menuList[$key]['id'], $menuList[$key]['pid']); + $menuList[$key]['name'] = urlencode($menu['name']); + if(isset($menu['sub_button'])){ + unset($menuList[$key]['type']); + foreach($menu['sub_button'] as $k=>$son){ + if($son['type'] == 'view'){ + $menuList[$key]['sub_button'][$k]['url'] = urlencode($son['code']); + }else if($son['type'] == 'click'){ + $menuList[$key]['sub_button'][$k]['key'] = $son['code']; + }else{ + $menuList[$key]['sub_button'][$k]['key'] = $son['code']; + $menuList[$key]['sub_button'][$k]['sub_button'] = array(); + } + unset($menuList[$key]['sub_button'][$k]['code'], $menuList[$key]['sub_button'][$k]['id'], $menuList[$key]['sub_button'][$k]['pid']); + $menuList[$key]['sub_button'][$k]['name'] = urlencode($son['name']); + } + } + } + $data = array('button' => array_values($menuList)); + $data = json_encode($data); + $data = urldecode($data); + $accessToken = AccessToken::getAccessToken(); + $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$accessToken; + $result = Curl::callWebServer($url, $data, 'POST'); + return $result['errcode'] == 0 ? true : $result; + } + + public static function getMenu(){ + $accessToken = AccessToken::getAccessToken(); + $url = 'https://api.weixin.qq.com/cgi-bin/menu/get?access_token='.$accessToken; + return Curl::callWebServer($url, '', 'GET'); + } + + public static function delMenu(){ + $accessToken = AccessToken::getAccessToken(); + $url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token='.$accessToken; + return Curl::callWebServer($url, '', 'GET'); + } +} \ No newline at end of file diff --git a/core/msg.lib.php b/core/msg.lib.php new file mode 100644 index 0000000..8fdf508 --- /dev/null +++ b/core/msg.lib.php @@ -0,0 +1,19 @@ + $code); + if (!empty($errorMsg)) { + $returnMsg['custom_msg'] = $errorMsg; + } + $returnMsg['custom_msg'] = '出错啦!'.$returnMsg['custom_msg']; + exit($returnMsg['custom_msg']); + } +} +?> diff --git a/core/msgconstant.lib.php b/core/msgconstant.lib.php new file mode 100644 index 0000000..0025dc5 --- /dev/null +++ b/core/msgconstant.lib.php @@ -0,0 +1,20 @@ +$tousername, + 'msgtype'=>'text', + 'text'=>array( + 'content'=>$content, + ), + ); + $template = json_encode($template); + + return Curl::callWebServer(self::$queryUrl, $template, self::$action); + } + + public static function image($tousername, $mediaId){ + //获取ACCESS_TOKEN + $accessToken = AccessToken::getAccessToken(); + self::$queryUrl = self::$queryUrl.$accessToken; + + //开始 + $template = array( + 'touser'=>$tousername, + 'msgtype'=>'image', + 'image'=>array( + 'media_id'=>$mediaId, + ), + ); + $template = json_encode($template); + return Curl::callWebServer(self::$queryUrl, $template, self::$action); + } + + public static function voice($tousername, $mediaId){ + //获取ACCESS_TOKEN + $accessToken = AccessToken::getAccessToken(); + self::$queryUrl = self::$queryUrl.$accessToken; + + //开始 + $template = array( + 'touser'=>$tousername, + 'msgtype'=>'voice', + 'voice'=>array( + 'media_id'=>$mediaId, + ), + ); + $template = json_encode($template); + return Curl::callWebServer(self::$queryUrl, $template, self::$action); + } + + public static function video($tousername, $mediaId, $title, $description){ + //获取ACCESS_TOKEN + $accessToken = AccessToken::getAccessToken(); + self::$queryUrl = self::$queryUrl.$accessToken; + + //开始 + $template = array( + 'touser'=>$tousername, + 'msgtype'=>'video', + 'video'=>array( + 'media_id'=>$mediaId, + 'title'=>$title, + 'description'=>$description, + ), + ); + $template = json_encode($template); + return Curl::callWebServer(self::$queryUrl, $template, self::$action); + } + + + public static function music($tousername, $title, $description, $musicUrl, $hqMusicUrl, $thumbMediaId){ + //获取ACCESS_TOKEN + $accessToken = AccessToken::getAccessToken(); + self::$queryUrl = self::$queryUrl.$accessToken; + + //开始 + $template = array( + 'touser'=>$tousername, + 'msgtype'=>'music', + 'music'=>array( + 'title'=>$title, + 'description'=>$description, + 'musicurl'=>$musicUrl, + 'hqmusicurl'=>$hqMusicUrl, + 'thumb_media_id'=>$thumbMediaId, + ), + ); + $template = json_encode($template); + return Curl::callWebServer(self::$queryUrl, $template, self::$action); + } + + public static function newsItem($title, $description, $picUrl, $url){ + return $template = array( + 'title'=>$title, + 'description'=>$description, + 'url'=>$picUrl, + 'picurl'=>$url, + ); + } + + public static function news($tousername, $item){ + + $accessToken = AccessToken::getAccessToken(); + self::$queryUrl = self::$queryUrl.$accessToken; + + + $template = array( + 'touser'=>$tousername, + 'msgtype'=>'news', + 'news'=>array( + 'articles'=>$item + ), + ); + $template = json_encode($template); + return Curl::callWebServer(self::$queryUrl, $template, self::$action); + } + + +} \ No newline at end of file diff --git a/core/responsepassive.lib.php b/core/responsepassive.lib.php new file mode 100644 index 0000000..5fceaff --- /dev/null +++ b/core/responsepassive.lib.php @@ -0,0 +1,143 @@ + + + + %s + + + %s + +XML; + return sprintf($template, $fromusername, $tousername, time(), $content, $funcFlag); + } + + + public static function image($fromusername, $tousername, $mediaId, $funcFlag=0){ + $template = << + + + %s + + + + + %s + +XML; + return sprintf($template, $fromusername, $tousername, time(), $mediaId, $funcFlag); + } + + + public static function voice($fromusername, $tousername, $mediaId, $funcFlag=0){ + $template = << + + + %s + + + + + %s + +XML; + return sprintf($template, $fromusername, $tousername, time(), $mediaId, $funcFlag); + } + + + public static function video($fromusername, $tousername, $mediaId, $title, $description, $funcFlag=0){ + $template = << + + + %s + + + %s + +XML; + return sprintf($template, $fromusername, $tousername, time(), $mediaId, $title, $description, $funcFlag); + } + + + public static function music($fromusername, $tousername, $title, $description, $musicUrl, $hqMusicUrl, $thumbMediaId, $funcFlag=0){ + $template = << + + + %s + + + <![CDATA[%s]]> + + + + + + %s + +XML; + return sprintf($template, $fromusername, $tousername, time(), $title, $description, $musicUrl, $hqMusicUrl, $thumbMediaId, $funcFlag); + } + + + public static function newsItem($title, $description, $picUrl, $url){ + $template = << + <![CDATA[%s]]> + + + + +XML; + return sprintf($template, $title, $description, $picUrl, $url); + } + + + public static function news($fromusername, $tousername, $item, $funcFlag=0){ + + if(count($item) >= 10){ + $request = array('fromusername'=>$fromusername, 'tousername'=>$tousername); + return Msg::returnErrMsg(MsgConstant::ERROR_NEWS_ITEM_COUNT_MORE_TEN, '图文消息的项数不能超过10条', $request); + + } + $template = << + + + %s + + %s + + %s + + %s + +XML; + return sprintf($template, $fromusername, $tousername, time(), count($item), implode($item), $funcFlag); + } + + + public static function forwardToCustomService($fromusername, $tousername){ + $template = << + + + %s + + +XML; + return sprintf($template, $fromusername, $tousername, time()); + } +} \ No newline at end of file diff --git a/core/wechat.lib.php b/core/wechat.lib.php new file mode 100644 index 0000000..4ce0039 --- /dev/null +++ b/core/wechat.lib.php @@ -0,0 +1,63 @@ +isValid() && $this->validateSignature($token)) { + return $_GET['echostr']; + } + $this->debug = $debug; + $xml = (array) simplexml_load_string($GLOBALS['HTTP_RAW_POST_DATA'], 'SimpleXMLElement', LIBXML_NOCDATA); + $this->request = array_change_key_case($xml, CASE_LOWER); + } + + private function isValid() { + return isset($_GET['echostr']); + } + + private function validateSignature($token) { + $signature = $_GET['signature']; + $timestamp = $_GET['timestamp']; + $nonce = $_GET['nonce']; + $signatureArray = array($token, $timestamp, $nonce); + sort($signatureArray, SORT_STRING); + return sha1(implode($signatureArray)) == $signature; + } + + protected function getRequest($param = FALSE) { + if ($param === FALSE) { + return $this->request; + } + $param = strtolower($param); + if (isset($this->request[$param])) { + return $this->request[$param]; + } + return NULL; + } + + public function run() { + return WechatRequest::switchType($this->request); + } + + public function checkSignature() + { + $signature = $_GET["signature"]; + $timestamp = $_GET["timestamp"]; + $nonce = $_GET["nonce"]; + + $token = WECHAT_TOKEN; + $tmpArr = array($token, $timestamp, $nonce); + sort($tmpArr, SORT_STRING); + $tmpStr = implode( $tmpArr ); + $tmpStr = sha1( $tmpStr ); + + if( $tmpStr == $signature ){ + echo $_GET['echostr']; + return true; + }else{ + return false; + } + } +} \ No newline at end of file diff --git a/core/wechatoauth.lib.php b/core/wechatoauth.lib.php new file mode 100644 index 0000000..1991690 --- /dev/null +++ b/core/wechatoauth.lib.php @@ -0,0 +1,47 @@ +1407743423"; + + + $pc = new Aes\WXBizMsgCrypt($token, $encodingAesKey, $appId); + $encryptMsg = ''; + $errCode = $pc->encryptMsg($text, $timeStamp, $nonce, $encryptMsg); + if ($errCode == 0) { + print("加密后: " . $encryptMsg . "\n"); + } else { + print($errCode . "\n"); + } + + $xml_tree = new \DOMDocument(); + $xml_tree->loadXML($encryptMsg); + $array_e = $xml_tree->getElementsByTagName('Encrypt'); + $array_s = $xml_tree->getElementsByTagName('MsgSignature'); + $encrypt = $array_e->item(0)->nodeValue; + $msg_sign = $array_s->item(0)->nodeValue; + + $format = ""; + $from_xml = sprintf($format, $encrypt); + + $msg = ''; + $errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg); + if ($errCode == 0) { + print("解密后: " . $msg . "\n"); + } else { + print($errCode . "\n"); + } + } +} + + diff --git a/demo.php b/demo.php new file mode 100644 index 0000000..9c6290f --- /dev/null +++ b/demo.php @@ -0,0 +1,132 @@ +'标题1', 'description'=>'描述1', 'pic_url'=>'图片URL1', 'url'=>'点击跳转URL1'); +$tuwenList[] = array('title'=>'标题2', 'description'=>'描述2', 'pic_url'=>'图片URL2', 'url'=>'点击跳转URL2'); + +$itemList = array(); +foreach ($tuwenList as $tuwen) { + $itemList[] = \LaneWeChat\Core\ResponseInitiative::newsItem($tuwen['title'], $tuwen['description'], $tuwen['pic_url'], $tuwen['url']); +} +\LaneWeChat\Core\ResponseInitiative::news($tousername, $itemList); + + + + +$fromusername = "谁发给你的?(用户的openId)"; +$tousername = "你的公众号Id"; +$mediaId = "通过上传多媒体文件,得到的id。"; + +\LaneWeChat\Core\ResponsePassive::text($fromusername, $tousername, '文本消息内容'); + +\LaneWeChat\Core\ResponsePassive::image($fromusername, $tousername, $mediaId); + +\LaneWeChat\Core\ResponsePassive::voice($fromusername, $tousername, $mediaId); + +\LaneWeChat\Core\ResponsePassive::video($fromusername, $tousername, $mediaId, '视频标题', '视频描述'); + +\LaneWeChat\Core\ResponsePassive::music($fromusername, $tousername, '音乐标题', '音乐描述', '音乐链接', '高质量音乐链接,WIFI环境优先使用该链接播放音乐', '缩略图的媒体id,通过上传多媒体文件,得到的id'); + + +$tuwenList[] = array('title'=>'标题1', 'description'=>'描述1', 'pic_url'=>'图片URL1', 'url'=>'点击跳转URL1'); +$tuwenList[] = array('title'=>'标题2', 'description'=>'描述2', 'pic_url'=>'图片URL2', 'url'=>'点击跳转URL2'); + +$itemList = array(); +foreach($tuwenList as $tuwen){ + $itemList[] = \LaneWeChat\Core\ResponsePassive::newsItem($tuwen['title'], $tuwen['description'], $tuwen['pic_url'], $tuwen['url']); +} +\LaneWeChat\Core\ResponsePassive::news($fromusername, $tousername, $itemList); + +\LaneWeChat\Core\ResponsePassive::forwardToCustomService($fromusername, $tousername); + + +$openId = '用户和微信公众号的唯一ID'; + + +\LaneWeChat\Core\UserManage::createGroup('分组名'); + +\LaneWeChat\Core\UserManage::getGroupList(); + +\LaneWeChat\Core\UserManage::getGroupByOpenId($openId); + +\LaneWeChat\Core\UserManage::editGroupName('分组Id', '新的组名'); + +\LaneWeChat\Core\UserManage::editUserGroup($openId, '新的分组ID'); + + +\LaneWeChat\Core\UserManage::getUserInfo($openId); + +\LaneWeChat\Core\UserManage::getFansList($next_openId=''); + +\LaneWeChat\Core\UserManage::setRemark($openId, '新昵称'); + +\LaneWeChat\Core\UserManage::getNetworkState(); + + + +$redirect_uri = '获取CODE时,发送请求和参数给微信服务器,微信服务器会处理后将跳转到本参数指定的URL页面'; +\LaneWeChat\Core\WeChatOAuth::getCode($redirect_uri, $state=1, $scope='snsapi_base'); + +$code = $_GET['code']; +\LaneWeChat\Core\WeChatOAuth::getAccessTokenAndOpenId($code); + + +\LaneWeChat\Core\Media::upload($filename, $type); + +\LaneWeChat\Core\Media::download($mediaId); + + + + +$menuList = array( + array('id'=>'1', 'pid'=>'', 'name'=>'常规', 'type'=>'', 'code'=>'key_1'), + array('id'=>'2', 'pid'=>'1', 'name'=>'点击', 'type'=>'click', 'code'=>'key_2'), + array('id'=>'3', 'pid'=>'1', 'name'=>'浏览', 'type'=>'view', 'code'=>'http: + array('id'=>'4', 'pid'=>'', 'name'=>'扫码', 'type'=>'', 'code'=>'key_4'), + array('id'=>'5', 'pid'=>'4', 'name'=>'扫码带提示', 'type'=>'scancode_waitmsg', 'code'=>'key_5'), + array('id'=>'6', 'pid'=>'4', 'name'=>'扫码推事件', 'type'=>'scancode_push', 'code'=>'key_6'), + array('id'=>'7', 'pid'=>'', 'name'=>'发图', 'type'=>'', 'code'=>'key_7'), + array('id'=>'8', 'pid'=>'7', 'name'=>'系统拍照发图', 'type'=>'pic_sysphoto', 'code'=>'key_8'), + array('id'=>'9', 'pid'=>'7', 'name'=>'拍照或者相册发图', 'type'=>'pic_photo_or_album', 'code'=>'key_9'), + array('id'=>'10', 'pid'=>'7', 'name'=>'微信相册发图', 'type'=>'pic_weixin', 'code'=>'key_10'), + array('id'=>'11', 'pid'=>'1', 'name'=>'发送位置', 'type'=>'location_select', 'code'=>'key_11'), +); +\LaneWeChat\Core\Menu::setMenu($menuList); + +\LaneWeChat\Core\Menu::getMenu(); + +\LaneWeChat\Core\Menu::delMenu(); + + + + + +$fansList = \LaneWeChat\Core\UserManage::getFansList(); + +$menuId = \LaneWeChat\Core\Media::upload('/var/www/baidu_jgylogo3.jpg', 'image'); +if (empty($menuId['media_id'])) { + die('error'); +} + +$list = array(); +$list[] = array('thumb_media_id'=>$menuId['media_id'] , 'author'=>'作者', 'title'=>'标题', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'1'); +$list[] = array('thumb_media_id'=>$menuId['media_id'] , 'author'=>'作者', 'title'=>'标题', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'0'); +$list[] = array('thumb_media_id'=>$menuId['media_id'] , 'author'=>'作者', 'title'=>'标题', 'content_source_url'=>'www.lanecn.com', 'digest'=>'摘要', 'show_cover_pic'=>'0'); +$mediaId = \LaneWeChat\Core\AdvancedBroadcast::uploadNews($list); + +$result = \LaneWeChat\Core\AdvancedBroadcast::sentNewsByOpenId($fansList['data']['openid'], $mediaId); \ No newline at end of file diff --git a/detx.txt b/detx.txt new file mode 100644 index 0000000..e69de29 diff --git a/lanewechat.php b/lanewechat.php new file mode 100644 index 0000000..cb8c338 --- /dev/null +++ b/lanewechat.php @@ -0,0 +1,10 @@ +run(); +