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

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

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

瀏覽:125日期: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ù)組和標(biāo)量進(jìn)行 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() 處理后顯示不直觀的情況 * 如默認(rèn)會將“中文”變成'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認(rèn)證返回的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不能補(bǔ)全 } /** * 創(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 用戶唯一標(biāo)識符 * $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不能補(bǔ)全 } /** * 獲取用戶基本信息 *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不能補(bǔ)全 } /* * 發(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 二維碼詳細(xì)信息 *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 二維碼詳細(xì)信息 *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); } } }

標(biāo)簽: 微信
相關(guān)文章:
主站蜘蛛池模板: 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 德州网站开发定制-小程序开发制作-APP软件开发-「两山开发」 | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 球磨机 选矿球磨机 棒磨机 浮选机 分级机 选矿设备厂家 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | 小型单室真空包装机,食品单室真空包装机-百科 | SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 酸度计_PH计_特斯拉计-西安云仪 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 成都网站建设制作_高端网站设计公司「做网站送优化推广」 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 沈阳楼承板_彩钢板_压型钢板厂家-辽宁中盛绿建钢品股份有限公司 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | 路斯特伺服驱动器维修,伦茨伺服驱动器维修|万骏自动化百科 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 粘度计,数显粘度计,指针旋转粘度计| 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 【官网】博莱特空压机,永磁变频空压机,螺杆空压机-欧能优 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 不锈钢复合板|钛复合板|金属复合板|南钢集团安徽金元素复合材料有限公司-官网 | 沈阳激光机-沈阳喷码机-沈阳光纤激光打标机-沈阳co2激光打标机 | 外贸资讯网 - 洞悉全球贸易,把握市场先机 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 |