Я создал собственного поставщика услуг для PayPal. Когда я пытаюсь получить доступ к конфигурации изнутри провайдера, он возвращает null.
Ниже приведен код, который я написал.
public function register()
{
$this->app->singleton(ApiContext::class, function($app){
$paypalConf = $app['config']->get('paypal');
$apiContext = new ApiContext(new OAuthTokenCredential(
$paypalConf['client_id'],$paypalConf['client_secret']
));
$apiContext->setConfig($paypalConf['settings']);
return $apiContext;
});
}
Но выдает следующую ошибку
if (empty($credObj)) {
throw new PayPalInvalidCredentialException("Credential not found for " . ($userId ? $userId : " default user") .
". Please make sure your configuration/APIContext has credential information");
}
«Учетные данные для пользователя по умолчанию не найдены. Убедитесь, что в вашей конфигурации/APIContext есть учетные данные.
Это, безусловно, потому, что мой файл конфигурации возвращает значение null.
Вот мой paypal.php
return [
'client_id' => env('PAYPAL_CLIENT_ID', ''),
'client_secret' => env('PAYPAL_SECRET', ''),
'settings' => [
'mode' => env('PAYPAL_MODE', ''),
'http.ConnectionTimeOut' => 30,
'log.LogEnabled' => true,
'log.FileName' => storage_path().'/logs/paypal.log',
'log.LogLevel' => 'ERROR'
]];
и учетные данные PAYPAL существуют в файле .env.
Я попытался очистить конфигурацию и снова кэшировать ее, но это не сработало.
Обновить
Похоже, метод register не работает у поставщика услуг. Но я прописал провайдера в config/app.php
dd($paypalConf, $app['config']->get('app.name'))
, в провайдере после первой строки? Чую опечатку вроде ошибки. - person Kyslik   schedule 24.07.2018config/app.php
? - person Kyslik   schedule 24.07.2018composer dump-autoload
? - person Kyslik   schedule 24.07.2018composer dump-autoload -o
(оптимизировать), и если это сработает, у вас просто опечатка или неправильное пространство имен. Как я уже сказал в первом комментарии, я чувствую опечатку. - person Kyslik   schedule 24.07.2018