我为Paypal创建了自定义服务提供商。 当我尝试从提供程序内部访问config时,它返回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'
]];
.env文件中存在PAYPAL凭据。
我曾尝试清除配置并再次对其进行缓存,但这没有用。
似乎 register 方法在服务提供商中不起作用。 但是我已经在config / app.php
中注册了提供程序答案 0 :(得分:2)
没有更多信息...
清除配置缓存:php artisan config:clear
如果您有一个缓存的配置,并且向配置文件或环境中添加了任何内容,包括向config/app.php
添加了另一个服务提供商,则它将不会被拾取,因为它使用了配置的缓存版本。
您只需在更改任何配置文件或环境后进入tinker
并请求这些配置值,即可验证这种情况。
答案 1 :(得分:0)
在配置文件夹paypal.php
中,而不是paypal.config
中:
<?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'
]];
然后您可以获取值:
Config::get('paypal.client_id');
Config::get('paypal.settings.mode');