diff --git a/app/Http/Controllers/ClientPortal/PaymentController.php b/app/Http/Controllers/ClientPortal/PaymentController.php index 04325abec5ff..7e4249f32ca4 100644 --- a/app/Http/Controllers/ClientPortal/PaymentController.php +++ b/app/Http/Controllers/ClientPortal/PaymentController.php @@ -118,7 +118,7 @@ class PaymentController extends Controller 'token' => auth()->user()->client->gateway_token($gateway->id), ]; - return view($gateway->driver()->viewForType($payment_method_id), $data); + return view('gateways.pay_now', $data); } diff --git a/app/Http/Controllers/ClientPortal/PaymentMethodController.php b/app/Http/Controllers/ClientPortal/PaymentMethodController.php index f879b8c74966..f53d65a259a0 100644 --- a/app/Http/Controllers/ClientPortal/PaymentMethodController.php +++ b/app/Http/Controllers/ClientPortal/PaymentMethodController.php @@ -35,7 +35,12 @@ class PaymentMethodController extends Controller */ public function create() { - echo 'hello'; + $data = [ + 'gateway' => $gateway, + 'token' => false, + ]; + + return view('portal.default.gateways.authorize', $data); } /** diff --git a/app/Models/Client.php b/app/Models/Client.php index 63849bb82c73..c07d9af6eade 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -15,9 +15,11 @@ use App\DataMapper\ClientSettings; use App\DataMapper\CompanySettings; use App\Models\Client; use App\Models\Company; +use App\Models\CompanyGateway; use App\Models\Country; use App\Models\Currency; use App\Models\Filterable; +use App\Models\GatewayType; use App\Models\GroupSetting; use App\Models\Timezone; use App\Utils\Traits\CompanyGatewaySettings; @@ -226,6 +228,32 @@ class Client extends BaseModel return $this->belongsTo(GroupSetting::class); } + /** + * Returns the first Credit Card Gateway + * + * @return NULL|CompanyGateway The Priority Credit Card gateway + */ + public function getCreditCardGateway() :?CompanyGateway + { + $payment_gateways = $this->getSetting('payment_gateways'); + + /* If we have a custom gateway list pass this back first */ + if($payment_gateways) + $gateways = $this->company->company_gateways->whereIn('id', $payment_gateways); + else + $gateways = $this->company->company_gateways; + + foreach($gateways as $gateway) + { + + if(in_array(GatewayType::CREDIT_CARD, $gateway->driver()->gatewayTypes())) + return $gateway; + + } + + return null; + } + /** * Generates an array of payment urls per client * for a given amount. @@ -245,7 +273,7 @@ class Client extends BaseModel $payment_gateways = $this->getSetting('payment_gateways'); /* If we have a custom gateway list pass this back first */ - if($settings) + if($payment_gateways) $gateways = $this->company->company_gateways->whereIn('id', $payment_gateways); else $gateways = $this->company->company_gateways; diff --git a/app/PaymentDrivers/BasePaymentDriver.php b/app/PaymentDrivers/BasePaymentDriver.php index d0412f989ea1..5bee2dde2937 100644 --- a/app/PaymentDrivers/BasePaymentDriver.php +++ b/app/PaymentDrivers/BasePaymentDriver.php @@ -33,6 +33,7 @@ class BasePaymentDriver /* Member variables */ protected $refundable = false; + protected $token_billing = false; public function __construct(CompanyGateway $company_gateway, $invitation = false) diff --git a/resources/views/portal/default/gateways/authorize.blade.php b/resources/views/portal/default/gateways/authorize.blade.php new file mode 100644 index 000000000000..817b811df15c --- /dev/null +++ b/resources/views/portal/default/gateways/authorize.blade.php @@ -0,0 +1,31 @@ +@extends('portal.default.layouts.master') +@section('header') + +@stop +@section('body') +
+
+
+
+
+
+ {{ ctrans('texts.payment')}} +
+
+

{{ ctrans('texts.add_credit_card')}}

+ + @include($gateway->driver()->viewForType(GatewayType::CREDIT_CARD)) + +
+
+
+
+
+
+ +@endsection +@push('scripts') +@endpush +@section('footer') +@endsection + diff --git a/resources/views/portal/default/gateways/pay_now.blade.php b/resources/views/portal/default/gateways/pay_now.blade.php new file mode 100644 index 000000000000..0d34108f7714 --- /dev/null +++ b/resources/views/portal/default/gateways/pay_now.blade.php @@ -0,0 +1,66 @@ +@extends('portal.default.layouts.master') +@section('header') + +@stop +@section('body') +
+
+
+
+
+
+ {{ ctrans('texts.payment')}} +
+
+ + +
+
    +
  • {{ ctrans('texts.total')}} +

    {{ $amount }}

    +
  • + @if($fee) +
  • {{ ctrans('texts.gateway_fee')}} +

    {{ $fee }}

    +
  • +
  • {{ ctrans('texts.amount_due')}} +

    {{ $amount_with_fee }}

    +
  • + @endif +
+
+ + @include($gateway->driver()->viewForType($payment_method_id)) + +
+
+
+
+
+
+ +@endsection +@push('scripts') +@endpush +@section('footer') +@endsection + diff --git a/resources/views/portal/default/gateways/stripe/credit_card.blade.php b/resources/views/portal/default/gateways/stripe/credit_card.blade.php index 5289919886fa..f21b0dfd9b61 100644 --- a/resources/views/portal/default/gateways/stripe/credit_card.blade.php +++ b/resources/views/portal/default/gateways/stripe/credit_card.blade.php @@ -1,78 +1,17 @@ -@extends('portal.default.layouts.master') -@section('header') + +@if($token) -@stop -@section('body') -
-
-
-
-
-
- {{ ctrans('texts.payment')}} -
-
- + -
-
    -
  • {{ ctrans('texts.total')}} -

    {{ $amount }}

    -
  • - @if($fee) -
  • {{ ctrans('texts.gateway_fee')}} -

    {{ $fee }}

    -
  • -
  • {{ ctrans('texts.amount_due')}} -

    {{ $amount_with_fee }}

    -
  • - @endif -
-
+@else + +
+ +
+ +@endif - - @if($token) - - - - @else - -
- -
- - @endif -
-
-
-
-
-
- -@endsection @push('scripts') -@endpush -@section('footer') -@endsection - +@endpush \ No newline at end of file