我正在为网站设置付款方式,我希望通过我的整个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中设置它?
答案 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会自动为您解决。