Updated payment logic with config settings.

This commit is contained in:
blkmutt 2014-03-29 19:42:37 -04:00
parent d20f6d3055
commit 5bd1aff573
5 changed files with 62 additions and 41 deletions

View File

@ -121,8 +121,6 @@ class AccountController extends \BaseController {
'data-newRow' => $newRow 'data-newRow' => $newRow
); );
$recommendedGatewayArray[$recommendedGateway->name] = $arrayItem; $recommendedGatewayArray[$recommendedGateway->name] = $arrayItem;
} }
$data = [ $data = [
@ -139,13 +137,7 @@ class AccountController extends \BaseController {
{ {
$paymentLibrary = $gateway->paymentlibrary; $paymentLibrary = $gateway->paymentlibrary;
if($paymentLibrary->name == 'Omnipay') $gateway->fields = $gateway->getFields();
{
$gateway->fields = Omnipay::create($gateway->provider)->getDefaultParameters();
}
else {
$gateway->fields = array();
}
if ($accountGateway && $accountGateway->gateway_id == $gateway->id) if ($accountGateway && $accountGateway->gateway_id == $gateway->id)
{ {
@ -471,7 +463,10 @@ class AccountController extends \BaseController {
if ($gatewayId = Input::get('gateway_id')) if ($gatewayId = Input::get('gateway_id'))
{ {
$gateway = Gateway::findOrFail($gatewayId); $gateway = Gateway::findOrFail($gatewayId);
$fields = Omnipay::create($gateway->provider)->getDefaultParameters();
$paymentLibrary = $gateway->paymentlibrary;
$fields = $gateway->getFields();
foreach ($fields as $field => $details) foreach ($fields as $field => $details)
{ {

View File

@ -190,6 +190,8 @@ class PaymentController extends \BaseController
$data = []; $data = [];
} }
if($paymentLibrary->name == "Omnipay")
{
$card = new CreditCard($data); $card = new CreditCard($data);
return [ return [
@ -200,6 +202,11 @@ class PaymentController extends \BaseController
'cancelUrl' => URL::to('/') 'cancelUrl' => URL::to('/')
]; ];
} }
else
{
return $data;
}
}
public function show_payment($invitationKey) public function show_payment($invitationKey)
{ {
@ -320,14 +327,13 @@ class PaymentController extends \BaseController
} }
else if ($input && $paymentLibrary->name == "PHP-Payments") else if ($input && $paymentLibrary->name == "PHP-Payments")
{ {
$provider = $accountGateway->gateway->provider;
$p = new PHP_Payments; $p = new PHP_Payments;
$config = Payment_Utility::load('config', '/path/to/your/gateway/config'); $config = Payment_Utility::load('config', 'drivers/'.$provider);
$details = self::getPaymentDetails($invoice, Input::all()); $details = self::getPaymentDetails($invoice, Input::all());
$response = $p->oneoff_payment($provider, $details, $config);
$response = $p->oneoff_payment('name_of_payment_driver', $details, $config);
if ($response->status == 'Success') if ($response->status == 'Success')
{ {
@ -341,17 +347,10 @@ $response = $p->oneoff_payment('name_of_payment_driver', $details, $config);
Session::flash('message', 'Successfully applied payment'); Session::flash('message', 'Successfully applied payment');
return Redirect::to('view/' . $payment->invitation->invitation_key); return Redirect::to('view/' . $payment->invitation->invitation_key);
} }
else if ($response->isRedirect())
{
$invitation->transaction_reference = $ref;
$invitation->save();
$response->redirect();
}
else else
{ {
Session::flash('error', $response->getMessage()); Session::flash('error', $response->details);
return Utils::fatalError('Sorry, there was an error processing your payment. Please try again later.<p>', $response->getMessage()); return Utils::fatalError('Sorry, there was an error processing your payment. Please try again later.<p>', $response->reason);
} }
} }
} }

View File

@ -7,11 +7,10 @@ class PaymentLibrariesSeeder extends Seeder
{ {
$gateways = [ $gateways = [
array('name'=>'BeanStream', 'provider'=>'BeanStream', 'payment_library_id' => 2), array('name'=>'BeanStream', 'provider'=>'BeanStream', 'payment_library_id' => 2),
array('name'=>'iTransact', 'provider'=>'iTransact', 'payment_library_id' => 2), array('name'=>'Amazon Simplepay', 'provider'=>'Amazon_Simplepay', 'payment_library_id' => 2),
array('name'=>'Amazon_Simplepay', 'provider'=>'Amazon Simplepay', 'payment_library_id' => 2),
array('name'=>'Bluepay', 'provider'=>'Bluepay', 'payment_library_id' => 2), array('name'=>'Bluepay', 'provider'=>'Bluepay', 'payment_library_id' => 2),
array('name'=>'Braintree', 'provider'=>'Braintree', 'payment_library_id' => 2), array('name'=>'Braintree', 'provider'=>'Braintree', 'payment_library_id' => 2),
array('name'=>'Google_Checkout', 'provider'=>'Google Checkout', 'payment_library_id' => 2), array('name'=>'Google Checkout', 'provider'=>'Google_Checkout', 'payment_library_id' => 2),
array('name'=>'Psigate', 'provider'=>'Psigate', 'payment_library_id' => 2), array('name'=>'Psigate', 'provider'=>'Psigate', 'payment_library_id' => 2),
array('name'=>'Quickbooksms', 'provider'=>'Quickbooksms', 'payment_library_id' => 2) array('name'=>'Quickbooksms', 'provider'=>'Quickbooksms', 'payment_library_id' => 2)
]; ];
@ -34,7 +33,6 @@ class PaymentLibrariesSeeder extends Seeder
Gateway::where('provider', '=', 'AuthorizeNet_AIM')->update(array('sort_order' => 5, 'site_url' => 'http://www.authorize.net/')); 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', '=', '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', '=', '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', '=', '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/')); Gateway::where('provider', '=', 'TwoCheckout')->update(array('sort_order' => 30, 'site_url' => 'https://www.2checkout.com/'));

View File

@ -14,4 +14,25 @@ class Gateway extends Eloquent
{ {
return '/images/gateways/logo_'.$this->provider.'.png'; return '/images/gateways/logo_'.$this->provider.'.png';
} }
public function getFields()
{
$paymentLibrary = $this->paymentlibrary;
if($paymentLibrary->name == 'Omnipay')
{
$fields = Omnipay::create($this->provider)->getDefaultParameters();
}
else
{
$fields = Payment_Utility::load('config', 'drivers/'.$this->provider);
}
if($fields == null)
{
$fields = array();
}
return $fields;
}
} }

View File

@ -12,12 +12,12 @@
{{ Former::legend('Payment Gateway') }} {{ Former::legend('Payment Gateway') }}
{{Former::label('Lorem Ipsum goes here.')}} {{Former::label('Lorem Ipsum goes here.')}}
<div class="two-column">
{{ Former::radios('recommendedGateway_id') {{ Former::radios('recommendedGateway_id')
->label('Recommended Gateways') ->label('Recommended Gateways')
->radios($recommendedGateways) ->radios($recommendedGateways)
->class('recommended-gateway')}} ->class('recommended-gateway')}}
</div>
@if ($accountGateway) @if ($accountGateway)
{{ Former::populateField('gateway_id', $accountGateway->gateway_id) }} {{ Former::populateField('gateway_id', $accountGateway->gateway_id) }}
@ -63,8 +63,16 @@
function setFieldsShown() { function setFieldsShown() {
var val = $('#gateway_id').val(); var val = $('#gateway_id').val();
var activeElement = $('.recommended-gateway[value=' + val + ']');
var recommendedRadios = $('#recommendedGateway_id');
$('.gateway-fields').hide(); $('.gateway-fields').hide();
$('#gateway_' + val + '_div').show(); $('#gateway_' + val + '_div').show();
if(activeElement && !activeElement.attr('checked'))
{
activeElement.attr('checked', true);
}
} }
$(document).ready(function() { $(document).ready(function() {