From 310b601c34bc84d2f3807e740977d75d9c106968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89bano=20Lopes?= Date: Thu, 24 Aug 2023 15:17:11 +0000 Subject: [PATCH] v5.5.0 - CyberSource mixin to stopLoader --- view/base/requirejs-config.js | 3 + .../web/js/model/cyber-redirect-mixin.js | 83 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 view/frontend/web/js/model/cyber-redirect-mixin.js diff --git a/view/base/requirejs-config.js b/view/base/requirejs-config.js index 2eabcdfc..2215ac58 100644 --- a/view/base/requirejs-config.js +++ b/view/base/requirejs-config.js @@ -18,6 +18,9 @@ var config = { }, "Holacash_Payment/js/view/payment/method-renderer/holacash_gateway": { 'Signifyd_Connect/js/model/holacash-cc-method-mixin': true, + }, + 'CyberSource_SecureAcceptance/js/view/payment/method-renderer/sa/redirect': { + 'Signifyd_Connect/js/model/cyber-redirect-mixin': true } } } diff --git a/view/frontend/web/js/model/cyber-redirect-mixin.js b/view/frontend/web/js/model/cyber-redirect-mixin.js new file mode 100644 index 00000000..437f2f8f --- /dev/null +++ b/view/frontend/web/js/model/cyber-redirect-mixin.js @@ -0,0 +1,83 @@ +define( + [ + 'jquery', + 'Magento_Ui/js/modal/modal', + 'mage/url', + 'Magento_Payment/js/view/payment/iframe', + 'Magento_Checkout/js/model/payment/additional-validators', + 'Magento_Checkout/js/action/set-payment-information', + 'Magento_Checkout/js/model/full-screen-loader', + 'Magento_Vault/js/view/payment/vault-enabler'], + function($, modal, urlBuilder, Component, additionalValidators, setPaymentInformationAction, fullScreenLoader, VaultEnabler) { + 'use strict'; + + return function (target) { + return target.extend({ + /** + * List all Adyen billing agreements + * Set up installments + * + * @returns {Array} + */ + placeOrder: function () { + if (!this.validateHandler() || !additionalValidators.validate()) { + return; + } + var isEnabled = window.checkoutConfig.cybersource_recaptcha && window.checkoutConfig.cybersource_recaptcha.enabled.cybersource; + var recaptcha_invisible = window.checkoutConfig.payment.chcybersource.recaptcha_invisible; + if(isEnabled && recaptcha_invisible != "invisible"){ + var options = { + type: 'popup', + responsive: true, + innerScroll: true, + buttons: [{ + text: $.mage.__('OK'), + class: 'mymodal1', + click: function () { + $('body').trigger('processStart'); + var url = urlBuilder.build("checkout"); + window.location = url; + this.closeModal(); + } + }] + }; + + var popup = modal(options, $('#sa-recaptcha')); + var rresponse = jQuery('#g-recaptcha-response').val(); + if(rresponse.length == 0) { + $("#sa-recaptcha").modal("openModal"); + $('.action-close').css('display', 'none'); + this.isPlaceOrderActionAllowed(false); + return false; + } + $('#sa-recaptcha').on('modalclosed', function() { + $('body').trigger('processStart'); + var url = urlBuilder.build("checkout"); + window.location = url; + }); + } + + fullScreenLoader.startLoader(); + + this.isPlaceOrderActionAllowed(false); + + this.getPlaceOrderDeferredObject() + //fail added in case of failure on checkout + .fail( + function (response) { + //stop loader added + fullScreenLoader.stopLoader(); + return response; + } + ).then(this.placeOrderHandler) + .then(this.initTimeoutHandler.bind(this)) + .always( + function () { + this.isPlaceOrderActionAllowed(true); + }.bind(this) + ) + ; + } + }); + }; + });