日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

微信接口php版本sdk的WxApi.class.php

瀏覽:172日期:2022-06-02 16:02:52

微信最新公布接口 php版本的sdk,包括分組、獲取用戶信息、獲取關注列表、創建帶參數的二維碼等等。

<?phpclass OAuthException extends Exception { // pass}/*** @package wx* @author Jianjun Deng* @version 1.0*/class WxAuthV2 { public $access_token; public $host = 'https://api.weixin.qq.com/cgi-bin/'; public $timeout = 30; public $connecttimeout = 30; public $ssl_verifypeer = FALSE; public $format = ’?’; public $decode_json = TRUE; public $http_info; public static $boundary = ’’; function __construct($access_token = NULL) { $this->access_token = $access_token; } function base64decode($str) { return base64_decode(strtr($str.str_repeat(’=’, (4 - strlen($str) % 4)), ’-_’, ’+/’)); } /** * GET wrappwer for oAuthRequest. * * @return mixed */ function get($url, $parameters = array()) { $response = $this->oAuthRequest($url, ’GET’, $parameters); if ($this->format === ’?’ && $this->decode_json) { return json_decode($response, true); } return $response; } /** * POST wreapper for oAuthRequest. * * @return mixed */ function post($url, $parameters = array(), $multi = false) { $response = $this->oAuthRequest($url, ’POST’, $parameters, $multi ); if ($this->format === ’?’ && $this->decode_json) { return json_decode($response, true); } return $response; } /** * DELTE wrapper for oAuthReqeust. * * @return mixed */ function delete($url, $parameters = array()) { $response = $this->oAuthRequest($url, ’DELETE’, $parameters); if ($this->format === ’json’ && $this->decode_json) { return json_decode($response, true); } return $response; } /** * Format and sign an OAuth / API request * * @return string * @ignore */ function oAuthRequest($url, $method, $parameters, $multi = false) { if (strrpos($url, ’http://’) !== 0 && strrpos($url, ’https://’) !== 0) { $url = '{$this->host}{$url}{$this->format}'.'access_token='.$this->access_token; } switch ($method) { case ’GET’: $url = $url . ’&’ . http_build_query($parameters); return $this->http($url, ’GET’); default: $headers = array(); if (!$multi && (is_array($parameters) || is_object($parameters)) ) { $body = $this->ch_json_encode($parameters); } else { $body = self::build_http_query_multi($parameters); $headers[] = 'Content-Type: multipart/form-data; boundary=' . self::$boundary; } return $this->http($url, $method, $body, $headers); } } /** * Make an HTTP request * * @return string API results * @ignore */ function http($url, $method, $postfields = NULL, $headers = array()) { $this->http_info = array(); $ci = curl_init(); /* Curl settings */ curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ci, CURLOPT_ENCODING, ''); curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, ’getHeader’)); curl_setopt($ci, CURLOPT_HEADER, FALSE); switch ($method) { case ’POST’: curl_setopt($ci, CURLOPT_POST, TRUE); if (!empty($postfields)) { curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); $this->postdata = $postfields; } break; } curl_setopt($ci, CURLOPT_URL, $url ); curl_setopt($ci, CURLOPT_HTTPHEADER, $headers ); curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE ); $response = curl_exec($ci); $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); $this->http_info = array_merge($this->http_info, curl_getinfo($ci)); $this->url = $url; curl_close ($ci); return $response; } /** * Get the header info to store. * * @return int * @ignore */ function getHeader($ch, $header) { $i = strpos($header, ’:’); if (!empty($i)) { $key = str_replace(’-’, ’_’, strtolower(substr($header, 0, $i))); $value = trim(substr($header, $i + 2)); $this->http_header[$key] = $value; } return strlen($header); } /** * @ignore */ public static function build_http_query_multi($params) { if (!$params) return ’’; uksort($params, ’strcmp’); $pairs = array(); self::$boundary = $boundary = uniqid(’------------------’); $MPboundary = ’--’.$boundary; $endMPboundary = $MPboundary. ’--’; $multipartbody = ’’; foreach ($params as $parameter => $value) { if( in_array($parameter, array(’pic’, ’image’)) && $value{0} == ’@’ ) { $url = ltrim( $value, ’@’ ); $content = file_get_contents( $url ); $array = explode( ’?’, basename( $url ) ); $filename = $array[0]; $multipartbody .= $MPboundary . 'rn'; $multipartbody .= ’Content-Disposition: form-data; name='’ . $parameter . ’'; filename='’ . $filename . ’'’. 'rn'; $multipartbody .= 'Content-Type: image/unknownrnrn'; $multipartbody .= $content. 'rn'; } else { $multipartbody .= $MPboundary . 'rn'; $multipartbody .= ’content-disposition: form-data; name='’ . $parameter . ''rnrn'; $multipartbody .= $value.'rn'; } } $multipartbody .= $endMPboundary; return $multipartbody; } /** * 對數組和標量進行 urlencode 處理 * 通常調用 wphp_json_encode() * 處理 json_encode 中文顯示問題 * @param array $data * @return string */ function wphp_urlencode($data) { if (is_array($data) || is_object($data)) { foreach ($data as $k => $v) { if (is_scalar($v)) { if (is_array($data)) { $data[$k] = urlencode($v); } else if (is_object($data)) { $data->$k = urlencode($v); } } else if (is_array($data)) { $data[$k] = $this->wphp_urlencode($v); //遞歸調用該函數 } else if (is_object($data)) { $data->$k = $this->wphp_urlencode($v); } } } return $data; } /** * json 編碼 * * 解決中文經過 json_encode() 處理后顯示不直觀的情況 * 如默認會將“中文”變成'u4e2du6587',不直觀 * 如無特殊需求,并不建議使用該函數,直接使用 json_encode 更好,省資源 * json_encode() 的參數編碼格式為 UTF-8 時方可正常工作 * * @param array|object $data * @return array|object */ public function ch_json_encode($data) { $ret = $this->wphp_urlencode($data); $ret = json_encode($ret); return urldecode($ret); }}class WxApi{ var $oauth; /** * 構造函數 * * @access public * @param mixed $access_token OAuth認證返回的token * @return void */ function __construct($access_token) { $this->oauth = new WxAuthV2($access_token); } /** * 查詢分組 API:http://mp.weixin.qq.com/wiki/index.php?title=%E5%88%86%E7%BB%84%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3 * */ function groups_get() { $params = array(); return $this->oauth->get(’groups/get’, $params);//可能是接口的bug不能補全 } /** * 創建分組 API:http://mp.weixin.qq.com/wiki/index.php?title=%E5%88%86%E7%BB%84%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3#.E5.88.9B.E5.BB.BA.E5.88.86.E7.BB.84 * $name 分組名字(30個字符以內) */ function groups_create($name){ $params = array(''); $params[’group’][’name’] = trim($name); return $this->oauth->post(’groups/create’,$params ); } /** * 修改分組名 API:http://mp.weixin.qq.com/wiki/index.php?title=%E5%88%86%E7%BB%84%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3#.E5.88.9B.E5.BB.BA.E5.88.86.E7.BB.84 * POST數據例子:{'group':{'id':108,'name':'test2_modify2'}} * $id 分組id,由微信分配 * $name 分組名字(30個字符以內) */ function groups_update($id,$name){ $params = array(''); $params[’group’][’id’] = $this->id_format($id); $params[’group’][’name’] = trim($name); return $this->oauth->post(’groups/update’,$params); } /** * 移動用戶分組 API:http://mp.weixin.qq.com/wiki/index.php?title=%E5%88%86%E7%BB%84%E7%AE%A1%E7%90%86%E6%8E%A5%E5%8F%A3#.E5.88.9B.E5.BB.BA.E5.88.86.E7.BB.84 * {'openid':'oDF3iYx0ro3_7jD4HFRDfrjdCM58','to_groupid':108} * $openid 用戶唯一標識符 * $to_groupid 分組id * $name 分組名字(30個字符以內) */ function groups_members_update($openid,$to_groupid){ $params = array(''); $params[’group’][’openid’] = trim($openid); $params[’group’][’to_groupid’] = trim($to_groupid); return $this->oauth->post(’groups/members/update’,$params); } /** * 獲取關注列表 一次最多返回1萬 * http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E5%85%B3%E6%B3%A8%E8%80%85%E5%88%97%E8%A1%A8 * * */ function user_get($next_openid='') { $params = array(); $params[’next_openid’]=$next_openid; return $this->oauth->get(’user/get’, $params);//可能是接口的bug不能補全 } /** * 獲取用戶基本信息 *Array ( [subscribe] => 1 *[openid] => of76zt-k-bMZZaCip16MKfGAigec *[nickname] => _魏什么。 *[sex] => 1 *[language] => zh_TW *[city] => 福州 *[province] => 福建 *[country] => 中國 *[headimgurl] => http://wx.qlogo.cn/mmopen/kaTUtbf9iaBY32aSBLkcxWVDicjlhHSiapLWDcia1ic948tYdmhJQLQa8FpB7MdqpDNQHOVUWoVfPHjlymJ1z1fyStAUyduicvAbmh/0 *[subscribe_time] => 1381576837 ) */ function user_info($openid='') { $params = array(); $params[’openid’]=$openid; return $this->oauth->get(’user/info’, $params);//可能是接口的bug不能補全 } /* * 發送客服文本消息 * http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E5%AE%A2%E6%9C%8D%E6%B6%88%E6%81%AF */ function message_custom_send_text($touser,$content){ $params = array(''); $params[’touser’]=trim($touser); $params[’msgtype’]='text'; $params[’text’]['content']=$content; return $this->oauth->post(’message/custom/send’,$params); } /* * 發送客服圖片消息 * http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E5%AE%A2%E6%9C%8D%E6%B6%88%E6%81%AF * access_token 是 調用接口憑證touser 是 普通用戶openidmsgtype 是 消息類型,imagemedia_id 是 發送的圖片的媒體ID */ function message_custom_send_image($touser,$media_id){ $params = array(''); $params[’touser’]=trim($touser); $params[’msgtype’]='image'; $params[’image’]['media_id']=$media_id; return $this->oauth->post(’message/custom/send’,$params); } /* * 發送客服語音消息 * http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E5%AE%A2%E6%9C%8D%E6%B6%88%E6%81%AF * access_token 是 調用接口憑證 touser 是 普通用戶openid msgtype 是 消息類型,image media_id 是 發送的圖片的媒體ID */ function message_custom_send_voice($touser,$media_id){ $params = array(''); $params[’touser’]=trim($touser); $params[’msgtype’]='voice'; $params[’voice’]['media_id']=$media_id; return $this->oauth->post(’message/custom/send’,$params); } /* * 發送客服圖文消息 圖文消息條數限制在10條以內。 * http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E5%AE%A2%E6%9C%8D%E6%B6%88%E6%81%AF * access_token 是 調用接口憑證 * touser 是 普通用戶openid * msgtype 是 消息類型,image * media_id 是 發送的圖片的媒體ID * $newsArray[0]=array( 'title'=>'', 'description'=>'', 'url'=>'', 'picurl'=>'' ) */ function message_custom_send_news($touser,$newsArray){ $params = array(''); $params[’touser’]=trim($touser); $params[’msgtype’]='news'; $params[’news’]['articles']=$newsArray; return $this->oauth->post(’message/custom/send’,$params); } /* * 創建臨時二維碼ticket * http://mp.weixin.qq.com/wiki/index.php?title=%E7%94%9F%E6%88%90%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84%E4%BA%8C%E7%BB%B4%E7%A0%81 * expire_seconds 該二維碼有效時間,以秒為單位。 最大不超過1800。 *action_name 二維碼類型,QR_SCENE為臨時,QR_LIMIT_SCENE為永久 *action_info 二維碼詳細信息 *scene_id 場景值ID,臨時二維碼時為32位整型,永久二維碼時最大值為1000 */ function qrcode_create_scene($expire_seconds='900',$scene_id){ $params = array(''); $params[’expire_seconds’]=$expire_seconds; $params[’action_name’]='QR_SCENE'; $params[’action_info’]['scene']['scene_id']=$scene_id; return $this->oauth->post(’qrcode/create’,$params); } /* * 創建永久二維碼ticket * http://mp.weixin.qq.com/wiki/index.php?title=%E7%94%9F%E6%88%90%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84%E4%BA%8C%E7%BB%B4%E7%A0%81 * expire_seconds 該二維碼有效時間,以秒為單位。 最大不超過1800。 *action_name 二維碼類型,QR_LIMIT_SCENE為永久 *action_info 二維碼詳細信息 *scene_id 場景值ID,臨時二維碼時為32位整型,永久二維碼時最大值為1000 */ function qrcode_create_forever($action_name='',$scene_id){ $params = array(''); $params[’action_name’]='QR_LIMIT_SCENE'; $params[’action_info’]['scene']['scene_id']=$scene_id; return $this->oauth->post(’qrcode/create’,$params); } /* * 通過ticket換取二維碼 * */ function showqrcode($ticket){ return file_get_contents('https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={$ticket}'); } protected function id_format(&$id) { if ( is_float($id) ) { $id = number_format($id, 0, ’’, ’’); } elseif ( is_string($id) ) { $id = trim($id); } } }

標簽: 微信
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久草精品视频| 国产探花一区| 国产女人18毛片水真多18精品| 亚洲日本欧美| 欧美日韩国产高清电影| 欧美日韩激情| 国产亚洲字幕| 视频一区二区不卡| 国产精品欧美三级在线观看| 国产精品黄色| 老鸭窝一区二区久久精品| 神马午夜在线视频| 国产欧美一区二区色老头| 久色成人在线| 日韩精品免费视频一区二区三区| 午夜在线视频观看日韩17c| 日韩激情一区二区| 日韩福利视频网| 中文字幕日韩高清在线 | 国产乱码精品一区二区三区四区| 欧美精品一卡| 伊人精品视频| 蜜桃视频一区二区三区| 麻豆精品久久久| 欧洲亚洲一区二区三区| av中文字幕在线观看第一页| 国产精品一区二区中文字幕| 98精品视频| 国产欧美日韩精品高清二区综合区 | 亚洲午夜国产成人| 国产精品九九| 久久免费精品| 国产综合亚洲精品一区二| 亚洲一级淫片| 视频一区欧美日韩| 日韩av资源网| 久久精品 人人爱| 欧美午夜网站| 免费日韩成人| 日韩欧美自拍| 麻豆mv在线观看| 99精品视频在线| 蜜桃91丨九色丨蝌蚪91桃色| 欧美亚洲综合视频| 高清av一区| 欧美日韩激情| 欧美日韩精品一区二区三区视频| 久久这里只有| 999久久久免费精品国产| 蜜臀av在线播放一区二区三区| 青草综合视频| 亚洲天堂一区二区| 美女国产一区| 久久精品国产免费| 亚洲精品在线观看91| 只有精品亚洲| 久久精品国产精品亚洲毛片| 91九色精品| 欧美一级二级视频| 日韩三区在线| 久久国产三级精品| 久久精品亚洲欧美日韩精品中文字幕| 热久久免费视频| 精品国产精品国产偷麻豆 | 激情久久一区二区| 91高清一区| 欧美激情日韩| 尹人成人综合网| 国产美女视频一区二区| 亚洲www啪成人一区二区| 日韩欧美中文字幕在线视频| 久久青草久久| 国产欧美日韩影院| 一区二区自拍| 国产在线观看www| 欧美精品观看| 性一交一乱一区二区洋洋av| 成人午夜网址| 91亚洲无吗| 中文一区在线| а√天堂8资源在线| 日韩精品中文字幕一区二区| 亚洲电影在线| 丰满少妇一区| 久久亚洲风情| 91精品久久久久久久久久不卡| 国产日韩亚洲| 在线精品观看| 国产综合视频| 亚洲国产福利| 国产欧美精品| 在线日韩欧美| 免费在线观看一区| 亚洲精品无吗| 在线一区av| 国产亚洲高清在线观看| 午夜一级久久| av高清不卡| 国产精品17p| 欧美日韩三区| 日韩精品dvd| 日韩激情综合| 亚洲国产一区二区三区在线播放| 久久不见久久见中文字幕免费 | 狠狠久久伊人| 日本亚洲最大的色成网站www| 三级小说欧洲区亚洲区| 精品久久在线| 国产亚洲高清一区| 日本成人在线不卡视频| 欧美羞羞视频| 日韩精品专区| 国产精品亚洲产品| 蜜臀久久99精品久久久久久9| 999在线观看精品免费不卡网站| 国产成人调教视频在线观看| 国产精品入口久久| 蜜桃免费网站一区二区三区| 9国产精品视频| 日韩免费av| 视频一区中文字幕精品| 在线观看一区| 男女精品网站| 热久久免费视频| 伊人成人网在线看| 中文亚洲免费| 日韩电影免费在线观看| 成人午夜毛片| 免费在线播放第一区高清av| 天堂成人国产精品一区| 久久午夜视频| 亚洲一区中文| 91精品1区| 蜜桃国内精品久久久久软件9| 国产suv精品一区二区四区视频| 国产精品最新自拍| 天堂av在线一区| 男女精品网站| 免费在线观看一区二区三区| 中文字幕日韩欧美精品高清在线| 亚洲欧美久久| 日韩制服丝袜先锋影音| 9色精品在线| 伊人国产精品| 一区二区精彩视频| 奇米亚洲欧美| 国产精品嫩模av在线| 久久国产精品亚洲77777| 99香蕉国产精品偷在线观看| 群体交乱之放荡娇妻一区二区| 视频一区中文| 蜜桃tv一区二区三区| 国产亚洲综合精品| 国产精品婷婷| 亚洲97av| 日韩av二区在线播放| 国产精品久久国产愉拍| 国产精品久久国产愉拍| 先锋影音国产一区| 综合一区av| 日韩av网站在线观看| 精品视频一区二区三区四区五区| 国产+成+人+亚洲欧洲在线| 久久久久99| 国产亚洲福利| 日韩成人在线看| 日韩精品欧美大片| 国产一区二区三区探花| 亚洲综合电影| 欧美成人综合| 久久av在线| 亚洲婷婷在线| 亚洲精品成a人ⅴ香蕉片| 久久99伊人| 国产欧美精品久久| 麻豆mv在线观看| 免费看欧美美女黄的网站| 91麻豆精品激情在线观看最新| 国产videos久久| 亚洲午夜在线| 日韩福利视频网| 欧美黑人巨大videos精品| 九色porny丨国产首页在线| 亚洲午夜91| 亚洲+小说+欧美+激情+另类| 麻豆视频观看网址久久| 亚洲一二三区视频| 精品视频网站| 1000部精品久久久久久久久| 国产调教一区二区三区| 日韩av在线中文字幕| 另类激情亚洲| 欧美激情一区| 久久国产高清| 麻豆精品新av中文字幕| 老色鬼久久亚洲一区二区| 国产精品亚洲一区二区在线观看| 五月天久久网站| 日韩av中文在线观看| 久久在线电影|