<?php /** * Author: helen * CreateTime: 2015/12/9 20:14 * description: 微信公衆平臺接口API */ class Wechat{ /** * @FunctionDescription:驗證開發者服務器url有效性 * @Param:token(令牌 用戶手動輸入的配置信息) * @Return:echostr(隨機字符串) * @Description: * @Author:helen zheng */ public function valid($token){ $echostr = $_GET['echostr']; if($this->checkSignature($token)){ echo $echostr; exit; } } /** * @FunctionDescription:檢驗signature函數 * @Param:token(令牌 用戶手動輸入的配置信息) * @Return:true/false * @Description:微信服務器發送get請求將signature、timestamp、nonce、echostr四個參數發送到開發者提供的url,利用接收到的參數進行驗證。 * @Author:helen zheng */ function checkSignature($token){ /*獲取微信發送確認的參數。*/ $signature = $_GET['signature']; /*微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。*/ $timestamp = $_GET['timestamp']; /*時間戳 */ $nonce = $_GET['nonce']; /*隨機數 */ $echostr = $_GET['echostr']; /*隨機字符串*/ /*加密/校驗流程*/ /*1. 將token、timestamp、nonce三個參數進行字典序排序*/ $array = array($token,$timestamp,$nonce); sort($array,SORT_STRING); /*2. 將三個參數字符串拼接成一個字符串進行sha1加密*/ $str = sha1( implode($array) ); /*3. 開發者得到加密後的字符串可與signature對比,標識該請求來源於微信*/ if( $str==$signature && $echostr ){ return ture; }else{ return false; } } /** * @FunctionDescription:獲取access_token * @Param:AppID(第三方用戶惟一憑證 ),AppSecret(第三方用戶惟一憑證密鑰) * @Return:access_token( string(length=117)) * @Description:access_token的存儲至少要保留512個字符空間。access_token的有效期目前爲2個小時,需定時刷新,重複獲取將致使上次獲取的access_token失效。 * @Author:helen zheng */ public function getToken($appid,$appsecret){ $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取微信服務器的IP地址列表 * @Param:access_token(公衆號的access_token ) * @Return: * @Description:安全驗證 * @Author:helen zheng */ public function getWeixinIP($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:接收消息響應(回覆)函數(可與自定義回覆接口、語義理解接口、客服接口結合) * @Param: * @Return:接收消息類型 * @Description:?當普通微信用戶向公衆帳號發消息時,微信服務器將POST消息的XML數據包到開發者填寫的URL上。 * @Author:helen zheng */ public function responseMsg(){ /*1,獲取到微信推送過來post數據(xml格式)*/ $postArr = $GLOBALS['HTTP_RAW_POST_DATA']; /*2,處理消息類型,並設置回覆類型和內容*/ $postObj = simplexml_load_string($postArr); /*判斷用戶發送消息的類型(普通消息、事件推送)*/ $MsgType = strtolower($postObj->MsgType); $Event = strtolower($postObj->Event); if(isset($Event)){ /*事件推送*/ switch($Event){ case 'subscribe' : /*return '訂閱事件(掃描帶參數二維碼事件(用戶未關注))';*/ $template = '<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> </xml>'; break; case 'unsubscribe' : /*return '取消訂閱事件';*/ $template ='<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[unsubscribe]]></Event> </xml>'; break; case 'scan' : /*return '掃描帶參數二維碼事件(用戶已關注)';*/ $template = '<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> <EventKey><![CDATA[qrscene_123123]]></EventKey> <Ticket><![CDATA[TICKET]]></Ticket> </xml>'; break; case 'location' : /*return '上報地理位置事件';*/ $template = '<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[LOCATION]]></Event> <Latitude>23.137466</Latitude> <Longitude>113.352425</Longitude> <Precision>119.385040</Precision> </xml>'; break; case 'click' : /*return '自定義菜單事件(點擊菜單拉取消息時的事件推送)';*/ $template = '<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[CLICK]]></Event> <EventKey><![CDATA[EVENTKEY]]></EventKey> </xml>'; break; case 'view' : /*return '自定義菜單事件(點擊菜單跳轉連接時的事件推送)';*/ $template = '<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[VIEW]]></Event> <EventKey><![CDATA[www.qq.com]]></EventKey> </xml>'; break; case 'scancode_push' : /*return '自定義菜單事件(掃碼推事件的事件推送 )'*/ $template = '<xml> <ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName> <FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName> <CreateTime>1408090502</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[scancode_push]]></Event> <EventKey><![CDATA[6]]></EventKey> <ScanCodeInfo> <ScanType><![CDATA[qrcode]]></ScanType> <ScanResult><![CDATA[1]]></ScanResult> </ScanCodeInfo> </xml>'; break; case 'scancode_waitmsg' : /*return '自定義菜單事件(掃碼推事件且彈出「消息接收中」提示框的事件推送 )'*/ $template = '<xml> <ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName> <FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName> <CreateTime>1408090606</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[scancode_waitmsg]]></Event> <EventKey><![CDATA[6]]></EventKey> <ScanCodeInfo> <ScanType><![CDATA[qrcode]]></ScanType> <ScanResult><![CDATA[2]]></ScanResult> </ScanCodeInfo> </xml>'; break; case 'pic_sysphoto' : /*return '自定義菜單事件(彈出系統拍照發圖的事件推送 )'*/ $template = '<xml> <ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName> <FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName> <CreateTime>1408090651</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[pic_sysphoto]]></Event> <EventKey><![CDATA[6]]></EventKey> <SendPicsInfo> <Count>1</Count> <PicList> <item> <PicMd5Sum><![CDATA[1b5f7c23b5bf75682a53e7b6d163e185]]></PicMd5Sum> </item> </PicList> </SendPicsInfo> </xml>'; break; case 'pic_photo_or_album' : /*return '自定義菜單事件(彈出拍照或者相冊發圖的事件推送 )'*/ $template = '<xml> <ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName> <FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName> <CreateTime>1408090816</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[pic_photo_or_album]]></Event> <EventKey><![CDATA[6]]></EventKey> <SendPicsInfo> <Count>1</Count> <PicList> <item> <PicMd5Sum><![CDATA[5a75aaca956d97be686719218f275c6b]]></PicMd5Sum> </item> </PicList> </SendPicsInfo> </xml>'; break; case 'pic_weixin' : /*return '自定義菜單事件(彈出微信相冊發圖器的事件推送 )'*/ $template = '<xml> <ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName> <FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName> <CreateTime>1408090816</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[pic_weixin]]></Event> <EventKey><![CDATA[6]]></EventKey> <SendPicsInfo> <Count>1</Count> <PicList> <item> <PicMd5Sum><![CDATA[5a75aaca956d97be686719218f275c6b]]></PicMd5Sum> </item> </PicList> </SendPicsInfo> </xml>'; break; case 'location_select' : /*return '自定義菜單事件(彈出地理位置選擇器的事件推送)'*/ $template = '<xml> <ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName> <FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName> <CreateTime>1408091189</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[location_select]]></Event> <EventKey><![CDATA[6]]></EventKey> <SendLocationInfo> <Location_X><![CDATA[23]]></Location_X> <Location_Y><![CDATA[113]]></Location_Y> <Scale><![CDATA[15]]></Scale> <Label><![CDATA[ 廣州市海珠區客村藝苑路 106號]]></Label> <Poiname><![CDATA[]]></Poiname> </SendLocationInfo> </xml>'; break; default : /*return '未知事件類型';*/ break; } }else{ /*普通消息(自動回覆擴展)*/ switch($MsgType){ case 'text' : /*return '文本信息';*/ $Content = '您發送的爲文本,內容爲:'.$postObj->Content; break; case 'image' : /*return '圖片消息';*/ $Content = '您發送的爲圖片,圖片連接爲:'.$postObj->PicUrl; break; case 'voice' : /*return '語音消息';*/ $Content = '您發送的爲語音,媒體ID爲:'.$postObj->MediaId; break; case 'video' : /*return '視頻消息';*/ $Content = '您發送的爲視頻,媒體ID爲:'.$postObj->MediaId; break; case 'shortvideo' : /*return '小視頻消息';*/ $Content = '您發送的爲小視頻,媒體ID爲:'.$postObj->MediaId; break; case 'location' : /*return '地理位置消息';*/ $Content = '您發送的爲地理位置消息,位置爲: '.$postObj->Label.'緯度爲: '.$postObj->Location_X.'經度爲: '.$postObj->Location_Y; break; case 'link' : /*return '連接消息';*/ $Content = '您發送的爲連接消息,標題爲: '.$postObj->Title.'內容爲: '.$postObj->Description.'連接地址爲: '.$postObj->Url; break; default : /*return '未知消息類型';*/ $Content = '抱歉,請從新輸入!'; break; } } /*響應消息*/ $FromUserName = $postObj->ToUserName; $ToUserName = $postObj->FromUserName; $MsgType = 'text'; /*暫時響應均利用文本消息的形式*/ $CreateTime = time(); $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType,$Content); echo $info; } /** * @FunctionDescription:發送(回覆)消息 * @Param:回覆消息類型(回覆圖文消息,需添加第二個參數 類型爲array 四個字段(title、description、picUrl、url) ) * @Return: * @Description:根據回覆消息選定的類型進行特定類型的回覆 * @Author:helen zheng */ public function transmitMsg($MsgType,$array=null){ /*1,獲取到微信推送過來post數據(xml格式)*/ $postArr = $GLOBALS['HTTP_RAW_POST_DATA']; /*2,處理消息類型,並設置回覆類型和內容*/ $postObj = simplexml_load_string($postArr); /*判斷用戶發送消息的類型(普通消息、事件推送)*/ /*響應消息*/ $FromUserName = $postObj->ToUserName; $ToUserName = $postObj->FromUserName; $CreateTime = time(); switch($MsgType){ /*回覆消息*/ case 'text' : /*return '文本信息';*/ $Content = ''; $template = '<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>'; $info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType,$Content); break; case 'image' : /*return '圖片消息';*/ $MediaId = ''; $template = '<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Image> <MediaId><![CDATA[%s]]></MediaId> </Image> </xml>'; $info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType,$MediaId); break; case 'voice' : /*return '語音消息';*/ $MediaId = ''; $template = '<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Voice> <MediaId><![CDATA[%s]]></MediaId> </Voice> </xml>'; $info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType,$MediaId); break; case 'video' : /*return '視頻消息';*/ $MediaId = ''; $Title = ''; $Description = ''; $template = '<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Video> <MediaId><![CDATA[%s]]></MediaId> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> </Video> </xml>'; $info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType,$MediaId,$Title,$Description); break; case 'music' : /*return '音樂消息';*/ $Title = ''; $Description = ''; $MusicUrl = ''; $HQMusicUrl = ''; $ThumbMediaId = ''; $template = '<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Music> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <MusicUrl><![CDATA[%s]]></MusicUrl> <HQMusicUrl><![CDATA[%s]]></HQMusicUrl> <ThumbMediaId><![CDATA[%s]]></ThumbMediaId> </Music> </xml>'; $info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType,$Title,$Description,$MusicUrl,$HQMusicUrl,$ThumbMediaId); case 'news' : /*return '圖文消息'(根據傳入的數據可發送多條圖文消息);*/ $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>".count($array)."</ArticleCount> <Articles>"; foreach($array as $key=>$value){ $template .="<item> <Title><![CDATA[".$value['title']."]]></Title> <Description><![CDATA[".$value['description']."]]></Description> <PicUrl><![CDATA[".$value['picUrl']."]]></PicUrl> <Url><![CDATA[".$value['url']."]]></Url> </item>"; } $template .="</Articles> </xml> "; $info = sprintf( $template, $ToUserName, $FromUserName, $CreateTime, $MsgType ); default : return '未知消息類型,請從新輸入'; } echo $info; } /** * @FunctionDescription:客服接口 * @Description:當用戶主動發消息給公衆號的時候(包括髮送信息、點擊自定義菜單、訂閱事件、掃描二維碼事件、支付成功事件、用戶維權),微信將會把消息數據推送給開發者, * @Description:開發者在一段時間內(目前修改成48小時)能夠調用客服消息接口,經過POST一個JSON數據包來發送消息給普通用戶,在48小時內不限制發送次數。 * @Author:helen zheng */ /** * @FunctionDescription:添加客服賬號(post) * @Param:access_token、custom_service_data(kf_account(完整客服帳號,格式爲:帳號前綴@公衆號微信號 )、nickname(客服暱稱,最長6個漢字或12個英文字符 )、password(客服帳號登陸密碼)) * @Return:0 (ok) * @Description:每一個公衆號最多添加10個客服帳號 * @Author:helen zheng */ public function customerServiceAccountAdd($access_token,$custom_service_data){ $url = 'https://api.weixin.qq.com/customservice/kfaccount/add?access_token='.$access_token; $result = $this->request_post($url,$custom_service_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:修改客服帳號(post) * @Param:access_token、custom_service_data(kf_account(完整客服帳號,格式爲:帳號前綴@公衆號微信號 )、nickname(客服暱稱,最長6個漢字或12個英文字符 )、password(客服帳號登陸密碼)) * @Return:0 (ok) * @Description: * @Author:helen zheng */ public function customerServiceAccountUpdate($access_token,$custom_service_data){ $url = 'https://api.weixin.qq.com/customservice/kfaccount/update?access_token='.$access_token; $result = $this->request_post($url,$custom_service_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:刪除客服賬號(get) * @Param: * @Return: * @Description: * @Author:helen zheng */ public function customerServiceAccountDelete($access_token){ $url = 'https://api.weixin.qq.com/customservice/kfaccount/del?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:設置客服賬號的頭像(post) * @Param:access_token,data(kf_account(客服帳號),img_data(圖片)) * @Return:0 (ok) * @Description:調用本接口來上傳圖片做爲客服人員的頭像,頭像圖片文件必須是jpg格式,推薦使用640*640大小的圖片以達到最佳效果。 * @Author:helen zheng */ public function customerServiceAccountImg($access_token,$kf_account,$img_data){ $url = 'http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token='.$access_token.'&kf_account='.$kf_account; $result = $this->request_post($url,$img_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取全部客服帳號(get) * @Param:access_token * @Return: * @Description:經過本接口,獲取公衆號中所設置的客服基本信息,包括客服工號、客服暱稱、客服登陸帳號。 * @Author:helen zheng */ public function customerServiceAccountList($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:客服接口-發消息(post) * @Param:access_token、data(touser、msgtype、content、media_id 、thumb_media_id ) * @Return: * @Description:發送消息類型:文本消息、圖片消息、語音消息、視頻消息、音樂消息、圖文消息(點擊跳轉到外鏈/圖文消息頁面 圖文消息條數限制在8條之內,注意,若是圖文數超過8,則將會無響應。 )、發送卡券 * @Author:helen zheng */ public function customerServiceSend($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$access_token; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:高級羣發接口 * @Description:對於認證訂閱號,羣發接口天天可成功調用1次,這次羣發可選擇發送給所有用戶或某個分組; * @Description:對於認證服務號雖然開發者使用高級羣發接口的每日調用限制爲100次,可是用戶每個月只能接收4條,不管在公衆平臺網站上,仍是使用接口羣發,用戶每個月只能接收4條羣發消息,多於4條的羣發將對該用戶發送失敗; * @Author:helen zheng */ /** * @FunctionDescription:上傳圖文消息內的圖片獲取URL【訂閱號與服務號認證後都可用】(post) * @Param: access_token 是 調用接口憑證 media 是 form-data中媒體文件標識,有filename、filelength、content-type等信息 * @Return: url (上傳圖片的URL,可用於後續羣發中,放置到圖文消息中)。 * @Description:本接口所上傳的圖片不佔用公衆號的素材庫中圖片數量的5000個的限制。圖片僅支持jpg/png格式,大小必須在1MB如下。 * @Author:helen zheng */ public function uploadImg($access_token,$img_data){ $url = 'https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token='.$access_token; $result = $this->request_post($url,$img_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:上傳圖文消息素材【訂閱號與服務號認證後都可用】(post) * @Param: Articles 是 圖文消息,一個圖文消息支持1到8條圖文 thumb_media_id 是 圖文消息縮略圖的media_id,能夠在基礎支持-上傳多媒體文件接口中得到 author 否 圖文消息的做者 title 是 圖文消息的標題 content_source_url 否 在圖文消息頁面點擊「閱讀原文」後的頁面 content 是 圖文消息頁面的內容,支持HTML標籤。具有微信支付權限的公衆號,可使用a標籤,其餘公衆號不能使用 digest 否 圖文消息的描述 show_cover_pic 否 是否顯示封面,1爲顯示,0爲不顯示 * @Return: type 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),次數爲news,即圖文消息 media_id 媒體文件/圖文消息上傳後獲取的惟一標識 created_at 媒體文件上傳時間 * @Description: * @Author:helen zheng */ public function uploadNews($access_token,$news_data){ $url = 'https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token='.$access_token; $result = $this->request_post($url,$news_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:根據分組進行羣發【訂閱號與服務號認證後都可用】(post) * @Param: filter 是 用於設定圖文消息的接收者 is_to_all 否 用於設定是否向所有用戶發送,值爲true或false,選擇true該消息羣發給全部用戶,選擇false可根據group_id發送給指定羣組的用戶 group_id 否 羣發到的分組的group_id,參加用戶管理中用戶分組接口,若is_to_all值爲true,可不填寫group_id mpnews 是 用於設定即將發送的圖文消息 media_id 是 用於羣發的消息的media_id msgtype 是 羣發的消息類型,圖文消息爲mpnews,文本消息爲text,語音爲voice,音樂爲music,圖片爲image,視頻爲video,卡券爲wxcard title 否 消息的標題 description 否 消息的描述 thumb_media_id 是 視頻縮略圖的媒體ID * @Return: type 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),圖文消息爲news errcode 錯誤碼 errmsg 錯誤信息 msg_id 消息發送任務的ID msg_data_id 消息的數據ID,該字段只有在羣發圖文消息時,纔會出現。能夠用於在圖文分析數據接口中,獲取到對應的圖文消息的數據,是圖文分析數據接口中的msgid字段中的前半部分,詳見圖文分析數據接口中的msgid字段的介紹。 * @Description: * @Author:helen zheng */ public function sendallByGroups($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token='.$access_token; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:根據OpenID列表羣發【訂閱號不可用,服務號認證後可用】(post) * @Param: touser 是 填寫圖文消息的接收者,一串OpenID列表,OpenID最少2個,最多10000個 mpnews 是 用於設定即將發送的圖文消息 media_id 是 用於羣發的圖文消息的media_id msgtype 是 羣發的消息類型,圖文消息爲mpnews,文本消息爲text,語音爲voice,音樂爲music,圖片爲image,視頻爲video,卡券爲wxcard title 否 消息的標題 description 否 消息的描述 thumb_media_id 是 視頻縮略圖的媒體ID * @Return: type 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),次數爲news,即圖文消息 errcode 錯誤碼 errmsg 錯誤信息 msg_id 消息發送任務的ID msg_data_id 消息的數據ID,,該字段只有在羣發圖文消息時,纔會出現。能夠用於在圖文分析數據接口中,獲取到對應的圖文消息的數據,是圖文分析數據接口中的msgid字段中的前半部分,詳見圖文分析數據接口中的msgid字段的介紹。 * @Description: * @Author:helen zheng */ public function sendallByOpenID($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token='.$access_token; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:刪除羣發【訂閱號與服務號認證後都可用】(post) * @Param: msg_id 是 發送出去的消息ID * @Return: 0 (ok) * @Description:羣發只有在剛發出的半小時內能夠刪除,發出半小時以後將沒法被刪除。 * @Author:helen zheng */ public function sendallDelete($access_token,$msg_id){ $url = 'https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token='.$access_token; $result = $this->request_post($url,$msg_id); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:預覽接口【訂閱號與服務號認證後都可用】(post) * @Param: touser 接收消息用戶對應該公衆號的openid,該字段也能夠改成towxname,以實現對微信號的預覽 msgtype 羣發的消息類型,圖文消息爲mpnews,文本消息爲text,語音爲voice,音樂爲music,圖片爲image,視頻爲video,卡券爲wxcard media_id 用於羣發的消息的media_id content 發送文本消息時文本的內容 * @Return: msg_id 消息ID * @Description:開發者可經過該接口發送消息給指定用戶,在手機端查看消息的樣式和排版。爲了知足第三方平臺開發者的需求,在保留對openID預覽能力的同時,增長了對指定微信號發送預覽的能力,但該能力每日調用次數有限制(100次),請勿濫用。 * @Author:helen zheng */ public function preview($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token='.$access_token; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:查詢羣發消息發送狀態【訂閱號與服務號認證後都可用】(post) * @Param: msg_id 羣發消息後返回的消息id * @Return: msg_id 羣發消息後返回的消息id msg_status 消息發送後的狀態,SEND_SUCCESS表示發送成功 * @Description: * @Author:helen zheng */ public function sendallStatus($access_token,$msg_id){ $url = 'https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token='.$access_token; $result = $this->request_post($url,$msg_id); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:模板消息接口(post) * @Description:模板消息僅用於公衆號向用戶發送重要的服務通知,只能用於符合其要求的服務場景中. * @Description:只有認證後的服務號才能夠申請模板消息的使用權限並得到該權限; * @Author:helen zheng */ /** * @FunctionDescription:設置所屬行業(post) * @Param: industry_id1 是 公衆號模板消息所屬行業編號 industry_id2 是 公衆號模板消息所屬行業編號 * @Return: * @Description:設置行業可在MP中完成,每個月可修改行業1次,帳號僅可以使用所屬行業中相關的模板 * @Author:helen zheng */ public function setIndustry($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token='.$access_token; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:得到模板ID(post) * @Param: template_id_short 是 模板庫中模板的編號,有「TM**」和「OPENTMTM**」等形式 * @Return:template_id * @Description: * @Author:helen zheng */ public function getTemplateId($access_token,$template_id_short){ $url = 'https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token='.$access_token; $result = $this->request_post($url,$template_id_short); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:發送模板消息(post) * @Param: * @Return: msgid * @Description: * @Author:helen zheng */ public function sendTemplateMsg($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$access_token; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取自動回覆規則(get) * @Param: * @Return: is_add_friend_reply_open 關注後自動回覆是否開啓,0表明未開啓,1表明開啓 is_autoreply_open 消息自動回覆是否開啓,0表明未開啓,1表明開啓 add_friend_autoreply_info 關注後自動回覆的信息 type 自動回覆的類型。關注後自動回覆和消息自動回覆的類型僅支持文本(text)、圖片(img)、語音(voice)、視頻(video),關鍵詞自動回覆則還多了圖文消息(news) content 對於文本類型,content是文本內容,對於圖文、圖片、語音、視頻類型,content是mediaID message_default_autoreply_info 消息自動回覆的信息 keyword_autoreply_info 關鍵詞自動回覆的信息 rule_name 規則名稱 create_time 建立時間 reply_mode 回覆模式,reply_all表明所有回覆,random_one表明隨機回覆其中一條 keyword_list_info 匹配的關鍵詞列表 match_mode 匹配模式,contain表明消息中含有該關鍵詞便可,equal表示消息內容必須和關鍵詞嚴格相同 news_info 圖文消息的信息 title 圖文消息的標題 digest 摘要 author 做者 show_cover 是否顯示封面,0爲不顯示,1爲顯示 cover_url 封面圖片的URL content_url 正文的URL source_url 原文的URL,若置空則無查看原文入口 * @Description:開發者能夠經過該接口,獲取公衆號當前使用的自動回覆規則,包括關注後自動回覆、消息自動回覆(60分鐘內觸發一次)、關鍵詞自動回覆。 * @Author:helen zheng */ public function getCurrentAutoreplyInfo($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/get_current_autoreply_info?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:素材管理 * @Description:對多媒體文件、多媒體消息的獲取和調用等操做,是經過media_id來進行的。 * @Description:素材管理接口對全部認證的訂閱號和服務號開放(注:自定義菜單接口和素材管理接口向第三方平臺旗下未認證訂閱號開放)。 * @Description:圖片大小不超過2M,支持bmp/png/jpeg/jpg/gif格式,語音大小不超過5M,長度不超過60秒,支持mp3/wma/wav/amr格式 * @Author:helen zheng */ /** * @FunctionDescription:新增臨時素材(本接口即爲原「上傳多媒體文件」接口。)(post) * @Param: access_token 是 調用接口憑證 type 是 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb) media 是 form-data中媒體文件標識,有filename、filelength、content-type等信息 * @Return: type 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb,主要用於視頻與音樂格式的縮略圖) media_id 媒體文件上傳後,獲取時的惟一標識 created_at 媒體文件上傳時間戳 * @Description:對於臨時素材,每一個素材(media_id)會在開發者上傳或粉絲髮送到微信服務器3天后自動刪除。media_id是可複用的。 * @Description:上傳的臨時多媒體文件有格式和大小限制,以下: 圖片(image): 1M,支持JPG格式 語音(voice):2M,播放長度不超過60s,支持AMR\MP3格式 視頻(video):10MB,支持MP4格式 縮略圖(thumb):64KB,支持JPG格式 * @Author:helen zheng */ public function mediaUpload($access_token,$type,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$access_token.'&type='.$type; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取臨時素材 (本接口即爲原「下載多媒體文件」接口。)(get) * @Param: access_token 是 調用接口憑證 media_id 是 媒體文件ID * @Return: * @Description:使用本接口獲取臨時素材(即下載臨時的多媒體文件)。請注意,視頻文件不支持https下載,調用該接口需http協議。 * @Author:helen zheng */ public function mediaGet($access_token,$media_id){ $url = 'https://api.weixin.qq.com/cgi-bin/media/get?access_token='.$access_token.'&media_id='.$media_id; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:新增永久圖文素材(post) * @Param: title 是 標題 thumb_media_id 是 圖文消息的封面圖片素材id(必須是永久mediaID) author 是 做者 digest 是 圖文消息的摘要,僅有單圖文消息纔有摘要,多圖文此處爲空 show_cover_pic 是 是否顯示封面,0爲false,即不顯示,1爲true,即顯示 content 是 圖文消息的具體內容,支持HTML標籤,必須少於2萬字符,小於1M,且此處會去除JS content_source_url 是 圖文消息的原文地址,即點擊「閱讀原文」後的URL * @Return: media_id 返回的即爲新增的圖文消息素材的media_id。 * @Description:永久素材的數量是有上限的,請謹慎新增。圖文消息素材和圖片素材的上限爲5000,其餘類型爲1000.素材的格式大小等要求與公衆平臺官網一致。 * @Author:helen zheng */ public function addPermanentGraphicMaterial($access_token,$news_data){ $url = 'https://api.weixin.qq.com/cgi-bin/material/add_news?access_token='.$access_token; $result = $this->request_post($url,$news_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:新增其餘類型永久素材(post) * @Param: access_token 是 調用接口憑證 type 是 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb) media 是 form-data中媒體文件標識,有filename、filelength、content-type等信息 * @Return: * @Description:經過POST表單來調用接口,表單id爲media,包含須要上傳的素材內容,有filename、filelength、content-type等信息。 * @Description:請注意:圖片素材將進入公衆平臺官網素材管理模塊中的默認分組。 * @Author:helen zheng */ public function addPermanentOtherMaterial($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN'; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取永久素材(post) * @Param: access_token 是 調用接口憑證 media_id 是 要獲取的素材的media_id * @Return: title 圖文消息的標題 thumb_media_id 圖文消息的封面圖片素材id(必須是永久mediaID) show_cover_pic 是否顯示封面,0爲false,即不顯示,1爲true,即顯示 author 做者 digest 圖文消息的摘要,僅有單圖文消息纔有摘要,多圖文此處爲空 content 圖文消息的具體內容,支持HTML標籤,必須少於2萬字符,小於1M,且此處會去除JS url 圖文頁的URL content_source_url 圖文消息的原文地址,即點擊「閱讀原文」後的URL * @Description: * @Author:helen zheng */ public function getPermanentMaterial($access_token,$media_id){ $url = 'https://api.weixin.qq.com/cgi-bin/material/get_material?access_token='.$access_token; $result = $this->request_post($url,$media_id); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:刪除永久素材(post) * @Param: access_token 是 調用接口憑證 media_id 是 要獲取的素材的media_id * @Return: * @Description: * @Author:helen zheng */ public function deletePermanentMaterial($access_token,$media_id){ $url = 'https://api.weixin.qq.com/cgi-bin/material/del_material?access_token='.$access_token; $result = $this->request_post($url,$media_id); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:修改永久圖文素材(post) * @Param: media_id 是 要修改的圖文消息的id index 是 要更新的文章在圖文消息中的位置(多圖文消息時,此字段纔有意義),第一篇爲0 title 是 標題 thumb_media_id 是 圖文消息的封面圖片素材id(必須是永久mediaID) author 是 做者 digest 是 圖文消息的摘要,僅有單圖文消息纔有摘要,多圖文此處爲空 show_cover_pic 是 是否顯示封面,0爲false,即不顯示,1爲true,即顯示 content 是 圖文消息的具體內容,支持HTML標籤,必須少於2萬字符,小於1M,且此處會去除JS content_source_url 是 圖文消息的原文地址,即點擊「閱讀原文」後的URL * @Return: 0 (ok) * @Description: * @Author:helen zheng */ public function updatePermanentGraphicMaterial($access_token,$news_data){ $url = 'https://api.weixin.qq.com/cgi-bin/material/update_news?access_token='.$access_token; $result = $this->request_post($url,$news_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取素材總數(get) * @Param: * @Return: voice_count 語音總數量 video_count 視頻總數量 image_count 圖片總數量 news_count 圖文總數量 * @Description:開發者能夠根據本接口來獲取永久素材的列表.1.永久素材的總數,也會計算公衆平臺官網素材管理中的素材 2.圖片和圖文消息素材(包括單圖文和多圖文)的總數上限爲5000,其餘素材的總數上限爲1000 3.調用該接口需https協議 * @Author:helen zheng */ public function getPermanentMaterialCount($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取素材列表 * @Param: type 是 素材的類型,圖片(image)、視頻(video)、語音 (voice)、圖文(news) offset 是 從所有素材的該偏移位置開始返回,0表示從第一個素材 返回 count 是 返回素材的數量,取值在1到20之間 * @Return: total_count 該類型的素材的總數 item_count 本次調用獲取的素材的數量 title 圖文消息的標題 thumb_media_id 圖文消息的封面圖片素材id(必須是永久mediaID) show_cover_pic 是否顯示封面,0爲false,即不顯示,1爲true,即顯示 author 做者 digest 圖文消息的摘要,僅有單圖文消息纔有摘要,多圖文此處爲空 content 圖文消息的具體內容,支持HTML標籤,必須少於2萬字符,小於1M,且此處會去除JS url 圖文頁的URL,或者,當獲取的列表是圖片素材列表時,該字段是圖片的URL content_source_url 圖文消息的原文地址,即點擊「閱讀原文」後的URL update_time 這篇圖文消息素材的最後更新時間 name 文件名稱 * @Description:開發者能夠分類型獲取永久素材的列表。 * @Author:helen zheng */ public function getPermanentMaterialList($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token='.$access_token; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:用戶管理 * @Description:開發者可使用接口,對公衆平臺的分組進行查詢、建立、修改、刪除等操做,也可使用接口在須要時移動用戶到某個分組。 * @Author:helen zheng */ /** * @FunctionDescription:建立分組(post) * @Param: access_token 調用接口憑證 name 分組名字(30個字符之內) * @Return: id 分組id,由微信分配 name 分組名字,UTF8編碼 * @Description:一個公衆帳號,最多支持建立100個分組。 * @Author:helen zheng */ public function createGroups($access_token,$group_data){ $url = 'https://api.weixin.qq.com/cgi-bin/groups/create?access_token='.$access_token; $result = $this->request_post($url,$group_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:查詢全部分組(get) * @Param: access_token 調用接口憑證 * @Return: groups 公衆平臺分組信息列表 id 分組id,由微信分配 name 分組名字,UTF8編碼 count 分組內用戶數量 * @Description: * @Author:helen zheng */ public function getGroups($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/groups/get?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:查詢用戶所在分組(post) * @Param: access_token 調用接口憑證 openid 用戶的OpenID * @Return: groupid 用戶所屬的groupid * @Description: * @Author:helen zheng */ public function getGroupId($access_token,$openid){ $url = 'https://api.weixin.qq.com/cgi-bin/groups/getid?access_token='.$access_token; $result = $this->request_post($url,$openid); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:修改分組名(post) * @Param: access_token 調用接口憑證 id 分組id,由微信分配 name 分組名字(30個字符之內) * @Return: * @Description: * @Author:helen zheng */ public function updateGroupsName($access_token,$group_data){ $url = 'https://api.weixin.qq.com/cgi-bin/groups/update?access_token='.$access_token; $result = $this->request_post($url,$group_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:移動用戶分組(post) * @Param: access_token 調用接口憑證 openid 用戶惟一標識符 to_groupid 分組id * @Return: * @Description: * @Author:helen zheng */ public function updateGroupsUser($access_token,$user_data){ $url = 'https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token='.$access_token; $result = $this->request_post($url,$user_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:批量移動用戶分組(post) * @Param: access_token 調用接口憑證 openid_list 用戶惟一標識符openid的列表(size不能超過50) to_groupid 分組id * @Return: * @Description: * @Author:helen zheng */ public function batchupdateGroupsUser($access_token,$user_data){ $url = 'https://api.weixin.qq.com/cgi-bin/groups/members/batchupdate?access_token='.$access_token; $result = $this->request_post($url,$user_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:刪除分組(post) * @Param: access_token 調用接口憑證 group 分組 id 分組的id * @Return: * @Description:本接口是刪除一個用戶分組,刪除分組後,全部該分組內的用戶自動進入默認分組。 * @Author:helen zheng */ public function deleteGroups($access_token,$group_data){ $url = 'https://api.weixin.qq.com/cgi-bin/groups/delete?access_token='.$access_token; $result = $this->request_post($url,$group_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:設置用戶備註名(post) * @Param: access_token 調用接口憑證 openid 用戶標識 remark 新的備註名,長度必須小於30字符 * @Return: * @Description:開發者能夠經過該接口對指定用戶設置備註名,該接口暫時開放給微信認證的服務號。 * @Author:helen zheng */ public function updateUserRemark($access_token,$user_data){ $url = 'https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token='.$access_token; $result = $this->request_post($url,$user_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取用戶基本信息(包括UnionID機制)(get) * @Param: access_token 是 調用接口憑證 openid 是 普通用戶的標識,對當前公衆號惟一 lang 否 返回國家地區語言版本,zh_CN 簡體,zh_TW 繁體,en 英語 * @Return: subscribe 用戶是否訂閱該公衆號標識,值爲0時,表明此用戶沒有關注該公衆號,拉取不到其他信息。 openid 用戶的標識,對當前公衆號惟一 nickname 用戶的暱稱 sex 用戶的性別,值爲1時是男性,值爲2時是女性,值爲0時是未知 city 用戶所在城市 country 用戶所在國家 province 用戶所在省份 language 用戶的語言,簡體中文爲zh_CN headimgurl 用戶頭像,最後一個數值表明正方形頭像大小(有0、4六、6四、9六、132數值可選,0表明640*640正方形頭像),用戶沒有頭像時該項爲空。若用戶更換頭像,原有頭像URL將失效。 subscribe_time 用戶關注時間,爲時間戳。若是用戶曾屢次關注,則取最後關注時間 unionid 只有在用戶將公衆號綁定到微信開放平臺賬號後,纔會出現該字段。詳見:獲取用戶我的信息(UnionID機制) remark 公衆號運營者對粉絲的備註,公衆號運營者可在微信公衆平臺用戶管理界面對粉絲添加備註 groupid 用戶所在的分組ID * @Description:在關注者與公衆號產生消息交互後,公衆號可得到關注者的OpenID(加密後的微信號,每一個用戶對每一個公衆號的OpenID是惟一的。對於不一樣公衆號,同一用戶的openid不一樣)。 * @Description:公衆號可經過本接口來根據OpenID獲取用戶基本信息,包括暱稱、頭像、性別、所在城市、語言和關注時間。 * @Description:若是開發者有在多個公衆號,或在公衆號、移動應用之間統一用戶賬號的需求,須要前往微信開放平臺(open.weixin.qq.com)綁定公衆號後,纔可利用UnionID機制來知足上述需求。 * @Author:helen zheng */ public function getUserInfo($access_token,$openid){ $url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN'; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:批量獲取用戶基本信息(post) * @Param: openid 是 用戶的標識,對當前公衆號惟一 * @Return: 同上 * @Description:開發者可經過該接口來批量獲取用戶基本信息。最多支持一次拉取100條。 * @Author:helen zheng */ public function batchgetUserInfo($access_token,$user_list){ $url = 'https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token='.$access_token; $result = $this->request_post($url,$user_list); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取用戶列表(get) * @Param: access_token 是 調用接口憑證 next_openid 是 第一個拉取的OPENID,不填默認從頭開始拉取 * @Return: total 關注該公衆帳號的總用戶數 count 拉取的OPENID個數,最大值爲10000 data 列表數據,OPENID的列表 next_openid 拉取列表的最後一個用戶的OPENID * @Description:公衆號可經過本接口來獲取賬號的關注者列表,關注者列表由一串OpenID(加密後的微信號,每一個用戶對每一個公衆號的OpenID是惟一的)組成。 * @Description:一次拉取調用最多拉取10000個關注者的OpenID,能夠經過屢次拉取的方式來知足需求。 * @Author:helen zheng */ public function getUserList($access_token,$next_openid=null){ $url = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token='.$access_token.'&next_openid='.$next_openid; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:自定義菜單接口 * @Description:自定義菜單最多包括3個一級菜單,每一個一級菜單最多包含5個二級菜單。一級菜單最多4個漢字,二級菜單最多7個漢字. * @Description:建立自定義菜單後,因爲微信客戶端緩存,須要24小時微信客戶端纔會展示出來 * @Author:helen zheng */ /** * @FunctionDescription:自定義菜單建立接口(post) * @Param:menu_data( button(一級菜單數組)、sub_button[二級菜單數組]、type(菜單的響應動做類型 )、name (菜單標題,不超過16個字節,子菜單不超過40個字節 ) ) * @Param:menu_data(key (click等點擊類型必須 、菜單KEY值,用於消息接口推送,不超過128字節 )、url(view類型必須 網頁連接,用戶點擊菜單可打開連接,不超過256字節 )、media_id (media_id類型和view_limited類型必須 調用新增永久素材接口返回的合法media_id ) ) * @Return:0 (ok) * @Description:按鈕類型:click:點擊推事件;view:跳轉URL;scancode_push:掃碼推事件;scancode_waitmsg:掃碼推事件且彈出「消息接收中」提示框;pic_sysphoto:彈出系統拍照發圖 * @Description:按鈕類型:pic_photo_or_album:彈出拍照或者相冊發圖;pic_weixin:彈出微信相冊發圖器;location_select:彈出地理位置選擇器;media_id:下發消息(除文本消息);view_limited:跳轉圖文消息URL * @Author:helen zheng */ public function customMenuEdit($menu_data,$access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$access_token; $result = $this->request_post($url,$menu_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:自定義菜單查詢接口(get) * @Param:access_token * @Return:自定義菜單信息 * @Description:查詢自定義菜單的結構。 * @Author:helen zheng */ public function customMenuSearch($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/menu/get?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:自定義菜單刪除接口(get) * @Param:access_token * @Return:0 (ok) * @Description:刪除當前使用的自定義菜單。 * @Author:helen zheng */ public function customMenuDelete($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取自定義菜單配置接口(get) * @Param:access_token * @Return:is_menu_open(菜單是否開啓,0表明未開啓,1表明開啓 )、selfmenu_info(菜單信息 )、button (菜單按鈕 )、type (菜單的類型)、name (菜單名稱 )、value、url、key等字段 * @Return:news_info(圖文消息的信息 )、title(圖文消息的標題 )、digest(摘要 )、author (做者)、show_cover (是否顯示封面,0爲不顯示,1爲顯示 )、cover_url( 封面圖片的URL )、content_url( 正文的URL )、source_url( 原文的URL,若置空則無查看原文入口) * @Description:本接口將會提供公衆號當前使用的自定義菜單的配置,若是公衆號是經過API調用設置的菜單,則返回菜單的開發配置,而若是公衆號是在公衆平臺官網經過網站功能發佈菜單,則本接口返回運營者設置的菜單配置。 * @Author:helen zheng */ public function customMenuList($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token='.$access_token; $result = $this->request_get($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:帳號管理 * @Description:生成帶參數的二維碼、長連接轉短連接接口、微信認證事件推送 * @Author:helen zheng */ /** * @FunctionDescription:建立二維碼ticket * @Param: expire_seconds 該二維碼有效時間,以秒爲單位。 最大不超過2592000(即30天),此字段若是不填,則默認有效期爲30秒。 action_name 二維碼類型,QR_SCENE爲臨時,QR_LIMIT_SCENE爲永久,QR_LIMIT_STR_SCENE爲永久的字符串參數值 action_info 二維碼詳細信息 scene_id 場景值ID,臨時二維碼時爲32位非0整型,永久二維碼時最大值爲100000(目前參數只支持1--100000) scene_str 場景值ID(字符串形式的ID),字符串類型,長度限制爲1到64,僅永久二維碼支持此字段 * @Return: ticket 獲取的二維碼ticket,憑藉此ticket能夠在有效時間內換取二維碼。 expire_seconds 該二維碼有效時間,以秒爲單位。 最大不超過2592000(即30天)。 url 二維碼圖片解析後的地址,開發者可根據該地址自行生成須要的二維碼圖片 * @Description: * @Author:helen zheng */ public function createQrcodeTicket($access_token,$qrcode_data){ $url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$access_token; $result = $this->request_post($url,$qrcode_data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:經過ticket換取二維碼 * @Param:ticket * @Return: * @Description:獲取二維碼ticket後,開發者可用ticket換取二維碼圖片。TICKET記得進行UrlEncode * @Author:helen zheng */ public function getQrcode($ticket){ $url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.$ticket; $result = $this->downloadFile($url); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:長連接轉短連接接口(post) * @Param: access_token 是 調用接口憑證 action 是 此處填long2short,表明長連接轉短連接 long_url 是 須要轉換的長連接,支持http://、https://、weixin://wxpay 格式的url * @Return: short_url 短連接。 * @Description:將一條長連接轉成短連接。主要使用場景: 開發者用於生成二維碼的原連接(商品、支付二維碼等)太長致使掃碼速度和成功率降低,將原長連接經過此接口轉成短連接再生成二維碼將大大提高掃碼速度和成功率。 * @Description: * @Author:helen zheng */ public function shortUrl($access_token,$data){ $url = 'https://api.weixin.qq.com/cgi-bin/shorturl?access_token='.$access_token; $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:數據統計 * @Description:用戶分析數據接口、圖文分析數據接口、消息分析數據接口、接口分析數據接口 * @Author:helen zheng */ /** * @FunctionDescription:獲取用戶增減數據(post) * @Param: access_token 是 調用接口憑證 begin_date 是 獲取數據的起始日期,begin_date和end_date的差值需小於「最大時間跨度」(好比最大時間跨度爲1時,begin_date和end_date的差值只能爲0,才能小於1),不然會報錯 end_date 是 獲取數據的結束日期,end_date容許設置的最大值爲昨日 * @Return: ref_date 數據的日期 user_source 用戶的渠道,數值表明的含義以下:0表明其餘(包括帶參數二維碼) 3表明掃二維碼 17表明名片分享 35表明搜號碼(即微信添加朋友頁的搜索) 39表明查詢微信公衆賬號 43表明圖文頁右上角菜單 new_user 新增的用戶數量 cancel_user 取消關注的用戶數量,new_user減去cancel_user即爲淨增用戶數量 cumulate_user 總用戶量 * @Description:最大時間跨度(7) * @Author:helen zheng */ public function getUserSummary($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getusersummary?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取累計用戶數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(7) * @Author:helen zheng */ public function getUserCumulate($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getusercumulate?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取圖文羣發每日數據(post) * @Param: access_token 是 調用接口憑證 begin_date 是 獲取數據的起始日期,begin_date和end_date的差值需小於「最大時間跨度」(好比最大時間跨度爲1時,begin_date和end_date的差值只能爲0,才能小於1),不然會報錯 end_date 是 獲取數據的結束日期,end_date容許設置的最大值爲昨日 * @Return: ref_date 數據的日期,需在begin_date和end_date之間 ref_hour 數據的小時,包括從000到2300,分別表明的是[000,100)到[2300,2400),即每日的第1小時和最後1小時 stat_date 統計的日期,在getarticletotal接口中,ref_date指的是文章羣發出日期, 而stat_date是數據統計日期 msgid 請注意:這裏的msgid其實是由msgid(圖文消息id,這也就是羣發接口調用後返回的msg_data_id)和index(消息次序索引)組成, 例如12003_3, 其中12003是msgid,即一次羣發的消息的id; 3爲index,假設該次羣發的圖文消息共5個文章(由於可能爲多圖文),3表示5箇中的第3個 title 圖文消息的標題 int_page_read_user 圖文頁(點擊羣發圖文卡片進入的頁面)的閱讀人數 int_page_read_count 圖文頁的閱讀次數 ori_page_read_user 原文頁(點擊圖文頁「閱讀原文」進入的頁面)的閱讀人數,無原文頁時此處數據爲0 ori_page_read_count 原文頁的閱讀次數 share_scene 分享的場景 1表明好友轉發 2表明朋友圈 3表明騰訊微博 255表明其餘 share_user 分享的人數 share_count 分享的次數 add_to_fav_user 收藏的人數 add_to_fav_count 收藏的次數 target_user 送達人數,通常約等於總粉絲數(需排除黑名單或其餘異常狀況下沒法收到消息的粉絲) user_source 在獲取圖文閱讀分時數據時纔有該字段,表明用戶從哪裏進入來閱讀該圖文。0:會話;1.好友;2.朋友圈;3.騰訊微博;4.歷史消息頁;5.其餘 * @Description:最大時間跨度(1) * @Author:helen zheng */ public function getArticleSummary($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getarticlesummary?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取圖文羣發總數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(1) * @Author:helen zheng */ public function getArticleTotal($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getarticletotal?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取圖文統計數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(3) * @Author:helen zheng */ public function getUserRead($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getuserread?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取圖文統計分時數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(1) * @Author:helen zheng */ public function getUserReadHour($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getuserreadhour?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取圖文分享轉發數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(7) * @Author:helen zheng */ public function getUserShare($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getusershare?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取圖文分享轉發分時數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(1) * @Author:helen zheng */ public function getUserShareHour($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getusersharehour?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取消息發送概況數據(post) * @Param: access_token 是 調用接口憑證 begin_date 是 獲取數據的起始日期,begin_date和end_date的差值需小於「最大時間跨度」(好比最大時間跨度爲1時,begin_date和end_date的差值只能爲0,才能小於1),不然會報錯 end_date 是 獲取數據的結束日期,end_date容許設置的最大值爲昨日 * @Return: ref_date 數據的日期,需在begin_date和end_date之間 ref_hour 數據的小時,包括從000到2300,分別表明的是[000,100)到[2300,2400),即每日的第1小時和最後1小時 msg_type 消息類型,表明含義以下:1表明文字 2表明圖片 3表明語音 4表明視頻 6表明第三方應用消息(連接消息) msg_user 上行發送了(向公衆號發送了)消息的用戶數 msg_count 上行發送了消息的消息總數 count_interval 當日發送消息量分佈的區間,0表明 「0」,1表明「1-5」,2表明「6-10」,3表明「10次以上」 int_page_read_count 圖文頁的閱讀次數 ori_page_read_user 原文頁(點擊圖文頁「閱讀原文」進入的頁面)的閱讀人數,無原文頁時此處數據爲0 * @Description:最大時間跨度(7) * @Author:helen zheng */ public function getUpStreamMsg($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getupstreammsg?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取消息分送分時數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(1) * @Author:helen zheng */ public function getUpstreamMsgHour($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getupstreammsghour?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取消息發送週數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(30) * @Author:helen zheng */ public function getUpstreamMsgWeek($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getupstreammsgweek?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取消息發送月數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(30) * @Author:helen zheng */ public function getUpstreamMsgMonth($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getupstreammsgmonth?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取消息發送分佈數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(15) * @Author:helen zheng */ public function getUpstreamMsgDist($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getupstreammsgdist?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取消息發送分佈週數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(30) * @Author:helen zheng */ public function getUpstreamMsgDistWeek($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getupstreammsgdistweek?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取消息發送分佈月數據(post) * @Param:同上 * @Return:同上 * @Description:最大時間跨度(30) * @Author:helen zheng */ public function getUpstreamMsgDistMonth($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getupstreammsgdistmonth?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取接口分析數據(post) * @Param: access_token 是 調用接口憑證 begin_date 是 獲取數據的起始日期,begin_date和end_date的差值需小於「最大時間跨度」(好比最大時間跨度爲1時,begin_date和end_date的差值只能爲0,才能小於1),不然會報錯 end_date 是 獲取數據的結束日期,end_date容許設置的最大值爲昨日 * @Return: ref_date 數據的日期 ref_hour 數據的小時 callback_count 經過服務器配置地址得到消息後,被動回覆用戶消息的次數 fail_count 上述動做的失敗次數 total_time_cost 總耗時,除以callback_count即爲平均耗時 max_time_cost 最大耗時 * @Description:最大時間跨度(30) * @Author:helen zheng */ public function getInterfaceSummary($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getinterfacesummary?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:獲取接口分析分時數據(post) * @Param: * @Return: * @Description:最大時間跨度(1) * @Author:helen zheng */ public function getInterfaceSummaryHour($access_token,$begin_date,$end_date){ $url = 'https://api.weixin.qq.com/datacube/getinterfacesummaryhour?access_token='.$access_token; $data = array( "begin_date"=>$begin_date, "end_date"=>$end_date ); $data = json_encode($data); $result = $this->request_post($url,$data); $res = $this->resultProcess($result); if($res==$result){ /*接口返回值*/ return($result); }else{ /*接口調用錯誤信息*/ return($res); } } /** * @FunctionDescription:接口調用結果處理函數(判斷接口調用成功與否並處理) * @Param:接口調用返回值(json) * @Return:結果處理後信息(json或string) * @Description:假如接口調用成功,則本函數正常返回值;假如接口調用失敗,返回錯誤信息。 * @Author:helen zheng */ function resultProcess($res){ if(!empty($res->errcode)){ return ($this->errorMsg($res->errcode)); }else{ return $res; } } /** * @FunctionDescription:微信全局返回碼中文說明 * @Param:微信返回碼 * @Return:微信返回碼對應的中文說明 * @Description: * @Author:helen zheng */ function errorMsg($errcode) { switch ($errcode) { case -1 : return '系統繁忙,請稍候再試。'; case 0 : return '請求成功。'; case 40001 : return '獲取access_token時AppSecret錯誤,或者access_token無效。'; case 40002 : return '不合法的憑證類型。'; case 40003 : return '不合法的OpenID,請開發者確認OpenID(該用戶)是否已關注公衆號,或是不是其餘公衆號的OpenID。'; case 40004 : return '不合法的媒體文件類型'; case 40005 : return '不合法的文件類型'; case 40006 : return '不合法的文件大小'; case 40007 : return '不合法的媒體文件id '; case 40008 : return '不合法的消息類型 '; case 40009 : return '不合法的圖片文件大小'; case 40010 : return '不合法的語音文件大小'; case 40011 : return '不合法的視頻文件大小'; case 40012 : return '不合法的縮略圖文件大小'; case 40013 : return '不合法的APPID'; case 40014 : return '不合法的access_token '; case 40015 : return '不合法的菜單類型 '; case 40016 : return '不合法的按鈕個數 '; case 40017 : return '不合法的按鈕個數'; case 40018 : return '不合法的按鈕名字長度'; case 40019 : return '不合法的按鈕KEY長度 '; case 40020 : return '不合法的按鈕URL長度 '; case 40021 : return '不合法的菜單版本號'; case 40022 : return '不合法的子菜單級數'; case 40023 : return '不合法的子菜單按鈕個數'; case 40024 : return '不合法的子菜單按鈕類型'; case 40025 : return '不合法的子菜單按鈕名字長度'; case 40026 : return '不合法的子菜單按鈕KEY長度 '; case 40027 : return '不合法的子菜單按鈕URL長度 '; case 40028 : return '不合法的自定義菜單使用用戶'; case 40029 : return '不合法的oauth_code'; case 40030 : return '不合法的refresh_token'; case 40031 : return '不合法的openid列表 '; case 40032 : return '不合法的openid列表長度 '; case 40033 : return '不合法的請求字符,不能包含\uxxxx格式的字符 '; case 40035 : return '不合法的參數'; case 40038 : return '不合法的請求格式'; case 40039 : return '不合法的URL長度 '; case 40050 : return '不合法的分組id'; case 40051 : return '分組名字不合法'; case 41001 : return '缺乏access_token參數'; case 41002 : return '缺乏appid參數'; case 41003 : return '缺乏refresh_token參數'; case 41004 : return '缺乏secret參數'; case 41005 : return '缺乏多媒體文件數據'; case 41006 : return '缺乏media_id參數'; case 41007 : return '缺乏子菜單數據'; case 41008 : return '缺乏oauth code'; case 41009 : return '缺乏openid'; case 42001 : return 'access_token超時'; case 42002 : return 'refresh_token超時'; case 42003 : return 'oauth_code超時'; case 43001 : return '須要GET請求'; case 43002 : return '須要POST請求'; case 43003 : return '須要HTTPS請求'; case 43004 : return '須要接收者關注'; case 43005 : return '須要好友關係'; case 44001 : return '多媒體文件爲空'; case 44002 : return 'POST的數據包爲空'; case 44003 : return '圖文消息內容爲空'; case 44004 : return '文本消息內容爲空'; case 45001 : return '多媒體文件大小超過限制'; case 45002 : return '消息內容超過限制'; case 45003 : return '標題字段超過限制'; case 45004 : return '描述字段超過限制'; case 45005 : return '連接字段超過限制'; case 45006 : return '圖片連接字段超過限制'; case 45007 : return '語音播放時間超過限制'; case 45008 : return '圖文消息超過限制'; case 45009 : return '接口調用超過限制'; case 45010 : return '建立菜單個數超過限制'; case 45015 : return '回覆時間超過限制'; case 45016 : return '系統分組,不容許修改'; case 45017 : return '分組名字過長'; case 45018 : return '分組數量超過上限'; case 46001 : return '不存在媒體數據'; case 46002 : return '不存在的菜單版本'; case 46003 : return '不存在的菜單數據'; case 46004 : return '不存在的用戶'; case 47001 : return '解析JSON/XML內容錯誤'; case 48001 : return 'api功能未受權'; case 50001 : return '用戶未受權該api'; default : return '未知錯誤'; } } /** * @FunctionDescription:接口調用的get方法 * @Param:請求的url地址 * @Return:(json) * @Description:利用cURL發送get請求,獲取數據 * @Author:helen zheng */ /*接口調用的get方法*/ function request_get($url){ //初始化cURL方法 $ch = curl_init(); //設置cURL參數 $opts = array( //在局域網內訪問https站點時須要設置如下兩項,關閉ssl驗證! //此兩項正式上線時須要更改(不檢查和驗證認證) CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => $url, ); curl_setopt_array($ch,$opts); //執行cURL操做 $output = curl_exec($ch); if(curl_errno($ch)){ //cURL發生錯誤處理操做 var_dump(curl_error($ch)); die; } //關閉cURL curl_close($ch); $res = json_decode($output); return($res); //返回json數據 } /** * @FunctionDescription:接口調用的post方法 * @Param:請求的url地址,post數據(json格式) * @Return:(json) * @Description:利用cURL發送get請求,獲取數據 * @Author:helen zheng */ function request_post($url,$data){ //初始化cURL方法 $ch = curl_init(); //設置cURL參數 $opts = array( //在局域網內訪問https站點時須要設置如下兩項,關閉ssl驗證! //此兩項正式上線時須要更改(不檢查和驗證認證) CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $data ); curl_setopt_array($ch,$opts); //執行cURL操做 $output = curl_exec($ch); if(curl_errno($ch)){ //cURL操做發生錯誤處理。 var_dump(curl_error($ch)); die; } //關閉cURL curl_close($ch); $res = json_decode($output); return($res); //返回json數據 } /** * @FunctionDescription:下載多媒體文件方法 * @Param:url * @Return:多媒體信息 array * @Description: * @Author:helen zheng */ function downloadFile($url){ //初始化cURL方法 $ch = curl_init(); //設置cURL參數 $opts = array( //在局域網內訪問https站點時須要設置如下兩項,關閉ssl驗證! //此兩項正式上線時須要更改(不檢查和驗證認證) CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => $url, CURLOPT_HEADER => 0, CURLOPT_NOBODY => 0 ); curl_setopt_array($ch,$opts); //執行cURL操做 $output = curl_exec($ch); $httpinfo = curl_getinfo($ch); if(curl_errno($ch)){ var_dump(curl_error($ch)); } //關閉cURL curl_close($ch); return array_merge(array('body'=>$output),array('header'=>$httpinfo)); } }
轉自:http://blog.csdn.net/helencoder/article/details/50407905php