Allow offline payment when no gateway defined

This commit is contained in:
Maxime 2019-01-09 13:01:47 +07:00
parent 3a389e0f80
commit daf4e2942c
3 changed files with 18 additions and 5 deletions

View File

@ -185,8 +185,8 @@ class EventCheckoutController extends Controller
$activeAccountPaymentGateway->fill(['payment_gateway_id' => config('attendize.payment_gateway_dummy')]); $activeAccountPaymentGateway->fill(['payment_gateway_id' => config('attendize.payment_gateway_dummy')]);
$paymentGateway= $activeAccountPaymentGateway; $paymentGateway= $activeAccountPaymentGateway;
} else { } else {
$activeAccountPaymentGateway = $event->account->active_payment_gateway->count() ? $event->account->active_payment_gateway->firstOrFail() : false; $activeAccountPaymentGateway = $event->account->active_payment_gateway ? $event->account->active_payment_gateway->firstOrFail() : false;
$paymentGateway = $event->account->active_payment_gateway->count() ? $event->account->active_payment_gateway->payment_gateway : false; $paymentGateway = $event->account->active_payment_gateway ? $event->account->active_payment_gateway->payment_gateway : false;
} }
/* /*
@ -331,11 +331,17 @@ class EventCheckoutController extends Controller
$gateway = Omnipay::create('Dummy'); $gateway = Omnipay::create('Dummy');
$gateway->initialize(); $gateway->initialize();
} else { } elseif ($ticket_order['payment_gateway']) {
$gateway = Omnipay::create($ticket_order['payment_gateway']->name); $gateway = Omnipay::create($ticket_order['payment_gateway']->name);
$gateway->initialize($ticket_order['account_payment_gateway']->config + [ $gateway->initialize($ticket_order['account_payment_gateway']->config + [
'testMode' => config('attendize.enable_test_payments'), 'testMode' => config('attendize.enable_test_payments'),
]); ]);
} else {
Log::error('No payment gateway configured.');
return response()->json([
'status' => 'error',
'message' => 'No payment gateway configured.'
]);
} }
$orderService = new OrderService($ticket_order['order_total'], $ticket_order['total_booking_fee'], $event); $orderService = new OrderService($ticket_order['order_total'], $ticket_order['total_booking_fee'], $event);
@ -382,7 +388,7 @@ class EventCheckoutController extends Controller
break; break;
default: default:
Log::error('No payment gateway configured.'); Log::error('No payment gateway configured.');
return repsonse()->json([ return response()->json([
'status' => 'error', 'status' => 'error',
'message' => 'No payment gateway configured.' 'message' => 'No payment gateway configured.'
]); ]);

View File

@ -7,6 +7,7 @@ use App\Models\Order;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Log;
class SendOrderNotification extends Job implements ShouldQueue class SendOrderNotification extends Job implements ShouldQueue
{ {

View File

@ -159,7 +159,13 @@
@if($event->enable_offline_payments) @if($event->enable_offline_payments)
<div class="offline_payment_toggle"> <div class="offline_payment_toggle">
<div class="custom-checkbox"> <div class="custom-checkbox">
@if($payment_gateway === false)
{{-- Force offline payment if no gateway --}}
<input type="hidden" name="pay_offline" value="1">
<input id="pay_offline" type="checkbox" value="1" checked disabled>
@else
<input data-toggle="toggle" id="pay_offline" name="pay_offline" type="checkbox" value="1"> <input data-toggle="toggle" id="pay_offline" name="pay_offline" type="checkbox" value="1">
@endif
<label for="pay_offline">@lang("Public_ViewEvent.pay_using_offline_methods")</label> <label for="pay_offline">@lang("Public_ViewEvent.pay_using_offline_methods")</label>
</div> </div>
</div> </div>