繁体   English   中英

在Authorize.net SKD之上开发Laravel 4.2程序包-将常量放在何处?

[英]Laravel 4.2 package development on top of Authorize.net SKD - where to put Constant Variables?

我正在工作台中开发我的第一个Laravel软件包,以解决业务需求,该需求是将Authorize.net SDK集成到我们的系统账单交易中。

现在我的大部分代码都可以使用,并且可以通过我的自定义外观调用SDK函数,例如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;
}

我想1)将定义的变量存储在程序包config.php文件中,2)我要这样做,所以如果我发布程序包,其他用户可以简单地将配置文件发布到他们的app / config / packages文件夹中,这样他们可以简单地输入其独特的api信息。

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

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密钥提交到源代码管理中(这可能会造成破坏)。 您还可以利用它在不同的环境中具有不同的配置值。 引用与手动输入相关的内容:

对于“实际”应用程序,建议将所有敏感配置都保留在配置文件之外。 尽可能将数据库密码,Stripe API密钥和加密密钥之类的内容排除在配置文件之外

通常的做法是将这些定义保存在名为.env.{environment name}.php的配置文件中,该文件不会签入源代码管理。 如果更适合您,您还可以在站点的虚拟主机内部指定它们,例如使用Apache的SetEnv指令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM