通过Laravel控制器的Braintree网关

时间:2018-03-19 22:21:46

标签: php laravel braintree

我正在为网站设置付款方式,我希望通过我的整个Laravel 5应用程序传递默认的Braintree网关。我在我的AppServiceProvider.php中有以下内容,但不确定它应该在哪里。

public function boot() {
    Schema::defaultStringLength(191);

    $gateway = new Braintree_Gateway([
        'environment' => env('BRAINTREE_ENVIRONMENT'),
        'merchantId' => env('BRAINTREE_MERCHANT_ID'),
        'publicKey' => env('BRAINTREE_PUBLIC_KEY'),
        'privateKey' => env('BRAINTREE_PRIVATE_KEY')
    ]);
}

它应该进入该文件吗?或者我应该在BaseViewController中设置它?

1 个答案:

答案 0 :(得分:1)

这是Laravel service container的完美用例。

在服务提供商(您可以制作新的或使用默认的$this->app->bind('PaymentGateway', function ($app) { return new Braintree_Gateway([...]); }); )中,您可以将通用的PaymentGateway绑定到Braintree支付网关的特定实例:

public function store(PaymentGateway $gateway)
{
    // Do whatever you need with the gateway
    $gateway->doSomething();
}

然后,在您的应用中需要使用该网关的任何地方(例如,在您的某个控制器的store()方法中),您可以这样做:

cms::MessageProducer

这是一种很好的方法,因为您不需要每次都创建新实例并手动添加凭据。您可以随时在任何需要的地方输入提示,Laravel会自动为您解决。