Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4.2包在Authorize.net SKD上的开发-常量变量放在哪里?_Php_Laravel - Fatal编程技术网

Php Laravel 4.2包在Authorize.net SKD上的开发-常量变量放在哪里?

Php Laravel 4.2包在Authorize.net SKD上的开发-常量变量放在哪里?,php,laravel,Php,Laravel,我正在workbench中开发我的第一个Laravel包,以解决业务需求,即为我们的系统计费事务集成Authorize.net SDK 我的大部分代码现在都在工作,我可以通过自定义外观调用SDK函数,如so AuthorizeMe::authorizeAndCapture();我的问题是Authroize.net SDK需要使用已定义的变量。它们的示例用法如下: define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN"); define("AUTHORIZE

我正在workbench中开发我的第一个Laravel包,以解决业务需求,即为我们的系统计费事务集成Authorize.net SDK

我的大部分代码现在都在工作,我可以通过自定义外观调用SDK函数,如so AuthorizeMe::authorizeAndCapture();我的问题是Authroize.net SDK需要使用已定义的变量。它们的示例用法如下:

define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN");
define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY");
define("AUTHORIZENET_SANDBOX", true);
$sale           = new AuthorizeNetAIM;
$sale->amount   = "5.99";
$sale->card_num = '6011000000000012';
$sale->exp_date = '04/15';
$response = $sale->authorizeAndCapture();
if ($response->approved) {
    $transaction_id = $response->transaction_id;
}
return array(

    /*
    |--------------------------------------------------------------------------
    | Define credentials
    |--------------------------------------------------------------------------
    |
    | Your credentials for both live environment and sandbox
    |
    */

    // Live environment
    'LIVE_LOGIN_ID' => 'YOUR ID',
    'LIVE_TRANSACTION_KEY' => 'YOUR KEY',

    // Sandbox evnironment
    'SANDBOX_LOGIN_ID' => 'YOUR SANDBOX ID',
    'SANDBOX_TRANSACTION_KEY' => 'YOUR SANDBOX KEY',

    /*
    |--------------------------------------------------------------------------
    | Define environment
    |--------------------------------------------------------------------------
    |
    | Dictates if we're in sandbox mode or live mode
    |
    */

    'SANDBOX' => true,
);
我想1)将定义的变量存储在packages config.php文件中,2)我想这样做如果我发布了包,其他用户只需将配置文件发布到他们的app/config/packages文件夹中,这样他们就可以简单地输入他们唯一的api信息

我尝试将API变量存储在config.php数组中,如下所示:

define("AUTHORIZENET_API_LOGIN_ID", "YOURLOGIN");
define("AUTHORIZENET_TRANSACTION_KEY", "YOURKEY");
define("AUTHORIZENET_SANDBOX", true);
$sale           = new AuthorizeNetAIM;
$sale->amount   = "5.99";
$sale->card_num = '6011000000000012';
$sale->exp_date = '04/15';
$response = $sale->authorizeAndCapture();
if ($response->approved) {
    $transaction_id = $response->transaction_id;
}
return array(

    /*
    |--------------------------------------------------------------------------
    | Define credentials
    |--------------------------------------------------------------------------
    |
    | Your credentials for both live environment and sandbox
    |
    */

    // Live environment
    'LIVE_LOGIN_ID' => 'YOUR ID',
    'LIVE_TRANSACTION_KEY' => 'YOUR KEY',

    // Sandbox evnironment
    'SANDBOX_LOGIN_ID' => 'YOUR SANDBOX ID',
    'SANDBOX_TRANSACTION_KEY' => 'YOUR SANDBOX KEY',

    /*
    |--------------------------------------------------------------------------
    | Define environment
    |--------------------------------------------------------------------------
    |
    | Dictates if we're in sandbox mode or live mode
    |
    */

    'SANDBOX' => true,
);
我不相信定义的变量可以在类中设置,所以我不确定如何使用配置文件来满足我的需要

例如,类似这样的东西似乎不起作用:

class MyClass {
     public function __construct($app=null)
     {
       $this->app = $app ?: app();
     }

     public function billClient()
     {
       define("LIVE_LOGIN_ID", $this->app['config']->get('LIVE_LOGIN_ID'));
     }    
}

最后,我不想为了简单地使用我的实现而重新编写供应商软件包,因为我觉得确保我的软件包包装器位于顶部非常重要,这样它就可以在将来进行任何更新。

存储静态数据,这些数据可以根据软件在服务器内部运行的服务器进行更改。我建议这样做也是为了避免API密钥被提交到源代码管理中(这可能会造成损害)。您还可以利用它在不同的环境中具有不同的配置值。从链接到手动输入的引用:

对于“真正的”应用程序,建议将所有敏感配置保留在配置文件之外。数据库密码、条带API密钥和加密密钥等内容应尽可能远离配置文件


一般做法是在名为
.env.{environment name}.php
的配置文件中定义这些内容,该文件不会签入到源代码管理中。如果对您来说效果更好,您还可以在站点的虚拟主机中指定它们,例如使用Apache的
SetEnv
指令。

谢谢您提供的信息。你是对的-这个例子应该使用define而不是defined,我已经更新了我的帖子。我快速浏览了一下类,它看起来像是他们试图获取这些常量的任何地方,他们也通过构造函数或方法传递这些值。我相信你不用在你的应用程序中定义任何东西,也不用让你的包装器通过环境变量来处理所有这些。这非常有帮助,你的建议让我几乎明白了-我现在最大的问题是我希望能够在某个地方定义一次api值,这样我就不必在每个方法(如billClient)中定义api值,然后再在ReturnClient中定义api值。有什么建议吗?而不是使用$this->app['config']我接受了您之前的建议,使用这些值定义了一个.env.local.php文件,并成功地在define函数中使用了$_env['VARIABLE']。谢谢。我还更新了上面的示例,以反映$this->app。。。是从哪里来的