config = [ 'app_id' => AdminConfig::getConfigValue('appid', 'wechat'), 'secret' => AdminConfig::getConfigValue('secret', 'wechat') ]; $this->app = Factory::officialAccount($this->config); break; case 'wxMiniProgram': $this->config = [ 'app_id' => AdminConfig::getConfigValue('mini_appid', 'wechat'), 'secret' => AdminConfig::getConfigValue('mini_secret', 'wechat') ]; $this->app = Factory::miniProgram($this->config); break; } return parent::__construct(); } // 返回实例 public function getApp() { return $this->app; } //小程序:获取openid&session_key public function code($code) { return $this->app->auth->session($code); } /** * 获取授权token网页授权 * * @param string $code * @return mixed|string */ public function getOfficialAccessToken($code = '') { $params = [ 'appid' => $this->config['app_id'], 'secret' => $this->config['secret'], 'code' => $code, 'grant_type' => 'authorization_code' ]; $ret = Http::sendRequest('https://api.weixin.qq.com/sns/oauth2/access_token', $params, 'GET'); if ($ret['ret']) { $ar = json_decode($ret['msg'], true); return $ar; } return []; } public function oauth() { $oauth = $this->app->oauth; return $oauth; } //解密信息 public function decryptData($session, $iv, $encryptData) { $data = $this->app->encryptor->decryptData($session, $iv, $encryptData); return $data; } public function unify($orderBody) { $result = $this->app->order->unify($orderBody); return $result; } public function bridgeConfig($prepayId) { $jssdk = $this->app->jssdk; $config = $jssdk->bridgeConfig($prepayId, false); return $config; } public function notify() { $result = $this->app; return $result; } //获取accessToken public function getAccessToken() { $accessToken = $this->app->access_token; $token = $accessToken->getToken(); // token 数组 token['access_token'] 字符串 //$token = $accessToken->getToken(true); // 强制重新从微信服务器获取 token. return $token; } public function sendTemplateMessage($attributes) { extract($attributes); $this->app->template_message->send([ 'touser' => $openId, 'template_id' => $templateId, 'page' => $page, 'form_id' => $formId, 'data' => $data, 'emphasis_keyword' => $emphasis_keyword ]); } // 同步小程序直播 public function live(Array $params = []) { $default = [ 'start' => 0, 'limit' => 10 ]; $params = array_merge($default, $params); $default = json_encode($params); $access_token = $this->app->access_token->getToken(); $getRoomsListUrl = "https://api.weixin.qq.com/wxa/business/getliveinfo?access_token={$access_token['access_token']}"; $headers = ['Content-type: application/json']; $options = [ CURLOPT_HTTPHEADER => $headers ]; $result = Http::sendRequest($getRoomsListUrl, $default, 'POST', $options); if (isset($result['ret']) && $result['ret']) { $msg = json_decode($result['msg'], true); $result = $msg; } $rooms = []; if ($result && $result['errcode'] == 0 && $result['errmsg'] === 'ok') { $rooms = $result['room_info']; } return $rooms; } // 小程序直播回放 public function liveReplay(array $params = []) { $default = [ 'room_id' => 0, 'start' => 0, 'limit' => 20 ]; $params = array_merge($default, $params); $default = json_encode($params); $access_token = $this->app->access_token->getToken(); $getPlayBackListUrl = "https://api.weixin.qq.com/wxa/business/getliveinfo?access_token={$access_token['access_token']}"; $headers = ['Content-type: application/json']; $options = [ CURLOPT_HTTPHEADER => $headers ]; $result = Http::sendRequest($getPlayBackListUrl, $default, 'POST', $options); if (isset($result['ret']) && $result['ret']) { $msg = json_decode($result['msg'], true); $result = $msg; } $liveReplay = []; if ($result && $result['errcode'] == 0 && $result['errmsg'] === 'ok') { $liveReplay = $result['live_replay']; } return $liveReplay; } public function menu($act = 'create', $buttons = '') { $result = $this->app->menu->$act($buttons); return $result; } //通过openid获取已经关注的用户信息 public function getSubscribeUserInfoByOpenId(array $openIdsArray) { $result = $this->app->user->select($openIdsArray); return $result; } }