all('client') == 'student') { $redirect_uri = urlencode(getenv('SERVER_DOMAIN') . "/h5/student#/pages/login/login");//重定向地址 } else { $redirect_uri = urlencode(getenv('SERVER_DOMAIN') . "/h5/teacher#/pages/login/login");//重定向地址 } $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect"; return redirect($url); } /** * @desc 获取网页授权code的access_token * @param $code * @return array|void * @throws \GuzzleHttp\Exception\GuzzleException */ public static function getCodeAccessToken($code) { try { $client = new Client(['base_uri' => self::BASE_URI]); $response = $client->request('get', 'sns/oauth2/access_token', [ 'query' => [ 'appid' => getenv('APP_ID'), 'secret' => getenv('APP_SECRET'), 'code' => $code, 'grant_type' => 'authorization_code' ] ]); $response_contents = $response->getBody()->getContents(); raw_log('wechat/code_access_token', ['result' => $response_contents]); if ($response->getStatusCode() == 200) { $result = json_decode($response_contents, true); raw_log('wechat/code_access_token', ['result' => $result]); if (isset($result['errcode'])) { throw new Exception($result['errmsg']); } return $result; } } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 获取微信用户信息 * @param $openid * @param $access_token * @return array|mixed|void * @throws \GuzzleHttp\Exception\GuzzleException */ public static function getUserInfo($openid, $access_token) { try { $client = new Client(['base_uri' => self::BASE_URI]); $response = $client->request('get', 'sns/userinfo', [ 'query' => [ 'access_token' => $access_token, 'openid' => $openid, 'lang' => 'zh_CN', ] ]); $response_contents = $response->getBody()->getContents(); raw_log('wechat/get_user_info', ['result' => $response_contents]); if ($response->getStatusCode() == 200) { $result = json_decode($response_contents, true); raw_log('wechat/get_user_info', ['result' => $result]); if (isset($result['errcode'])) { throw new Exception($result['errmsg']); } return $result; } }catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } }