From c4e629c84f58b734254b0701ffed71ad2d1c3fbc Mon Sep 17 00:00:00 2001 From: blkmutt Date: Fri, 21 Mar 2014 08:15:53 -0400 Subject: [PATCH 1/8] Created database migratioin, updated models, updated .gitignore to ignore a .project file. --- .gitignore | 3 ++- app/database/seeds/DatabaseSeeder.php | 3 +++ app/models/Gateway.php | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0981b45f552c..d4e3a29cc0f6 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,5 @@ /ninja.sublime-project /ninja.sublime-workspace /tests/_log -.idea \ No newline at end of file +.idea +.project \ No newline at end of file diff --git a/app/database/seeds/DatabaseSeeder.php b/app/database/seeds/DatabaseSeeder.php index 4d194ed466c0..955e643203b9 100755 --- a/app/database/seeds/DatabaseSeeder.php +++ b/app/database/seeds/DatabaseSeeder.php @@ -18,6 +18,9 @@ class DatabaseSeeder extends Seeder { $this->call('CountriesSeeder'); $this->command->info('Seeded the countries!'); + + $this->call('PaymentLibrariesSeeder'); + $this->command->info('Seeded the Payment Libraries!'); } } \ No newline at end of file diff --git a/app/models/Gateway.php b/app/models/Gateway.php index 2b072d1f290f..e0033bbf0059 100755 --- a/app/models/Gateway.php +++ b/app/models/Gateway.php @@ -4,4 +4,9 @@ class Gateway extends Eloquent { public $timestamps = false; protected $softDelete = false; + + public function paymentlibrary() + { + return $this->belongsTo('PaymentLibrary'); + } } \ No newline at end of file From 433c51886eab298c1b3b0ea18f7c33f9b06122e4 Mon Sep 17 00:00:00 2001 From: blkmutt Date: Fri, 21 Mar 2014 08:16:37 -0400 Subject: [PATCH 2/8] Updated migration, seeder, and model files. --- ..._03_20_200300_create_payment_libraries.php | 61 +++++++++++++++++++ app/database/seeds/PaymentLibrariesSeeder.php | 44 +++++++++++++ app/models/PaymentLibrary.php | 11 ++++ 3 files changed, 116 insertions(+) create mode 100644 app/database/migrations/2014_03_20_200300_create_payment_libraries.php create mode 100644 app/database/seeds/PaymentLibrariesSeeder.php create mode 100644 app/models/PaymentLibrary.php diff --git a/app/database/migrations/2014_03_20_200300_create_payment_libraries.php b/app/database/migrations/2014_03_20_200300_create_payment_libraries.php new file mode 100644 index 000000000000..d4c7855a706e --- /dev/null +++ b/app/database/migrations/2014_03_20_200300_create_payment_libraries.php @@ -0,0 +1,61 @@ +increments('id'); + $t->timestamps(); + + $t->string('name'); + $t->boolean('visible')->default(true); + }); + + DB::table('payment_libraries')->insert(['name' => 'Omnipay']); + DB::table('payment_libraries')->insert(['name' => 'PHP-Payments']); + + Schema::table('gateways', function($table) + { + $table->unsignedInteger('payment_library_id')->default(1); + }); + + DB::table('gateways')->update(['payment_library_id' => 1]); + + Schema::table('gateways', function($table) + { + $table->foreign('payment_library_id')->references('id')->on('payment_libraries')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + if (Schema::hasColumn('gateways', 'payment_library_id')) + { + Schema::table('gateways', function($table) + { + $table->dropForeign('gateways_payment_library_id_foreign'); + $table->dropColumn('payment_library_id'); + }); + } + + Schema::dropIfExists('payment_libraries'); + } + +} \ No newline at end of file diff --git a/app/database/seeds/PaymentLibrariesSeeder.php b/app/database/seeds/PaymentLibrariesSeeder.php new file mode 100644 index 000000000000..b7c798904f52 --- /dev/null +++ b/app/database/seeds/PaymentLibrariesSeeder.php @@ -0,0 +1,44 @@ +'Authorize.Net AIM', 'provider'=>'AuthorizeNet_AIM', 'payment_library_id' => 2), + array('name'=>'Authorize.Net SIM', 'provider'=>'AuthorizeNet_SIM', 'payment_library_id' => 2), + array('name'=>'CardSave', 'provider'=>'CardSave', 'payment_library_id' => 2), + array('name'=>'Eway Rapid', 'provider'=>'Eway_Rapid', 'payment_library_id' => 2), + array('name'=>'FirstData Connect', 'provider'=>'FirstData_Connect', 'payment_library_id' => 2), + array('name'=>'GoCardless', 'provider'=>'GoCardless', 'payment_library_id' => 2), + array('name'=>'Migs ThreeParty', 'provider'=>'Migs_ThreeParty', 'payment_library_id' => 2), + array('name'=>'Migs TwoParty', 'provider'=>'Migs_TwoParty', 'payment_library_id' => 2), + array('name'=>'Mollie', 'provider'=>'Mollie', 'payment_library_id' => 2), + array('name'=>'MultiSafepay', 'provider'=>'MultiSafepay', 'payment_library_id' => 2), + array('name'=>'Netaxept', 'provider'=>'Netaxept', 'payment_library_id' => 2), + array('name'=>'NetBanx', 'provider'=>'NetBanx', 'payment_library_id' => 2), + array('name'=>'PayFast', 'provider'=>'PayFast', 'payment_library_id' => 2), + array('name'=>'Payflow Pro', 'provider'=>'Payflow_Pro', 'payment_library_id' => 2), + array('name'=>'PaymentExpress PxPay', 'provider'=>'PaymentExpress_PxPay', 'payment_library_id' => 2), + array('name'=>'PaymentExpress PxPost', 'provider'=>'PaymentExpress_PxPost', 'payment_library_id' => 2), + array('name'=>'PayPal Express', 'provider'=>'PayPal_Express', 'payment_library_id' => 2), + array('name'=>'PayPal Pro', 'provider'=>'PayPal_Pro', 'payment_library_id' => 2), + array('name'=>'Pin', 'provider'=>'Pin', 'payment_library_id' => 2), + array('name'=>'SagePay Direct', 'provider'=>'SagePay_Direct', 'payment_library_id' => 2), + array('name'=>'SagePay Server', 'provider'=>'SagePay_Server', 'payment_library_id' => 2), + array('name'=>'SecurePay DirectPost', 'provider'=>'SecurePay_DirectPost', 'payment_library_id' => 2), + array('name'=>'Stripe', 'provider'=>'Stripe', 'payment_library_id' => 2), + array('name'=>'TargetPay Direct eBanking', 'provider'=>'TargetPay_Directebanking', 'payment_library_id' => 2), + array('name'=>'TargetPay Ideal', 'provider'=>'TargetPay_Ideal', 'payment_library_id' => 2), + array('name'=>'TargetPay Mr Cash', 'provider'=>'TargetPay_Mrcash', 'payment_library_id' => 2), + array('name'=>'TwoCheckout', 'provider'=>'TwoCheckout', 'payment_library_id' => 2), + array('name'=>'WorldPay', 'provider'=>'WorldPay', 'payment_library_id' => 2) + ]; + + foreach ($gateways as $gateway) + { + Gateway::create($gateway); + } + } +} \ No newline at end of file diff --git a/app/models/PaymentLibrary.php b/app/models/PaymentLibrary.php new file mode 100644 index 000000000000..a70caa6a9948 --- /dev/null +++ b/app/models/PaymentLibrary.php @@ -0,0 +1,11 @@ +hasMany('Gateway'); + } +} \ No newline at end of file From b1a525a7f4b76c512070c0b0ba83f4b3e615288f Mon Sep 17 00:00:00 2001 From: blkmutt Date: Sun, 23 Mar 2014 10:22:56 -0400 Subject: [PATCH 3/8] Added code for PHP-Payments to payment controller and to JSON for Composer. --- app/controllers/PaymentController.php | 139 +++++++++++++++++++------- composer.json | 3 +- 2 files changed, 106 insertions(+), 36 deletions(-) diff --git a/app/controllers/PaymentController.php b/app/controllers/PaymentController.php index af2834da19bc..ba8af464babc 100755 --- a/app/controllers/PaymentController.php +++ b/app/controllers/PaymentController.php @@ -129,8 +129,9 @@ class PaymentController extends \BaseController private function getPaymentDetails($invoice, $input = null) { $key = $invoice->invoice_number . '_details'; + $paymentLibrary = $invoice->client->account->account_gateways[0]->gateway->paymentlibrary; - if ($input) + if ($input && $paymentLibrary->name == "Omnipay") { $data = [ 'firstName' => $input['first_name'], @@ -152,6 +153,33 @@ class PaymentController extends \BaseController ]; Session::put($key, $data); + } + else if ($input && $paymentLibrary->name == "PHP-Payments") + { + $input = Input::all(); + $data = [ + 'first_name' => $input['first_name'], + 'last_name' => $input['last_name'], + 'cc_number' => $input['card_number'], + 'cc_exp' => $input['expiration_month'].$input['expiration_year'], + 'cc_code' => $input['cvv'], + 'street' => $input['address1'], + 'street2' => $input['address2'], + 'city' => $input['city'], + 'state' => $input['state'], + 'postal_code' => $input['postal_code'], + 'amt' => $invoice->amount, + 'ship_to_street' => $input['address1'], + 'ship_to_city' => $input['city'], + 'ship_to_state' => $input['state'], + 'ship_to_postal_code' => $input['postal_code'], + 'currency_code' => $invoice->client->currency->code, + 'returnUrl' => URL::to('complete'), + 'cancelUrl' => URL::to('/') + ]; + + Session::put($key, $data); + return $data; } else if (Session::get($key)) { @@ -235,7 +263,7 @@ class PaymentController extends \BaseController $invitation = Invitation::with('invoice.invoice_items', 'invoice.client.currency', 'invoice.client.account.account_gateways.gateway')->where('invitation_key', '=', $invitationKey)->firstOrFail(); $invoice = $invitation->invoice; $accountGateway = $invoice->client->account->account_gateways[0]; - $gateway = self::createGateway($accountGateway); + $paymentLibrary = $accountGateway->gateway->paymentlibrary; if ($onSite) { @@ -247,44 +275,85 @@ class PaymentController extends \BaseController $client->postal_code = trim(Input::get('postal_code')); $client->save(); } + try { - $details = self::getPaymentDetails($invoice, Input::all()); - $response = $gateway->purchase($details)->send(); - $ref = $response->getTransactionReference(); - - if (!$ref) - { - Session::flash('error', $response->getMessage()); - return Redirect::to('payment/' . $invitationKey) - ->withInput(); + if($paymentLibrary->name == "Omnipay") + { + $gateway = self::createGateway($accountGateway); + $details = self::getPaymentDetails($invoice, Input::all()); + $response = $gateway->purchase($details)->send(); + $ref = $response->getTransactionReference(); + + if (!$ref) + { + Session::flash('error', $response->getMessage()); + return Redirect::to('payment/' . $invitationKey) + ->withInput(); + } + + if ($response->isSuccessful()) + { + $payment = self::createPayment($invitation, $ref); + + $invoice->invoice_status_id = INVOICE_STATUS_PAID; + $invoice->save(); + + Event::fire('invoice.paid', $payment); + + Session::flash('message', 'Successfully applied payment'); + return Redirect::to('view/' . $payment->invitation->invitation_key); + } + else if ($response->isRedirect()) + { + $invitation->transaction_reference = $ref; + $invitation->save(); + + $response->redirect(); + } + else + { + Session::flash('error', $response->getMessage()); + return Utils::fatalError('Sorry, there was an error processing your payment. Please try again later.

', $response->getMessage()); + } } + else if ($input && $paymentLibrary->name == "PHP-Payments") + { + $p = new PHP_Payments; + + $config = Payment_Utility::load('config', '/path/to/your/gateway/config'); + $details = self::getPaymentDetails($invoice, Input::all()); + + + +$response = $p->oneoff_payment('name_of_payment_driver', $details, $config); - if ($response->isSuccessful()) - { - $payment = self::createPayment($invitation, $ref); - - $invoice->invoice_status_id = INVOICE_STATUS_PAID; - $invoice->save(); - - Event::fire('invoice.paid', $payment); - - Session::flash('message', 'Successfully applied payment'); - return Redirect::to('view/' . $payment->invitation->invitation_key); - } - else if ($response->isRedirect()) - { - $invitation->transaction_reference = $ref; - $invitation->save(); - - $response->redirect(); - } - else - { - Session::flash('error', $response->getMessage()); - return Utils::fatalError('Sorry, there was an error processing your payment. Please try again later.

', $response->getMessage()); - } + if ($response->status == 'Success') + { + $payment = self::createPayment($invitation, $ref); + + $invoice->invoice_status_id = INVOICE_STATUS_PAID; + $invoice->save(); + + Event::fire('invoice.paid', $payment); + + Session::flash('message', 'Successfully applied payment'); + return Redirect::to('view/' . $payment->invitation->invitation_key); + } + else if ($response->isRedirect()) + { + $invitation->transaction_reference = $ref; + $invitation->save(); + + $response->redirect(); + } + else + { + Session::flash('error', $response->getMessage()); + return Utils::fatalError('Sorry, there was an error processing your payment. Please try again later.

', $response->getMessage()); + } + } } catch (\Exception $e) { diff --git a/composer.json b/composer.json index c3c01854e0f6..4608b5fb0335 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,8 @@ "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php", - "app/libraries" + "app/libraries", + "vendor/php-payments/lib" ], "psr-0" : { "ninja" : "app/" From 33ff8e1d6054d67cc360ebfb937b41822e957e84 Mon Sep 17 00:00:00 2001 From: blkmutt Date: Tue, 25 Mar 2014 20:59:33 -0400 Subject: [PATCH 4/8] Updated account controller, data objects, and logos for recommended gateways. --- app/controllers/AccountController.php | 45 +++++++++++-- ...0_add_sort_and_recommended_to_gateways.php | 49 +++++++++++++++ app/database/seeds/PaymentLibrariesSeeder.php | 48 ++++++-------- app/models/Gateway.php | 7 ++- app/models/PaymentLibrary.php | 2 +- app/views/accounts/payments.blade.php | 59 ++++++++++++++---- .../images/gateways/logo_AuthorizeNet_AIM.png | Bin 0 -> 3688 bytes public/images/gateways/logo_BeanStream.png | Bin 0 -> 3228 bytes .../gateways/logo_FirstData_Connect.png | Bin 0 -> 2501 bytes public/images/gateways/logo_PayPal_Pro.png | Bin 0 -> 4375 bytes public/images/gateways/logo_TwoCheckout.png | Bin 0 -> 2550 bytes public/images/gateways/logo_iTransact.png | Bin 0 -> 5902 bytes 12 files changed, 163 insertions(+), 47 deletions(-) create mode 100644 app/database/migrations/2014_03_25_102200_add_sort_and_recommended_to_gateways.php create mode 100755 public/images/gateways/logo_AuthorizeNet_AIM.png create mode 100755 public/images/gateways/logo_BeanStream.png create mode 100755 public/images/gateways/logo_FirstData_Connect.png create mode 100755 public/images/gateways/logo_PayPal_Pro.png create mode 100755 public/images/gateways/logo_TwoCheckout.png create mode 100755 public/images/gateways/logo_iTransact.png diff --git a/app/controllers/AccountController.php b/app/controllers/AccountController.php index d82c2ebccf32..91b450d11988 100755 --- a/app/controllers/AccountController.php +++ b/app/controllers/AccountController.php @@ -102,19 +102,56 @@ class AccountController extends \BaseController { { $accountGateway = $account->account_gateways[0]; $config = $accountGateway->config; - } + } + + $recommendedGateways = Gateway::remember(DEFAULT_QUERY_CACHE) + ->where('recommended', '=', '1') + ->orderBy('sort_order') + ->get(); + $recommendedGatewayArray = array(); + + foreach($recommendedGateways as $recommendedGateway) + { + $newRow = count($recommendedGatewayArray) + 1 == round(count($recommendedGateways) / 2); + + $arrayItem = array( + $recommendedGateway->name => $recommendedGateway->provider, + 'data-name' => $recommendedGateway->name, + 'data-id' => $recommendedGateway->id, + 'data-label' => $recommendedGateway->provider, + 'data-value' => $recommendedGateway->name, + 'value' => $recommendedGateway->id, + 'data-imageUrl' => $recommendedGateway->getLogoUrl(), + 'data-siteUrl' => $recommendedGateway->site_url, + 'data-newRow' => $newRow + ); + $recommendedGatewayArray[$recommendedGateway->name] = $arrayItem; + + + } $data = [ 'account' => $account, 'accountGateway' => $accountGateway, 'config' => json_decode($config), - 'gateways' => Gateway::remember(DEFAULT_QUERY_CACHE)->get(), + 'gateways' => Gateway::remember(DEFAULT_QUERY_CACHE) + ->orderBy('name') + ->get(), + 'recommendedGateways' => $recommendedGatewayArray, ]; foreach ($data['gateways'] as $gateway) { - $gateway->fields = Omnipay::create($gateway->provider)->getDefaultParameters(); - + $paymentLibrary = $gateway->paymentlibrary; + + if($paymentLibrary->name == 'Omnipay') + { + $gateway->fields = Omnipay::create($gateway->provider)->getDefaultParameters(); + } + else { + $gateway->fields = array(); + } + if ($accountGateway && $accountGateway->gateway_id == $gateway->id) { $accountGateway->fields = $gateway->fields; diff --git a/app/database/migrations/2014_03_25_102200_add_sort_and_recommended_to_gateways.php b/app/database/migrations/2014_03_25_102200_add_sort_and_recommended_to_gateways.php new file mode 100644 index 000000000000..535636f90e6a --- /dev/null +++ b/app/database/migrations/2014_03_25_102200_add_sort_and_recommended_to_gateways.php @@ -0,0 +1,49 @@ +unsignedInteger('sort_order')->default(10000); + $table->boolean('recommended'); + $table->string('site_url', 200); + }); + } + + public function down() + { + if (Schema::hasColumn('gateways', 'sort_order')) + { + Schema::table('gateways', function($table) + { + $table->dropColumn('sort_order'); + }); + } + + if (Schema::hasColumn('gateways', 'recommended')) + { + Schema::table('gateways', function($table) + { + $table->dropColumn('recommended'); + }); + } + + if (Schema::hasColumn('gateways', 'site_url')) + { + Schema::table('gateways', function($table) + { + $table->dropColumn('site_url'); + }); + } + } +} diff --git a/app/database/seeds/PaymentLibrariesSeeder.php b/app/database/seeds/PaymentLibrariesSeeder.php index b7c798904f52..2776965681a3 100644 --- a/app/database/seeds/PaymentLibrariesSeeder.php +++ b/app/database/seeds/PaymentLibrariesSeeder.php @@ -6,39 +6,31 @@ class PaymentLibrariesSeeder extends Seeder public function run() { $gateways = [ - array('name'=>'Authorize.Net AIM', 'provider'=>'AuthorizeNet_AIM', 'payment_library_id' => 2), - array('name'=>'Authorize.Net SIM', 'provider'=>'AuthorizeNet_SIM', 'payment_library_id' => 2), - array('name'=>'CardSave', 'provider'=>'CardSave', 'payment_library_id' => 2), - array('name'=>'Eway Rapid', 'provider'=>'Eway_Rapid', 'payment_library_id' => 2), - array('name'=>'FirstData Connect', 'provider'=>'FirstData_Connect', 'payment_library_id' => 2), - array('name'=>'GoCardless', 'provider'=>'GoCardless', 'payment_library_id' => 2), - array('name'=>'Migs ThreeParty', 'provider'=>'Migs_ThreeParty', 'payment_library_id' => 2), - array('name'=>'Migs TwoParty', 'provider'=>'Migs_TwoParty', 'payment_library_id' => 2), - array('name'=>'Mollie', 'provider'=>'Mollie', 'payment_library_id' => 2), - array('name'=>'MultiSafepay', 'provider'=>'MultiSafepay', 'payment_library_id' => 2), - array('name'=>'Netaxept', 'provider'=>'Netaxept', 'payment_library_id' => 2), - array('name'=>'NetBanx', 'provider'=>'NetBanx', 'payment_library_id' => 2), - array('name'=>'PayFast', 'provider'=>'PayFast', 'payment_library_id' => 2), - array('name'=>'Payflow Pro', 'provider'=>'Payflow_Pro', 'payment_library_id' => 2), - array('name'=>'PaymentExpress PxPay', 'provider'=>'PaymentExpress_PxPay', 'payment_library_id' => 2), - array('name'=>'PaymentExpress PxPost', 'provider'=>'PaymentExpress_PxPost', 'payment_library_id' => 2), - array('name'=>'PayPal Express', 'provider'=>'PayPal_Express', 'payment_library_id' => 2), - array('name'=>'PayPal Pro', 'provider'=>'PayPal_Pro', 'payment_library_id' => 2), - array('name'=>'Pin', 'provider'=>'Pin', 'payment_library_id' => 2), - array('name'=>'SagePay Direct', 'provider'=>'SagePay_Direct', 'payment_library_id' => 2), - array('name'=>'SagePay Server', 'provider'=>'SagePay_Server', 'payment_library_id' => 2), - array('name'=>'SecurePay DirectPost', 'provider'=>'SecurePay_DirectPost', 'payment_library_id' => 2), - array('name'=>'Stripe', 'provider'=>'Stripe', 'payment_library_id' => 2), - array('name'=>'TargetPay Direct eBanking', 'provider'=>'TargetPay_Directebanking', 'payment_library_id' => 2), - array('name'=>'TargetPay Ideal', 'provider'=>'TargetPay_Ideal', 'payment_library_id' => 2), - array('name'=>'TargetPay Mr Cash', 'provider'=>'TargetPay_Mrcash', 'payment_library_id' => 2), - array('name'=>'TwoCheckout', 'provider'=>'TwoCheckout', 'payment_library_id' => 2), - array('name'=>'WorldPay', 'provider'=>'WorldPay', 'payment_library_id' => 2) + array('name'=>'BeanStream', 'provider'=>'BeanStream', 'payment_library_id' => 2), + array('name'=>'iTransact', 'provider'=>'iTransact', 'payment_library_id' => 2) ]; + + $updateProviders = array( + 0 => 'AuthorizeNet_AIM', + 1 => 'BeanStream', + 2 => 'iTransact', + 3 => 'FirstData_Connect', + 4 => 'PayPal_Pro', + 5 => 'TwoCheckout' + ); foreach ($gateways as $gateway) { Gateway::create($gateway); } + + Gateway::whereIn('provider', $updateProviders)->update(array('recommended' => 1)); + + Gateway::where('provider', '=', 'AuthorizeNet_AIM')->update(array('sort_order' => 5, 'site_url' => 'http://www.authorize.net/')); + Gateway::where('provider', '=', 'BeanStream')->update(array('sort_order' => 10, 'site_url' => 'http://www.beanstream.com/')); + Gateway::where('provider', '=', 'iTransact')->update(array('sort_order' => 15, 'site_url' => 'http://itransact.com/')); + Gateway::where('provider', '=', 'FirstData_Connect')->update(array('sort_order' => 20, 'site_url' => 'https://www.firstdata.com/')); + Gateway::where('provider', '=', 'PayPal_Pro')->update(array('sort_order' => 25, 'site_url' => 'https://www.paypal.com/')); + Gateway::where('provider', '=', 'TwoCheckout')->update(array('sort_order' => 30, 'site_url' => 'https://www.2checkout.com/')); } } \ No newline at end of file diff --git a/app/models/Gateway.php b/app/models/Gateway.php index e0033bbf0059..2a06780630b7 100755 --- a/app/models/Gateway.php +++ b/app/models/Gateway.php @@ -7,6 +7,11 @@ class Gateway extends Eloquent public function paymentlibrary() { - return $this->belongsTo('PaymentLibrary'); + return $this->belongsTo('PaymentLibrary', 'payment_library_id'); + } + + public function getLogoUrl() + { + return '/images/gateways/logo_'.$this->provider.'.png'; } } \ No newline at end of file diff --git a/app/models/PaymentLibrary.php b/app/models/PaymentLibrary.php index a70caa6a9948..b8550c212aee 100644 --- a/app/models/PaymentLibrary.php +++ b/app/models/PaymentLibrary.php @@ -6,6 +6,6 @@ class PaymentLibrary extends Eloquent public function gateways() { - return $this->hasMany('Gateway'); + return $this->hasMany('Gateway', 'payment_library_id'); } } \ No newline at end of file diff --git a/app/views/accounts/payments.blade.php b/app/views/accounts/payments.blade.php index c289d8829fa9..17b4303065d9 100755 --- a/app/views/accounts/payments.blade.php +++ b/app/views/accounts/payments.blade.php @@ -10,6 +10,14 @@ {{ Former::populateField('notify_paid', intval(Auth::user()->notify_paid)) }} {{ Former::legend('Payment Gateway') }} + + {{Former::label('Lorem Ipsum goes here.')}} + + {{ Former::radios('recommendedGateway_id') + ->label('Recommended Gateways') + ->radios($recommendedGateways) + ->class('recommended-gateway')}} + @if ($accountGateway) {{ Former::populateField('gateway_id', $accountGateway->gateway_id) }} @@ -22,12 +30,14 @@ @endforeach @endif - {{ Former::select('gateway_id')->label('Provider')->addOption('', '') - ->fromQuery($gateways, 'name', 'id')->onchange('setFieldsShown()'); }} + {{ Former::select('gateway_id')->label('PayPal & Other Gateways')->addOption('', '') + ->dataClass('gateway-dropdown') + ->fromQuery($gateways, 'name', 'id') + ->onchange('setFieldsShown()'); }} @foreach ($gateways as $gateway) -