getCurrentUser(); $componentInfo = WechatOpenPlatformService::getComponentInfoByCompanyUid($currentUser->pid); if(!$componentInfo) { CommonBusinessException::throwError(Errors::OPENPLATFORM_COMPANY_INFO_NOT_EXISTS); } $config = [ 'app_id' => $componentInfo->app_id, // 开放平台账号的 appid 'secret' => $componentInfo->secret, // 开放平台账号的 secret 'token' => $componentInfo->token, // 开放平台账号的 token 'aes_key' => $componentInfo->aes_key, // 明文模式请勿填写 EncodingAESKey 'http' => [ 'throw' => true, // 状态码非 200、300 时是否抛出异常,默认为开启 'timeout' => 5.0, 'retry' => true, // 使用默认重试配置 ], ]; $app = new Application($config); $url = $app->createPreAuthorizationUrl(url('/api/channel/openPlatform/auth/'.$componentInfo->app_id), []); return $url; } public function auth(Request $request, $component_appid) { $auth_code = $request->input('auth_code'); $componentInfo = WechatOpenPlatformService::getComponentInfoByCompanyUid($component_appid); if(!$componentInfo) { CommonBusinessException::throwError(Errors::OPENPLATFORM_COMPANY_INFO_NOT_EXISTS); } $config = [ 'app_id' => $componentInfo->app_id, // 开放平台账号的 appid 'secret' => $componentInfo->secret, // 开放平台账号的 secret 'token' => $componentInfo->token, // 开放平台账号的 token 'aes_key' => $componentInfo->aes_key, // 明文模式请勿填写 EncodingAESKey 'http' => [ 'throw' => true, // 状态码非 200、300 时是否抛出异常,默认为开启 'timeout' => 5.0, 'retry' => true, // 使用默认重试配置 ], ]; $app = new Application($config); $client = $app->getClient(); $response = $client->post('/cgi-bin/component/api_query_auth', [ 'component_appid' => $component_appid, 'authorization_code' => $auth_code ]); $authorizer_appid = $response['authorization_info']['authorizer_appid']; $authorizer_refresh_token = $response['authorization_info']['authorizer_refresh_token']; $currentUser = $this->getCurrentUser(); WechatAuthorizationInfo::updateOrCreate([ 'authorizer_appid' => $authorizer_appid, 'component_appid' => $component_appid, 'user_id' => $currentUser->id, 'puser_id' => $currentUser->pid, ], [ 'authorizer_refresh_token' => $authorizer_refresh_token ]); return view('wechat.openPlatform.authSuccess')->with('url', url('/')); } }