diff --git a/app/PaymentDrivers/Braintree/CreditCard.php b/app/PaymentDrivers/Braintree/CreditCard.php index faebb85885e6..1ccaac3b78cb 100644 --- a/app/PaymentDrivers/Braintree/CreditCard.php +++ b/app/PaymentDrivers/Braintree/CreditCard.php @@ -38,6 +38,18 @@ class CreditCard $this->braintree->init(); } + public function authorizeView(array $data) + { + $data['gateway'] = $this->braintree; + + return render('gateways.braintree.credit_card.authorize', $data); + } + + public function authorizeResponse($data) + { + + } + /** * Credit card payment page. * @@ -52,6 +64,13 @@ class CreditCard return render('gateways.braintree.credit_card.pay', $data); } + /** + * Process the credit card payments. + * + * @param PaymentResponseRequest $request + * @return \Illuminate\Http\RedirectResponse|void + * @throws PaymentFailed + */ public function paymentResponse(PaymentResponseRequest $request) { $state = [ @@ -94,8 +113,6 @@ class CreditCard 'gateway_type_id' => GatewayType::CREDIT_CARD, ]; - // Store card if checkbox selected. - $payment = $this->braintree->createPayment($data, Payment::STATUS_COMPLETED); SystemLogger::dispatch( diff --git a/app/PaymentDrivers/BraintreePaymentDriver.php b/app/PaymentDrivers/BraintreePaymentDriver.php index cdcf693a2ab0..bd0f4d884877 100644 --- a/app/PaymentDrivers/BraintreePaymentDriver.php +++ b/app/PaymentDrivers/BraintreePaymentDriver.php @@ -66,6 +66,16 @@ class BraintreePaymentDriver extends BaseDriver ]; } + public function authorizeView($data) + { + return $this->payment_method->authorizeView($data); + } + + public function authorizeResponse($data) + { + return $this->payment_method->authorizeResponse($data); + } + public function processPaymentView(array $data) { return $this->payment_method->paymentView($data); diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 2619e20330fc..bc3acc44f4f5 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -4235,6 +4235,8 @@ $LANG = array( 'notification_quote_created_subject' => 'Quote :invoice was created for :client', 'notification_credit_created_subject' => 'Credit :invoice was created to :client', 'notification_credit_created_subject' => 'Credit :invoice was created for :client', + + 'payment_method_cannot_be_authorized_first' => 'This payment method can be can saved for future use, once you complete your first transaction. Don\'t forget to check "Store credit card details" during payment process.', ); return $LANG; diff --git a/resources/views/portal/ninja2020/gateways/braintree/credit_card/authorize.blade.php b/resources/views/portal/ninja2020/gateways/braintree/credit_card/authorize.blade.php new file mode 100644 index 000000000000..fac189f8847e --- /dev/null +++ b/resources/views/portal/ninja2020/gateways/braintree/credit_card/authorize.blade.php @@ -0,0 +1,7 @@ +@extends('portal.ninja2020.layout.payments', ['gateway_title' => 'Credit card', 'card_title' => 'Credit card']) + +@section('gateway_content') + @component('portal.ninja2020.components.general.card-element-single', ['title' => 'Credit card', 'show_title' => false]) + {{ __('texts.payment_method_cannot_be_authorized_first') }} + @endcomponent +@endsection diff --git a/resources/views/portal/ninja2020/gateways/checkout/credit_card/authorize.blade.php b/resources/views/portal/ninja2020/gateways/checkout/credit_card/authorize.blade.php index 9100f9695ff6..9bf42c2b22a2 100644 --- a/resources/views/portal/ninja2020/gateways/checkout/credit_card/authorize.blade.php +++ b/resources/views/portal/ninja2020/gateways/checkout/credit_card/authorize.blade.php @@ -4,4 +4,4 @@ @component('portal.ninja2020.components.general.card-element-single', ['title' => 'Credit card', 'show_title' => false]) {{ __('texts.checkout_authorize_label') }} @endcomponent -@endsection \ No newline at end of file +@endsection