电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

微信最新公布接口 php版本的sdk,包括分組、獲取用戶信息、獲取關(guān)注列表、創(chuàng)建帶參數(shù)的二維碼等等。

<?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; } /** * 對數(shù)組和標量進行 urlencode 處理 * 通常調(diào)用 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); //遞歸調(diào)用該函數(shù) } else if (is_object($data)) { $data->$k = $this->wphp_urlencode($v); } } } return $data; } /** * json 編碼 * * 解決中文經(jīng)過 json_encode() 處理后顯示不直觀的情況 * 如默認會將“中文”變成'u4e2du6587',不直觀 * 如無特殊需求,并不建議使用該函數(shù),直接使用 json_encode 更好,省資源 * json_encode() 的參數(shù)編碼格式為 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; /** * 構(gòu)造函數(shù) * * @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不能補全 } /** * 創(chuàng)建分組 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個字符以內(nèi)) */ 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數(shù)據(jù)例子:{'group':{'id':108,'name':'test2_modify2'}} * $id 分組id,由微信分配 * $name 分組名字(30個字符以內(nèi)) */ 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個字符以內(nèi)) */ 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); } /** * 獲取關(guān)注列表 一次最多返回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不能補全 } /* * 發(fā)送客服文本消息 * 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); } /* * 發(fā)送客服圖片消息 * 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 是 調(diào)用接口憑證touser 是 普通用戶openidmsgtype 是 消息類型,imagemedia_id 是 發(fā)送的圖片的媒體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); } /* * 發(fā)送客服語音消息 * 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 是 調(diào)用接口憑證 touser 是 普通用戶openid msgtype 是 消息類型,image media_id 是 發(fā)送的圖片的媒體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); } /* * 發(fā)送客服圖文消息 圖文消息條數(shù)限制在10條以內(nèi)。 * 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 是 調(diào)用接口憑證 * touser 是 普通用戶openid * msgtype 是 消息類型,image * media_id 是 發(fā)送的圖片的媒體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); } /* * 創(chuàng)建臨時二維碼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); } /* * 創(chuàng)建永久二維碼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); } } }

標簽: 微信
相關(guān)文章:
主站蜘蛛池模板: 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 工业硝酸钠,硝酸钠厂家-淄博「文海工贸」 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 不锈钢管件(不锈钢弯头,不锈钢三通,不锈钢大小头),不锈钢法兰「厂家」-浙江志通管阀 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 昊宇水工|河北昊宇水工机械工程有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 领先的大模型技术与应用公司-中关村科金 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 蔬菜配送公司|蔬菜配送中心|食材配送|饭堂配送|食堂配送-首宏公司 | 中宏网-今日新闻-财经新闻| 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 |