From 393c218c4c12be249cecdbdaccbb9b95a9dc6bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Sun, 15 Aug 2021 16:12:23 +0200 Subject: [PATCH] Refactor Eway payment page --- .../ninja2020/gateways/eway/pay.blade.php | 418 ++++++++++++++++-- 1 file changed, 375 insertions(+), 43 deletions(-) diff --git a/resources/views/portal/ninja2020/gateways/eway/pay.blade.php b/resources/views/portal/ninja2020/gateways/eway/pay.blade.php index c45af17bb420..1d73902f7168 100644 --- a/resources/views/portal/ninja2020/gateways/eway/pay.blade.php +++ b/resources/views/portal/ninja2020/gateways/eway/pay.blade.php @@ -1,6 +1,12 @@ -@extends('portal.ninja2020.layout.payments', ['gateway_title' => ctrans('texts.credit_card'), 'card_title' => ctrans('texts.credit_card')]) +@extends('portal.ninja2020.layout.payments', ['gateway_title' => ctrans('texts.credit_card'), 'card_title' => +ctrans('texts.credit_card')]) @section('gateway_head') + + + + + @endsection @section('gateway_content') @@ -24,72 +30,398 @@ @include('portal.ninja2020.gateways.includes.payment_details') @component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.pay_with')]) - @if(count($tokens) > 0) - @foreach($tokens as $token) + @if (count($tokens) > 0) + @foreach ($tokens as $token) @endforeach @endisset @endcomponent -
- - + @component('portal.ninja2020.components.general.card-element-single') +
+ @endcomponent + @include('portal.ninja2020.gateways.includes.save_card') -
- - - @include('portal.ninja2020.gateways.includes.pay_now') + @include('portal.ninja2020.gateways.includes.pay_now', ['disabled' => true]) @endsection @section('gateway_footer') + - @include('portal.ninja2020.gateways.eway.includes.credit_card') - + + document.querySelector("input[name=securefieldcode]").value = event.secureFieldCode; + } + handleErrors(errors) { + let _errors = errors.split(' '); + let shouldShowGenericError = false; + let message = ''; + + _errors.forEach((error) => { + message = message.concat(this.errorCodes.get(error) + '
'); + }) + + document.getElementById('errors').innerHTML = message; + document.getElementById('errors').hidden = false; + } + + completeAuthorization(event) { + event.target.parentElement.disabled = true; + + document.getElementById('server-response').submit(); + } + + completePaymentUsingToken(event) { + event.target.parentElement.disabled = true; + + document.getElementById('server-response').submit(); + } + + completePaymentWithoutToken(event) { + event.target.parentElement.disabled = true; + + let tokenBillingCheckbox = document.querySelector( + 'input[name="token-billing-checkbox"]:checked' + ); + + if (tokenBillingCheckbox) { + document.querySelector('input[name="store_card"]').value = + tokenBillingCheckbox.value; + } + + document.getElementById('server-response').submit(); + } + + initialize() { + this.eWAY = eWAY.setupSecureField(this.groupFieldConfig, (event) => this.securePanelCallback(event)) + } + + handle() { + this.initialize(); + + document + .getElementById('authorize-card') + ?.addEventListener('click', (e) => this.completeAuthorization(e)) + + Array + .from(document.getElementsByClassName('toggle-payment-with-token')) + .forEach((element) => element.addEventListener('click', (element) => { + document.getElementById('eway-secure-panel').classList.add('hidden'); + document.getElementById('save-card--container').style.display = 'none'; + document.querySelector('input[name=token]').value = element.target.dataset.token; + document.getElementById('pay-now').disabled = false; + })); + + document + .getElementById('toggle-payment-with-credit-card') + .addEventListener('click', (element) => { + document.getElementById('eway-secure-panel').classList.remove('hidden'); + document.getElementById('save-card--container').style.display = 'grid'; + document.querySelector('input[name=token]').value = ""; + document.getElementById('pay-now').disabled = true; + }); + + document + .getElementById('pay-now') + ?.addEventListener('click', (e) => { + let tokenInput = document.querySelector('input[name=token]'); + + if (tokenInput.value) { + return this.completePaymentUsingToken(e); + } + + return this.completePaymentWithoutToken(e); + }); + } + } + + new EwayRapid().handle() + @endsection