/** * 获取自动回复规则 * 本接口与自定义菜单查询接口的不同之处在于,本接口无论公众号的接口是如何设置的,都能查询到接口,而自定义菜单查询接口则仅能查询到使用API设置的菜单配置。 * Url:http://mp.weixin.qq.com/wiki/7/7b5789bb1262fb866d01b4b40b0efecb.html * @return bool|mixed * * 返回: */ public static function getAutoreply() { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); $url = 'https://api.weixin.qq.com/cgi-bin/get_current_autoreply_info?access_token=' . $accessToken; return Curl::callWebServer($url, '', 'GET'); }
public static function getTemplateId($template_id_short) { $url = 'https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=' . AccessToken::getAccessToken(); $data = array('template_id_short' => $template_id_short); $res = Curl::httpGet($url, $data); return Error::isError($res) ? false : $res['template_id']; }
/** * 获取微信服务器IP列表 */ public static function getWeChatIPList() { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); $url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=' . $accessToken; return Curl::callWebServer($url, '', 'GET'); }
public static function uploadNews($articles) { /* 传入data实例 $articles[] = array( 'thumb_media_id'=> $media_id, 'author'=> '天王盖地虎', 'title'=> '这个我的测试消息', 'content_source_url'=> 'our-class.cn', 'content'=> '这是一个图文摘要', 'digest'=> '', 'show_cover_pic'=> 1, ); $articles[] = array( 'thumb_media_id'=> $media_id, 'author'=> '天王盖地虎', 'title'=> '这个我的测试消息', 'content_source_url'=> 'our-class.cn', 'content'=> '这是一个图文摘要', 'digest'=> '', 'show_cover_pic'=> 1, ); */ $url = 'https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=' . AccessToken::getAccessToken(); if (count($articles) > 10) { href('文章总数大于10'); return false; } $data = array('articles' => $articles); $res = Curl::httpGet($url, $data); return Error::isError($res) ? false : $res['media_id']; }
/** * 下载多媒体文件 * @param $mediaId 多媒体ID * @return 头信息如下 * * HTTP/1.1 200 OK * Connection: close * Content-Type: image/jpeg * Content-disposition: attachment; filename="MEDIA_ID.jpg" * Date: Sun, 06 Jan 2013 10:20:18 GMT * Cache-Control: no-cache, must-revalidate * Content-Length: 339721 * curl -G "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID" */ public static function download($mediaId) { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); $queryUrl = 'http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=' . $accessToken . '&media_id=' . $mediaId; return Curl::callWebServer($queryUrl, '', 'GET'); }
public static function getIp() { $accessToken = AccessToken::getAccessToken(); $url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=' . $accessToken; $res = Curl::httpGet($url); return Error::isError($res) ? false : $res['ip_list']; }
public static function long2short($url) { $url = 'https://api.weixin.qq.com/cgi-bin/shorturl?access_token=' . AccessToken::getAccessToken(); $data = array('action' => 'long2short', 'long_url' => $url); $res = Curl::httpGet($url, $data); return Error::isError($res) ? false : $res['short_url']; }
/** * 获取摇周边的设备及用户信息 * 获取设备信息,包括UUID、major、minor,以及距离、openID等信息。 * 根据 $ticket 获取用户及设备信息 * * @param $ticket 摇周边业务的ticket,可在摇到的URL中得到,ticket生效时间为30分钟 * * @return array("data"=>array("page_id "=>1421,"openid"=> "oVDmXjp7y8aG2AlBuRpMZTb1-cmA",'beacon_info'=>array("distance"=> 55.00620700469034,"major"=> 10001,"minor"=> 19007,"uuid"=> "FDA50693-A4E2-4FB1-AFCF-C6EB07647825")), "errcode"=> 0,"errmsg"=> "success.") */ public static function getShakeInfo($ticket) { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); $queryUrl = 'https://api.weixin.qq.com/shakearound/user/getshakeinfo?access_token=' . $accessToken; $data = json_encode(array('ticket' => $ticket)); return Curl::callWebServer($queryUrl, $data, 'POST', 1, 0); }
/** * 将一条长链接转成短链接。 * 主要使用场景:开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。 * @param $longUrl String 需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url * @return array('errcode'=>0, 'errmsg'=>'错误信息', 'short_url'=>'http://t.cn/asdasd')错误码为0表示正常 */ public static function long2short($longUrl) { $queryUrl = 'https://api.weixin.qq.com/cgi-bin/shorturl?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; $template = array(); $template['long_url'] = $longUrl; $template['action'] = 'long2short'; return Curl::callWebServer($queryUrl, '', $queryAction); }
/** * 上传图片素材 * 上传在摇一摇页面展示的图片素材,素材保存在微信侧服务器上。 * 格式限定为:jpg,jpeg,png,gif,图片大小建议120px*120 px,限制不超过200 px *200 px,图片需为正方形。 * * @param $filename,文件绝对路径 * * @return array("data"=>array("pic_url"=>"http://shp.qpic.cn/wechat_shakearound_pic/0/1428377032e9dd2797018cad79186e03e8c5aec8dc/120"), "errcode"=> 0,"errmsg"=> "success.") */ public static function upload($filename) { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); $queryUrl = 'https://api.weixin.qq.com/shakearound/material/add?access_token=' . $accessToken; $data = array(); $data['media'] = '@' . $filename; return Curl::callWebServer($queryUrl, $data, 'POST', 1, 0); }
/** * 获取自动回复规则 * * @return String 返回结果与字段说明请查看http://mp.weixin.qq.com/wiki/7/7b5789bb1262fb866d01b4b40b0efecb.html */ public static function getRole($industryId1, $industryId2) { $queryUrl = 'https://api.weixin.qq.com/cgi-bin/get_current_autoreply_info?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; $template = array(); $template['industry_id1'] = "{$industryId1}"; $template['industry_id2'] = "{$industryId2}"; $template = json_encode($template); return Curl::callWebServer($queryUrl, $template, $queryAction); }
static function getuser($begin_date, $end_date, $summary = true) { if ($summary) { $url = 'https://api.weixin.qq.com/datacube/getusersummary?access_token=' . AccessToken::getAccessToken(); } else { $url = 'https://api.weixin.qq.com/datacube/getusercumulate?access_token=' . AccessToken::getAccessToken(); } $data = array('begin_date' => $begin_date, 'end_date' => $end_date); $res = Curl::httpGet($url, $data); return Error::isError($res) ? false : $res; }
public static function setImage($file, $kf_account) { if (!file_exists($file)) { href('文件不存在'); return false; } $url = 'http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=' . AccessToken::getAccessToken() . '&kf_account=' . $kf_account; $data = array('filename' => $file); $data = array("media" => "@" . $file, 'form-data' => $data); $res = Curl::httpGet($url, $data); return Error::isError($res) ? false : $res; }
/** * 向用户推送模板消息 * @param $data = array( * 'first'=>array('value'=>'您好,您已成功消费。', 'color'=>'#0A0A0A') * 'keynote1'=>array('value'=>'巧克力', 'color'=>'#CCCCCC') * 'keynote2'=>array('value'=>'39.8元', 'color'=>'#CCCCCC') * 'keynote3'=>array('value'=>'2014年9月16日', 'color'=>'#CCCCCC') * 'keynote3'=>array('value'=>'欢迎再次购买。', 'color'=>'#173177') * ); * @param $touser 接收方的OpenId。 * @param $templateId 模板Id。在公众平台线上模板库中选用模板获得ID * @param $url URL * @param string $topcolor 顶部颜色, 可以为空。默认是红色 * @return array("errcode"=>0, "errmsg"=>"ok", "msgid"=>200228332} "errcode"是0则表示没有出错 * * 注意:推送后用户到底是否成功接受,微信会向公众号推送一个消息。 */ public static function sendTemplateMessage($data, $touser, $templateId, $url, $topcolor = '#FF0000') { $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; $template = array(); $template['touser'] = $touser; $template['template_id'] = $templateId; $template['url'] = $url; $template['topcolor'] = $topcolor; $template['data'] = $data; $template = json_encode($template); return Curl::callWebServer($queryUrl, $template, $queryAction); }
public function deleteAccessToken(AccessToken $accessToken) { if (!isset($_SESSION['php-oauth-client']['access_token'])) { return false; } foreach ($_SESSION['php-oauth-client']['access_token'] as $k => $t) { $token = unserialize($t); if ($accessToken->getAccessToken() !== $token->getAccessToken()) { continue; } unset($_SESSION['php-oauth-client']['access_token'][$k]); return true; } return false; }
/** * @descrpition 从微信服务器获取js sdk api_ticket * @return Ambigous|bool */ private static function _getJsapiTicket() { $accessToken = AccessToken::getAccessToken(); $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=" . $accessToken; $JsapiTicket = Curl::callWebServer($url, '', 'GET'); if (!isset($JsapiTicket['ticket'])) { return Msg::returnErrMsg(MsgConstant::ERROR_GET_ACCESS_TOKEN, '获取js ticket失败'); } $JsapiTicket['time'] = time(); $JsapiTicketJson = json_encode($JsapiTicket); //存入数据库 $db = new mysql(); $db->connect(DBHOST, DBUSER, DBPASSWORD, DBNAME); $sql = "update jsapiticket set ticket='" . $JsapiTicketJson . "' where id=1"; $db->query($sql); return $JsapiTicket; }
public static function addMedia($file, $type = 'image', $info = array()) { $url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=' . AccessToken::getAccessToken(); if (!file_exists($file)) { href('文件不存在'); exit; } $data = array('filename' => $file); if ($type == 'video') { $description = array('title' => $info['title'], 'introduction' => $info['introduction']); $data = array("media" => "@" . $file, 'form-data' => $data, 'type' => $type, 'description' => $description); } else { $data = array("media" => "@" . $file, 'form-data' => $data, 'type' => $type); } $res = Curl::httpGet($url, $data); return Error::isError($res) ? false : $res; }
private static function getJsApiTicket() { $mmc = memcache_init(); $ticketInfo = @$mmc->get('ticket'); if (isset($ticketInfo['ticket']) && time() - $ticketInfo['expires'] < 7000) { return $ticketInfo['ticket']; } $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=" . AccessToken::getAccessToken(); $res = Curl::httpGet($url); if (Error::isError($res)) { exit; } $data['ticket'] = $res['ticket']; $data['expires'] = time(); //存入Memcache $mmc->set('ticket', $data, 7200); return $res['ticket']; }
/** * @descrpition 从微信服务器获取微信API_TICKET * @return Ambigous|bool */ private static function _getApiTicket(){ $accessToken = AccessToken::getAccessToken(true); $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken"; $apiTicket = Curl::callWebServer($url, '', 'GET'); if(!isset($apiTicket['ticket'])){ return Msg::returnErrMsg(MsgConstant::ERROR_GET_API_TICKET, '获取API_TICKET失败'); } $apiTicket['time'] = time(); $apiTicketJson = json_encode($apiTicket); //存入数据库 /** * 这里通常我会把api_ticket存起来,然后用的时候读取,判断是否过期,如果过期就重新调用此方法获取,存取操作请自行完成 * * 请将变量$apiTicketJson给存起来,这个变量是一个字符串 */ $f = fopen(self::_fileName2Store(), 'w+'); fwrite($f, $apiTicketJson); fclose($f); return $apiTicket; }
/** * 语义理解 * 单类别意图比较明确,识别的覆盖率比较大,所以如果只要使用特定某个类别,建议将category只设置为该类别。 * @param $query 输入文本串,如“查一下明天从北京到上海的南航机票" * @param $category String 需要使用的服务类型,如“flight,hotel”,多个用“,”隔开,不能为空。详见《接口协议文档》 * @param $latitude Float 纬度坐标,与经度同时传入;与城市二选一传入。详见《接口协议文档》 * @param $longitude Float 经度坐标,与纬度同时传入;与城市二选一传入。详见《接口协议文档》 * @param $region String 区域名称,在城市存在的情况下可省;与经纬度二选一传入。详见《接口协议文档》 * @param $city 城市名称,如“北京”,与经纬度二选一传入 * @param $openId * @return bool|mixed * 《接口协议文档》:http://mp.weixin.qq.com/wiki/images/1/1f/微信语义理解协议文档.zip */ public static function semanticSemproxy($query, $category, $openId, $latitude = '', $longitude = '', $region = '', $city = '') { $queryUrl = 'https://api.weixin.qq.com/semantic/semproxy/search?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; $template = array(); $template['query'] = $query; $template['category'] = $category; $template['appid'] = WECHAT_APPID; $template['uid'] = $openId; if (!empty($latitude)) { $template['latitude'] = $latitude; } if (!empty($longitude)) { $template['longitude'] = $longitude; } if (!empty($region)) { $template['region'] = $region; } if (!empty($city)) { $template['city'] = $city; } $template = json_encode($template); return Curl::callWebServer($queryUrl, $template, $queryAction, 0, 0); }
/** * 获取JsApiTicket * 本接口与自定义菜单查询接口的不同之处在于,本接口无论公众号的接口是如何设置的,都能查询到接口,而自定义菜单查询接口则仅能查询到使用API设置的菜单配置。 * Url:http://mp.weixin.qq.com/wiki/7/7b5789bb1262fb866d01b4b40b0efecb.html * @return string|ticket * * 返回:ticket值 */ public static function getJsApiTicket() { // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode(file_get_contents("jsapi_ticket.json")); if ($data->expire_time < time()) { $accessToken = AccessToken::getAccessToken(); // 如果是企业号用以下 URL 获取 ticket // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken"; $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token={$accessToken}"; $res = Curl::callWebServer($url, '', 'GET'); $ticket = $res['ticket']; if ($ticket) { $data = array(); $data['expire_time'] = time() + 7000; $data['jsapi_ticket'] = $ticket; $fp = fopen("jsapi_ticket.json", "w"); fwrite($fp, json_encode($data)); fclose($fp); } } else { $ticket = $data->jsapi_ticket; } return $ticket; }
/** * 设置备注名 开发者可以通过该接口对指定用户设置备注名,该接口暂时开放给微信认证的服务号。 * @param $openId 用户的openId * @param $remark 新的昵称 * @return array('errorcode'=>0, 'errmsg'=>'ok') 正常时是0 } */ public static function setRemark($openId, $remark) { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); $queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=' . $accessToken; $data = json_encode(array('openid' => $openId, 'remark' => $remark)); return Curl::callWebServer($queryUrl, $data, 'POST'); }
/** * 查询群发消息发送状态【订阅号与服务号认证后均可用】 * * @param $msgId String 群发消息后返回的消息id * @return mixed array("msg_status":"SEND_SUCCESS","msg_id"=>34182) */ public static function getStatus($openId, $mediaId) { $queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; $template = array(); $template['touser'] = $openId; $template['image']['media_id'] = $mediaId; $template['msgtype'] = 'image'; $template = json_encode($template); return Curl::callWebServer($queryUrl, $template, $queryAction); }
/** * 获取微信菜单 * @return bool|mixed * * 成功返回:{"errcode":0,"errmsg":"ok"} */ public static function delMenu() { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); $url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=' . $accessToken; return Curl::callWebServer($url, '', 'GET'); }
/** * 获取客服聊天记录接口,有分页,一次获取一页,一页最多1000条 * 在需要时,开发者可以通过获取客服聊天记录接口,获取多客服的会话记录,包括客服和用户会话的所有消息记录和会话的创建、关闭等操作记录。利用此接口可以开发如“消息记录”、“工作监控”、“客服绩效考核”等功能 * * @param $startTime 查询开始时间,UNIX时间戳 * @param $endTime 查询结束时间,UNIX时间戳,每次查询不能跨日查询 * @param $pageIndex 查询第几页,从1开始 * @param $pageSize 每页大小,每页最多拉取1000条 * @param $openId 可以为空,普通用户的标识,对当前公众号唯一。 * * @return array( array("worker"=>"test1", "openid"=>"", "opercode"=>2002, "time"=>1400563710, "text"=>"您好,客服test1为您服务。"), array("worker"=>"test1", "openid"=>"", "opercode"=>2002, "time"=>1400563715, "text"=>" 你好,有什么事情?"), * ) * 关于opercode 1000 创建未接入会话,1001 接入会话, 1002 主动发起会话,1004 关闭会话 1005 抢接会话, 2001 公众号收到消息,2002 客服发送消息,2003 客服收到消息 */ public function getRecord($startTime, $endTime, $pageIndex = 1, $pageSize = 1000, $openId = '') { $queryUrl = 'https://api.weixin.qq.com/cgi-bin/customservice/getrecord?access_token=' . AccessToken::getAccessToken(); $queryAction = 'POST'; $template = array(); $template['starttime'] = $startTime; $template['endtime'] = $endTime; $template['openid'] = $openId; $template['pagesize'] = $pageSize; $template['pageindex'] = $pageIndex; $template = json_encode($template); $result = Curl::callWebServer($queryUrl, $template, $queryAction); return isset($result['recordlist']) ? $result['recordlist'] : array(); }
/** * @descrpition 获取关注者列表 * @param $next_openid 第一个拉取的OPENID,不填默认从头开始拉取 * @return JSON {"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"} */ public static function getFansList($next_openid = '') { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); if (empty($next_openid)) { $queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=' . $accessToken; } else { $queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=' . $accessToken . '&next_openid=' . $next_openid; } $data = ''; return Curl::callWebServer($queryUrl, $data, 'GET'); }
/** * @descrpition 图文 - 先调用self::newsItem()再调用本方法 * @param $tousername * @param $item 数组,每个项由self::newsItem()返回 * @return string */ public static function news($tousername, $item) { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); self::$queryUrl = self::$queryUrl . $accessToken; //开始 $template = array('touser' => $tousername, 'msgtype' => 'news', 'news' => array('articles' => $item)); $template = json_encode($template); return Curl::callWebServer(self::$queryUrl, $template, self::$action); }
/** * 查询设备列表 基础函数 * 查询已有的设备ID、UUID、Major、Minor、激活状态、备注信息、关联门店、关联页面等信息。可指定设备ID或完整的UUID、Major、Minor查询,也可批量拉取设备信息列表。 * * @param $info array('UUID'=>'FDA50693-A4E2-4FB1-AFCF-C6EB07647825','minor '=>'1002','major'=>'1223') or array('begin'=>0,'count'=>3) or array( "apply_id"=>1231,"begin"=> 0,"count"=> 3) * * @return array('data'=>array('devices'=>array(array("comment"=> "","device_id"=> 10098,"major"=> 10001, "minor"=> 12103,"page_ids"=> "15368","status"=> 1,"poi_id"=> 0,"uuid"=> "FDA50693-A4E2-4FB1-AFCF-C6EB07647825")),"errcode"=> 0,'errmsg'=>'success'); */ public static function _searchDevice($data) { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); $queryUrl = 'https://api.weixin.qq.com/shakearound/device/bindlocation?access_token=' . $accessToken; $data = json_encode($data); return Curl::callWebServer($queryUrl, $data, 'POST'); }
defined("PERSONALCONSULTINGHTMLPATH") or define("PERSONALCONSULTINGHTMLPATH", "/home/chidsjwb/public_html/personalconsulting/"); defined("GETACCESSTOKENPATH") or define("GETACCESSTOKENPATH", "/home/chidsjwb/wxgongzhongpingtai/getAccessToken.php"); require_once PERSONALCONSULTINGHTMLPATH . 'php/DBvar.php'; $conn = new mysqli(DBSERVERNAME, DBUSERNAME, DBPASSWORD, DBNAME); if ($conn->connect_errno) { error_log("Connect failed: %s\n", $conn->connect_error); } else { mysqli_set_charset($conn, 'utf8mb4'); } $script_insert = "<script>var display_all_info=%s; var nickname='%s'; var sex=%s; var birthdaystr='%s' ; var birthdayTimestamp=%s</script>"; if (isset($_SESSION['openid'])) { defined("GETACCESSTOKENPATH") or define("GETACCESSTOKENPATH", "/home/chidsjwb/wxgongzhongpingtai/getAccessToken.php"); require_once GETACCESSTOKENPATH; require_once PERSONALCONSULTINGHTMLPATH . "ball/php/ballUserUtil.php"; //trying to get from wechat with latest info if ($user_array = BallUserUtil::getNSaveUserInformation($_SESSION['openid'], AccessToken::getAccessToken(), $conn)) { if (isset($user_array['errcode'])) { echo "<script>alert('呀,尺度似乎无法识别你,请通过尺度官方微信渠道进入本服务。')</script>"; exit; } else { if ($user_array['subscribe'] == 0) { echo "<script>alert('呀,您需要先关注尺度哟')</script>"; exit; } else { if ($user_array['subscribe'] == 1) { //ok so we know the person is real and subscribed, and is now in our DB. //but we need to check if he has a birthday already require_once PERSONALCONSULTINGHTMLPATH . "php/userUtil.php"; if ($row = UserUtil::getUserInfoFromDB($_SESSION['openid'], $conn)) { //$row['birth_timestamp'] if (!is_null($row['birth_timestamp']) && $row['birth_timestamp'] != 0) {
/** * 添加个性化菜单,一级菜单最多3个,每个一级菜单最多可以有5个二级菜单 * @param $menuListJson * { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜单", "sub_button":[ { "type":"view", "name":"搜索", "url":"http://www.soso.com/" }, { "type":"view", "name":"视频", "url":"http://v.qq.com/" }, { "type":"click", "name":"赞一下我们", "key":"V1001_GOOD" }] }], "matchrule":{ "group_id":"2", "sex":"1", "country":"中国", "province":"广东", "city":"广州", "client_platform_type":"2" "language":"zh_CN" } } *除了匹配规则之中的参数,其余各参数的说明同setMenu($menuList)方法 *关于匹配,只有符合匹配条件的用户才会有上述定制的个性化菜单 * @return bool */ public static function setPersonalMenuJson($menuListJson) { //json格式 $data = $menuListJson; //此处获得token所调用的函数内部有改写,此处是可在SAE平台上运行的,实际应用过程中可 //根据运行平台的不同改写getAccessToken()函数 $accessToken = AccessToken::getAccessToken(); //请求地址与创建普通菜单有区别 //创建个性化菜单之前必须先创建默认菜单 $url = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=" . $accessToken; $result = Curl::callWebServer($url, $data, 'POST'); if ($result['errcode'] == 0) { return true; } return $result; }