* @version : HuoMp 1.0 */ namespace huoMpMsg\controller; use huo\controller\common\Base; use huoMpMsg\status\OfficialAccountStatus; class OaMenuApi extends Base { /** * 自定义菜单创建接口 * https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013 * * @param string $wx_app_id 第三方用户唯一凭证 * @param string $wx_app_secret 第三方用户唯一凭证密钥,即appsecret * @param array $menu_data 菜单数据 * * @return array */ public function createMenu($wx_app_id, $wx_app_secret, $menu_data = []) { $_url = 'https://api.weixin.qq.com/cgi-bin/menu/create'; $_access_token = Common::getAccessToken($wx_app_id, $wx_app_secret); $_url = $_url.'?access_token='.$_access_token; $_param = json_encode($menu_data, JSON_UNESCAPED_UNICODE); $_header = ['Content-Type: application/octet-stream; charset=utf-8']; $_ret = Common::curl($_url, $_param, 'POST', $_header); $_rdata = []; if (Common::isJson($_ret)) { $_rdata = json_decode($_ret, true); } if (isset($_rdata['errcode']) && '0' != $_rdata['errcode']) { $_code = $_rdata['errcode']; return $this->huoError($_code, $_rdata['errmsg']); } $_code = OfficialAccountStatus::NO_ERROR; return $this->huoSuccess($_code, OfficialAccountStatus::getMsg($_code), $_rdata); } /** * 自定义菜单查询接口 * https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141014 * * @param string $wx_app_id 第三方用户唯一凭证 * @param string $wx_app_secret 第三方用户唯一凭证密钥,即appsecret * * @return array */ public function getMenu($wx_app_id, $wx_app_secret) { $_url = 'https://api.weixin.qq.com/cgi-bin/menu/get'; $_access_token = Common::getAccessToken($wx_app_id, $wx_app_secret); $_url = $_url.'?access_token='.$_access_token; $_ret = Common::curl($_url, ''); $_rdata = []; if (Common::isJson($_ret)) { $_rdata = json_decode($_ret, true); } if (isset($_rdata['errcode']) && '0' != $_rdata['errcode']) { $_code = $_rdata['errcode']; return $this->huoError($_code, $_rdata['errmsg']); } $_code = OfficialAccountStatus::NO_ERROR; return $this->huoSuccess($_code, OfficialAccountStatus::getMsg($_code), $_rdata); } /** * 自定义菜单删除接口 * https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141015 * * 使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。 * * @param string $wx_app_id 第三方用户唯一凭证 * @param string $wx_app_secret 第三方用户唯一凭证密钥,即appsecret * * @return array */ public function deleteAllMenu($wx_app_id, $wx_app_secret) { $_url = 'https://api.weixin.qq.com/cgi-bin/menu/delete'; $_access_token = Common::getAccessToken($wx_app_id, $wx_app_secret); $_url = $_url.'?access_token='.$_access_token; $_ret = Common::curl($_url, ''); $_rdata = []; if (Common::isJson($_ret)) { $_rdata = json_decode($_ret, true); } if (isset($_rdata['errcode']) && '0' != $_rdata['errcode']) { $_code = $_rdata['errcode']; return $this->huoError($_code, $_rdata['errmsg']); } $_code = OfficialAccountStatus::NO_ERROR; return $this->huoSuccess($_code, OfficialAccountStatus::getMsg($_code), $_rdata); } /** * 个性化菜单接口 * https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455782296 * 为了帮助公众号实现灵活的业务运营,微信公众平台新增了个性化菜单接口,开发者可以通过该接口,让公众号的不同用户群体看到不一样的自定义菜单。该接口开放给已认证订阅号和已认证服务号。 * * * 1、用户标签(开发者的业务需求可以借助用户标签来完成) * 2、性别 * 3、手机操作系统 * 4、地区(用户在微信客户端设置的地区) * 5、语言(用户在微信客户端设置的语言) * * @param string $wx_app_id 第三方用户唯一凭证 * @param string $wx_app_secret 第三方用户唯一凭证密钥,即appsecret * @param int $menuid 菜单ID * * @return array */ public function addConditionalMenu($wx_app_id, $wx_app_secret, $menuid = 0) { $_url = 'https://api.weixin.qq.com/cgi-bin/menu/addconditional'; $_access_token = Common::getAccessToken($wx_app_id, $wx_app_secret); $_url = $_url.'?access_token='.$_access_token; $_param['menuid'] = $menuid; $_param = json_encode($_param); $_header = ['Content-Type: application/octet-stream; charset=utf-8']; $_ret = Common::curl($_url, $_param, 'POST', $_header); $_rdata = []; if (Common::isJson($_ret)) { $_rdata = json_decode($_ret, true); } if (isset($_rdata['errcode']) && '0' != $_rdata['errcode']) { $_code = $_rdata['errcode']; return $this->huoError($_code, $_rdata['errmsg']); } $_code = OfficialAccountStatus::NO_ERROR; return $this->huoSuccess($_code, OfficialAccountStatus::getMsg($_code), $_rdata); } /** * 测试个性化菜单匹配结果 * https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455782296 * * @param string $wx_app_id 第三方用户唯一凭证 * @param string $wx_app_secret 第三方用户唯一凭证密钥,即appsecret * @param string $open_id 玩家openid * * @return array */ public function tryMatchConditionalMenu($wx_app_id, $wx_app_secret, $open_id) { $_url = 'https://api.weixin.qq.com/cgi-bin/menu/trymatch'; $_access_token = Common::getAccessToken($wx_app_id, $wx_app_secret); $_url = $_url.'?access_token='.$_access_token; $_param['user_id'] = $open_id; $_param = json_encode($_param); $_header = ['Content-Type: application/octet-stream; charset=utf-8']; $_ret = Common::curl($_url, $_param, 'POST', $_header); $_rdata = []; if (Common::isJson($_ret)) { $_rdata = json_decode($_ret, true); } if (isset($_rdata['errcode']) && '0' != $_rdata['errcode']) { $_code = $_rdata['errcode']; return $this->huoError($_code, $_rdata['errmsg']); } $_code = OfficialAccountStatus::NO_ERROR; return $this->huoSuccess($_code, OfficialAccountStatus::getMsg($_code), $_rdata); } }