diff --git a/README.md b/README.md index 507ad9ca2..3660a24cb 100755 --- a/README.md +++ b/README.md @@ -45,19 +45,9 @@ After Level 3 End-of-support date, there is no support or maintenance from Adyen [Migration and Upgrade Guide](https://docs.adyen.com/plugins/salesforce-commerce-cloud/upgrade) -| Major version | Release date | Level 1 support until | Level 2 support until | Level 3 support until | -|---------------|--------------|-----------------------|-----------------------|-----------------------| -| V18 | April 2018 | 30 September 2023 | 30 September 2023 | 30 September 2023 | -| V19 | July 2019 | 30 September 2023 | 30 September 2023 | 30 September 2023 | -| V20 | July 2020 | 31 December 2023 | 31 December 2023 | 31 December 2023 | -| V21 | August 2021 | 31 December 2023 | 31 December 2023 | 31 December 2023 | -| V22 | May 2022 | 30 November 2023 | 31 May 2024 | 30 November 2024 | -| V23[[1]](#fn1)[[2]](#fn2) | February 2023 | 12 months after release | 18 months after release| 24 months after release| -| V24 | soon in development | 12 months after release | 18 months after release| 24 months after release| - -[1]:From this version onward, we do not provide any level of support for SiteGenesis integrations. - -[2]:From this version onward, all major releases will follow the V23 support schedule. +[SFCC Cartridge Support Schedule for SFRA and SiteGenesis](https://docs.adyen.com/plugins/salesforce-commerce-cloud/#support-levels) + +From version 23 onward, we do not provide any level of support for SiteGenesis integrations. ## Contributing We strongly encourage you to join us in contributing to this repository so everyone can benefit from: diff --git a/cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css b/cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css index 90898a672..156893734 100644 --- a/cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css +++ b/cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css @@ -168,6 +168,10 @@ padding-left: 30px; } +#hmacKey{ + padding-left: 30px; +} + .line-divider{ padding-left: 48px; padding-right: 51px; @@ -405,6 +409,28 @@ ul{ margin-right: 48px; } +.log-list{ + margin-left: 17px; + margin-right: 48px; +} + +.log-list > li { + border: 1px solid #ced4da; + color: #34444f; + height: 95px; + border-bottom: none; + padding-bottom: 110px; +} + +.log-list > li .form-check-input{ + margin-left: 23px; +} + +.log-list .log-checkbox-fatal { + border-bottom: 1px solid #ced4da; + padding-bottom: 95px; +} + .draggable-list li { background-color: #fff; display: flex; diff --git a/cartridges/bm_adyen/cartridge/static/default/icons/tools.svg b/cartridges/bm_adyen/cartridge/static/default/icons/tools.svg new file mode 100644 index 000000000..999e4da9c --- /dev/null +++ b/cartridges/bm_adyen/cartridge/static/default/icons/tools.svg @@ -0,0 +1,3 @@ + + + diff --git a/cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js b/cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js index 5af817b6b..e5a76e67c 100644 --- a/cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js +++ b/cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js @@ -13,16 +13,25 @@ const expressPaymentMethods = [{ }]; document.addEventListener('DOMContentLoaded', () => { const form = document.querySelector('#settingsForm'); + const troubleshootingForm = document.querySelector('#troubleshootingForm'); const submitButton = document.querySelector('#settingsFormSubmitButton'); const cancelButton = document.querySelector('#settingsFormCancelButton'); const formButtons = Array.from(document.getElementsByClassName('formButton')); const testConnectionButton = document.querySelector('#testConnectionButton'); const togglePassword = document.querySelector('#togglePassword'); + const toggleHmacKey = document.querySelector('#toggleHmacKey'); const toggleApi = document.querySelector('#toggleApi'); const formBody = document.querySelector('#formBody'); const password = document.querySelector('#notificationsPassword'); + const hmacKey = document.querySelector('#hmacKey'); const merchAccount = document.getElementById('merchantAccount'); const classicPageButton = document.querySelector('#classicButton'); + const debugLogCheckbox = document.getElementById('debugLogs'); + const infoLogCheckbox = document.getElementById('infoLogs'); + const errorLogCheckbox = document.getElementById('errorLogs'); + const fatalLogCheckbox = document.getElementById('fatalLogs'); + const troubleshootingCheckboxes = [debugLogCheckbox, infoLogCheckbox, errorLogCheckbox, fatalLogCheckbox]; + const downloadLogsButton = document.getElementById('downloadLogsButton'); const apiKeyVal = document.getElementById('apiKey'); const changedSettings = []; const isValid = 'is-valid'; @@ -138,6 +147,12 @@ document.addEventListener('DOMContentLoaded', () => { function getLink() { window.open(window.classicConfigPageUrl); } + function downloadFile(filePath) { + const link = document.createElement('a'); + link.href = filePath; + link.download = filePath.substr(filePath.lastIndexOf('/') + 1); + link.click(); + } function enableformButtons() { formButtons.forEach(button => { button.classList.remove('disabled'); @@ -178,6 +193,11 @@ document.addEventListener('DOMContentLoaded', () => { apiKeyVal.setAttribute('type', type); this.classList.toggle('bi-eye'); } + function showHmacKey() { + const type = hmacKey.getAttribute('type') === 'password' ? 'text' : 'password'; + hmacKey.setAttribute('type', type); + this.classList.toggle('bi-eye'); + } // open Adyen Giving Background upload page function uploadAdyenGivingBackground() { @@ -232,6 +252,7 @@ document.addEventListener('DOMContentLoaded', () => { submitButton.addEventListener('click', showAlertsOnSave); window.addEventListener('load', checkBrowserSupport); togglePassword.addEventListener('click', showPassword); + toggleHmacKey.addEventListener('click', showHmacKey); toggleApi.addEventListener('click', showApiKey); adyenGivingBackground.addEventListener('click', uploadAdyenGivingBackground); adyenGivingLogo.addEventListener('click', uploadAdyenGivingLogo); @@ -239,6 +260,35 @@ document.addEventListener('DOMContentLoaded', () => { window.addEventListener('load', printLogoImageName); adyenGivingBackground.addEventListener('click', saveAndHideAlerts); adyenGivingLogo.addEventListener('click', saveAndHideAlerts); + troubleshootingForm.addEventListener('input', () => { + downloadLogsButton.classList.add('disabled'); + troubleshootingCheckboxes.forEach(checkbox => { + if (checkbox.checked) { + downloadLogsButton.classList.remove('disabled'); + downloadLogsButton.classList.add('enabled'); + } + }); + }); + downloadLogsButton.addEventListener('click', () => { + (async () => { + const htmlContent = await (await fetch(window.logCenterUrl)).text(); + const doc = new DOMParser().parseFromString(htmlContent, 'text/html'); + const logLocations = Array.from(doc.body.getElementsByTagName('a')).map(log => log.href); + const logsToDownload = []; + troubleshootingCheckboxes.forEach(checkbox => { + if (checkbox.checked) { + // eslint-disable-next-line + logsToDownload.push(logLocations.filter(name => name.includes(`custom-Adyen_${checkbox.value}`))); + } + }); + const selectedLogs = Array.prototype.concat.apply([], logsToDownload); + selectedLogs.forEach(item => downloadFile(item)); + downloadLogsButton.classList.add('disabled'); + troubleshootingCheckboxes.forEach(checkbox => { + checkbox.checked = false; + }); + })(); + }); // add event listener to maintain form updates form.addEventListener('change', event => { diff --git a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml index 211f9f51c..345074b60 100644 --- a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml +++ b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml @@ -34,5 +34,9 @@ Additional settings + + + Troubleshooting + diff --git a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml index f66005ac7..16cced87e 100644 --- a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml +++ b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml @@ -51,18 +51,18 @@
- + - To tokenize payment details for Apple Pay, make sure you have enabled Apple Pay in Adyen Customer Area. + To tokenize payment details for all payment methods, make sure you have this feature enabled.
- - + +
- - + +
diff --git a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/troubleshooting.isml b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/troubleshooting.isml new file mode 100644 index 000000000..45094c7ad --- /dev/null +++ b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/troubleshooting.isml @@ -0,0 +1,57 @@ + + +
+
+
+ Troubleshooting +
+ +
You can download Adyen Logs from here.
+
+
+
+ + + The logs are generated from the last 14 days. The downloaded files don’t include visuals, just text. + +
+
+
    +
  • + + + + For checking order data, order create date delay, current date, and service config calls to Adyen Checkout API. + +
  • +
  • + + + + For informational messages about payment results, webhooks processing, authorization, and order updates. + +
  • +
  • + + + + For errors related to configuration, payment, order processing, card details, and components. + +
  • +
  • + + + + For severe errors preventing the cartridge from functioning properly. + +
  • +
+
+
+
+ +
+
+
+
+
diff --git a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml index 013e045ea..cc70b092d 100644 --- a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml +++ b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml @@ -34,6 +34,18 @@ placeholder="•••••••••••••••" value="${AdyenConfigs.getAdyenNotificationPassword()}"> +
+ + This is the HMAC key you created under the Developers section in the Customer Area. + + + +
+ +
+
diff --git a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml index 53fc08fb4..38d1d3e48 100644 --- a/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml +++ b/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml @@ -16,6 +16,7 @@ const backgroundImageStorage = "!id!c_AdyenGiving_backgroundUrl!instance_type!sandbox!group_id!Adyen"; const logoImageStorage = "!id!c_AdyenGiving_logoUrl!instance_type!sandbox!group_id!Adyen"; window.classicConfigPageUrl = token +"#" + commonPath + classicPagePath + classicPageSubpath; + window.logCenterUrl = "/on/demandware.servlet/webdav/Sites/Logs";
@@ -60,6 +61,9 @@ +
+ + diff --git a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js index 382458ee3..f311a16b4 100644 --- a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js +++ b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js @@ -37,9 +37,9 @@ function getAmounts() { var donationConfig = { amounts: getAmounts(), backgroundUrl: adyenGivingBackgroundUrl, - description: charityDescription, + description: decodeURI(charityDescription), logoUrl: adyenGivingLogoUrl, - name: charityName, + name: decodeURI(charityName), url: charityWebsite, showCancelButton: true, onDonate: handleOnDonate, diff --git a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js index 5e3c09d85..79536aced 100644 --- a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js +++ b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js @@ -140,6 +140,26 @@ function handlePartialPaymentSuccess() { attachGiftCardCancelListener(); createElementsToShowRemainingGiftCardAmount(); } +function makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject) { + var brandSelect = document.getElementById('giftCardSelect'); + var selectedBrandIndex = brandSelect.selectedIndex; + var giftcardBrand = brandSelect.options[selectedBrandIndex].text; + var partialPaymentRequest = { + paymentMethod: giftCardData, + amount: giftcardBalance, + partialPaymentsOrder: { + pspReference: store.adyenOrderData.pspReference, + orderData: store.adyenOrderData.orderData + }, + giftcardBrand: giftcardBrand + }; + var partialPaymentResponse = makePartialPayment(partialPaymentRequest); + if (partialPaymentResponse !== null && partialPaymentResponse !== void 0 && partialPaymentResponse.error) { + reject(); + } else { + handlePartialPaymentSuccess(); + } +} function getGiftCardConfig() { var giftcardBalance; return { @@ -199,36 +219,24 @@ function getGiftCardConfig() { // Make a POST /orders request // Create an order for the total transaction amount var giftCardData = requestData.paymentMethod; - $.ajax({ - type: 'POST', - url: window.partialPaymentsOrderUrl, - data: JSON.stringify(requestData), - contentType: 'application/json; charset=utf-8', - async: false, - success: function success(data) { - if (data.resultCode === 'Success') { - // make payments call including giftcard data and order data - var brandSelect = document.getElementById('giftCardSelect'); - var selectedBrandIndex = brandSelect.selectedIndex; - var giftcardBrand = brandSelect.options[selectedBrandIndex].text; - var partialPaymentRequest = { - paymentMethod: giftCardData, - amount: giftcardBalance, - partialPaymentsOrder: { - pspReference: data.pspReference, - orderData: data.orderData - }, - giftcardBrand: giftcardBrand - }; - var partialPaymentResponse = makePartialPayment(partialPaymentRequest); - if (partialPaymentResponse !== null && partialPaymentResponse !== void 0 && partialPaymentResponse.error) { - reject(); - } else { - handlePartialPaymentSuccess(); + if (store.adyenOrderData) { + makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject); + } else { + $.ajax({ + type: 'POST', + url: window.partialPaymentsOrderUrl, + data: JSON.stringify(requestData), + contentType: 'application/json; charset=utf-8', + async: false, + success: function success(data) { + if (data.resultCode === 'Success') { + store.adyenOrderData = data; + // make payments call including giftcard data and order data + makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject); } } - } - }); + }); + } }, onSubmit: function onSubmit(state, component) { store.selectedMethod = state.data.paymentMethod.type; @@ -322,6 +330,16 @@ function getApplePayConfig() { } }; } +function getCashAppConfig() { + return { + showPayButton: true, + onSubmit: function onSubmit(state, component) { + $('#dwfrm_billing').trigger('submit'); + helpers.assignPaymentMethodValue(); + helpers.paymentFromComponent(state.data, component); + } + }; +} function getKlarnaConfig() { var _window = window, klarnaWidgetEnabled = _window.klarnaWidgetEnabled; @@ -366,7 +384,8 @@ function setCheckoutConfiguration() { applepay: getApplePayConfig(), klarna: getKlarnaConfig(), klarna_account: getKlarnaConfig(), - klarna_paynow: getKlarnaConfig() + klarna_paynow: getKlarnaConfig(), + cashapp: getCashAppConfig() }; } module.exports = { diff --git a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js index c278f7309..312e04b65 100644 --- a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js +++ b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js @@ -7,6 +7,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } var store = require('../../../../store'); +var constants = require('../constants'); function assignPaymentMethodValue() { var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName'); // if currently selected paymentMethod contains a brand it will be part of the label ID @@ -46,7 +47,7 @@ function paymentFromComponent(data) { setOrderFormData(response); if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) { component.handleAction(response.fullResponse.action); - } else if (response.isApplePay) { + } else if (response.skipSummaryPage) { document.querySelector('#result').value = JSON.stringify(response); document.querySelector('#showConfirmationForm').submit(); } else if (response.paymentError || response.error) { @@ -76,7 +77,7 @@ function displaySelectedMethod(type) { // If 'type' input field is present use this as type, otherwise default to function input param store.selectedMethod = document.querySelector("#component_".concat(type, " .type")) ? document.querySelector("#component_".concat(type, " .type")).value : type; resetPaymentMethod(); - var disabledSubmitButtonMethods = ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay']; + var disabledSubmitButtonMethods = constants.DISABLED_SUBMIT_BUTTON_METHODS; if (window.klarnaWidgetEnabled) { disabledSubmitButtonMethods.push('klarna'); } diff --git a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js index fab234c20..1a3790f5c 100644 --- a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js +++ b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js @@ -24,6 +24,7 @@ function makePartialPayment(requestData) { var giftCards = response.giftCards, rest = _objectWithoutProperties(response, _excluded); store.checkout.options.amount = rest.remainingAmount; + store.adyenOrderData = rest.partialPaymentsOrder; store.partialPaymentsOrderObj = rest; sessionStorage.setItem('partialPaymentsObj', JSON.stringify(rest)); store.addedGiftCards = giftCards; diff --git a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js index e9b0bcf3b..4103a3e8b 100644 --- a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js +++ b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js @@ -1,8 +1,8 @@ "use strict"; var _document$getElementB; -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; } function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } @@ -200,29 +200,29 @@ function initializeCheckout() { return _initializeCheckout.apply(this, arguments); } function _initializeCheckout() { - _initializeCheckout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + _initializeCheckout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { var session, giftCardsData, totalDiscountedAmount, giftCards, lastGiftCard, paymentMethodsWithoutGiftCards, firstPaymentMethod; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { + return _regeneratorRuntime().wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { case 0: - _context.next = 2; + _context2.next = 2; return createSession(); case 2: - session = _context.sent; - _context.next = 5; + session = _context2.sent; + _context2.next = 5; return fetchGiftCards(); case 5: - giftCardsData = _context.sent; + giftCardsData = _context2.sent; store.checkoutConfiguration.session = { id: session.id, sessionData: session.sessionData, imagePath: session.imagePath, adyenDescriptions: session.adyenDescriptions }; - _context.next = 9; + _context2.next = 9; return AdyenCheckout(store.checkoutConfiguration); case 9: - store.checkout = _context.sent; + store.checkout = _context2.sent; setGiftCardContainerVisibility(); totalDiscountedAmount = giftCardsData.totalDiscountedAmount, giftCards = giftCardsData.giftCards; if (giftCards !== null && giftCards !== void 0 && giftCards.length) { @@ -240,7 +240,7 @@ function _initializeCheckout() { return pm.type !== constants.GIFTCARD; }); renderStoredPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath); - _context.next = 21; + _context2.next = 21; return renderPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath, session.adyenDescriptions); case 21: renderPosTerminals(session.adyenConnectedTerminals); @@ -253,9 +253,9 @@ function _initializeCheckout() { helpers.createShowConfirmationForm(window.ShowConfirmationPaymentFromComponent); case 26: case "end": - return _context.stop(); + return _context2.stop(); } - }, _callee); + }, _callee2); })); return _initializeCheckout.apply(this, arguments); } @@ -271,7 +271,31 @@ function _initializeCheckout() { // used by renderGiftCardComponent.js document.addEventListener(INIT_CHECKOUT_EVENT, function () { - initializeCheckout(); + var handleCheckoutEvent = /*#__PURE__*/function () { + var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!(Object.keys(store.componentsObj).length !== 0)) { + _context.next = 3; + break; + } + _context.next = 3; + return unmountComponents(); + case 3: + _context.next = 5; + return initializeCheckout(); + case 5: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function handleCheckoutEvent() { + return _ref4.apply(this, arguments); + }; + }(); + handleCheckoutEvent(); }); /** @@ -281,19 +305,19 @@ function renderGenericComponent() { return _renderGenericComponent.apply(this, arguments); } function _renderGenericComponent() { - _renderGenericComponent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { + _renderGenericComponent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() { var _store$addedGiftCards2; - return _regeneratorRuntime().wrap(function _callee2$(_context2) { - while (1) switch (_context2.prev = _context2.next) { + return _regeneratorRuntime().wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { case 0: if (!(Object.keys(store.componentsObj).length !== 0)) { - _context2.next = 3; + _context3.next = 3; break; } - _context2.next = 3; + _context3.next = 3; return unmountComponents(); case 3: - _context2.next = 5; + _context3.next = 5; return initializeCheckout(); case 5: if ((_store$addedGiftCards2 = store.addedGiftCards) !== null && _store$addedGiftCards2 !== void 0 && _store$addedGiftCards2.length) { @@ -302,9 +326,9 @@ function _renderGenericComponent() { attachGiftCardAddButtonListener(); case 7: case "end": - return _context2.stop(); + return _context3.stop(); } - }, _callee2); + }, _callee3); })); return _renderGenericComponent.apply(this, arguments); } diff --git a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js index 67a26d587..1b670bebc 100644 --- a/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js +++ b/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js @@ -80,6 +80,7 @@ function removeGiftCards() { store.checkout.options.amount = res.amount; store.partialPaymentsOrderObj = null; store.addedGiftCards = null; + store.adyenOrderData = null; giftCardsInfoMessageContainer.innerHTML = ''; giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container'); document.querySelector('button[value="submit-payment"]').disabled = false; diff --git a/cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js b/cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js index 13d77ccc1..12977c01d 100644 --- a/cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js +++ b/cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js @@ -15,5 +15,6 @@ module.exports = { ACTIONTYPE: { QRCODE: 'qrCode' }, + DISABLED_SUBMIT_BUTTON_METHODS: ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay', 'cashapp'], APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association' }; \ No newline at end of file diff --git a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js index 89c2a7a60..ec8296044 100644 --- a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js +++ b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js @@ -3,13 +3,23 @@ var Transaction = require('dw/system/Transaction'); var checkAuth = require('*/cartridge/scripts/checkNotificationAuth'); var handleNotify = require('*/cartridge/scripts/handleNotify'); +var AdyenConfigs = require('*/cartridge/scripts/util/adyenConfigs'); /** * Called by Adyen to update status of payments. It should always display [accepted] when finished. */ + +function handleHmacVerification(hmacKey, req) { + if (hmacKey) { + return checkAuth.validateHmacSignature(req); + } + return true; +} function notify(req, res, next) { var status = checkAuth.check(req); - if (!status) { + var hmacKey = AdyenConfigs.getAdyenHmacKey(); + var isHmacValid = handleHmacVerification(hmacKey, req); + if (!status || !isHmacValid) { res.render('/adyen/error'); return {}; } diff --git a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js index 61f074fc2..3503be928 100644 --- a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js +++ b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js @@ -20,7 +20,7 @@ function responseContainsErrors(response) { } function makePartialPayment(req, res, next) { try { - var _response$order, _currentBasket$custom, _currentBasket$custom2; + var _response$order, _response$order2, _response$order3, _currentBasket$custom, _currentBasket$custom2; var request = JSON.parse(req.body); var currentBasket = BasketMgr.getCurrentBasket(); var paymentMethod = request.paymentMethod, @@ -55,7 +55,11 @@ function makePartialPayment(req, res, next) { // Update cached session data var partialPaymentsOrderData = JSON.parse(session.privacy.partialPaymentData); - partialPaymentsOrderData.remainingAmount = response === null || response === void 0 ? void 0 : (_response$order = response.order) === null || _response$order === void 0 ? void 0 : _response$order.remainingAmount; + partialPaymentsOrderData.order = { + orderData: response === null || response === void 0 ? void 0 : (_response$order = response.order) === null || _response$order === void 0 ? void 0 : _response$order.orderData, + pspReference: response === null || response === void 0 ? void 0 : (_response$order2 = response.order) === null || _response$order2 === void 0 ? void 0 : _response$order2.pspReference + }; + partialPaymentsOrderData.remainingAmount = response === null || response === void 0 ? void 0 : (_response$order3 = response.order) === null || _response$order3 === void 0 ? void 0 : _response$order3.remainingAmount; session.privacy.partialPaymentData = JSON.stringify(partialPaymentsOrderData); var divideBy = AdyenHelper.getDivisorForCurrency(remainingAmount); var remainingAmountFormatted = remainingAmount.divide(divideBy).toFormattedString(); diff --git a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js index 9d9a98190..94f0240be 100644 --- a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js +++ b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js @@ -104,12 +104,19 @@ function handleExpressPayment(reqDataObj, currentBasket) { setBillingAndShippingAddress(reqDataObj, currentBasket); } } +function canSkipSummaryPage(reqDataObj) { + var _reqDataObj$paymentMe; + if (constants.CAN_SKIP_SUMMARY_PAGE.indexOf((_reqDataObj$paymentMe = reqDataObj.paymentMethod) === null || _reqDataObj$paymentMe === void 0 ? void 0 : _reqDataObj$paymentMe.type) >= 0) { + return true; + } + return false; +} /** * Make a payment from inside a component, skipping the summary page. (paypal, QRcodes, MBWay) */ function paymentFromComponent(req, res, next) { - var _currentBasket$custom2, _reqDataObj$paymentMe; + var _currentBasket$custom2; var reqDataObj = JSON.parse(req.form.data); if (reqDataObj.cancelTransaction) { return handleCancellation(res, next, reqDataObj); @@ -156,9 +163,9 @@ function paymentFromComponent(req, res, next) { if (result.resultCode === constants.RESULTCODES.REFUSED) { handleRefusedResultCode(result, reqDataObj, order); } - if (AdyenHelper.isApplePay((_reqDataObj$paymentMe = reqDataObj.paymentMethod) === null || _reqDataObj$paymentMe === void 0 ? void 0 : _reqDataObj$paymentMe.type)) { - result.isApplePay = true; - } + + // Check if summary page can be skipped in case payment is already authorized + result.skipSummaryPage = canSkipSummaryPage(reqDataObj); result.orderNo = order.orderNo; result.orderToken = order.orderToken; res.json(result); diff --git a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js index 56ef32279..db3fc8440 100644 --- a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js +++ b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js @@ -3,6 +3,7 @@ var URLUtils = require('dw/web/URLUtils'); var OrderMgr = require('dw/order/OrderMgr'); var Order = require('dw/order/Order'); +var Transaction = require('dw/system/Transaction'); var adyenCheckout = require('*/cartridge/scripts/adyenCheckout'); var constants = require('*/cartridge/adyenConstants/constants'); var payment = require('*/cartridge/controllers/middlewares/adyen/showConfirmation/payment'); @@ -36,6 +37,10 @@ function handlePaymentsDetailsResult(adyenPaymentInstrument, detailsResult, orde if ([constants.RESULTCODES.AUTHORISED, constants.RESULTCODES.PENDING, constants.RESULTCODES.RECEIVED].indexOf(detailsResult.resultCode) > -1) { return handleAuthorised(adyenPaymentInstrument, detailsResult, order, options); } + Transaction.wrap(function () { + order.custom.Adyen_pspReference = detailsResult.pspReference; + order.custom.Adyen_eventCode = detailsResult.resultCode; + }); return payment.handlePaymentError(order, 'placeOrder', options); } function isOrderAlreadyProcessed(order) { diff --git a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js index ad28e1fa6..a823ae359 100644 --- a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js +++ b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js @@ -1,13 +1,9 @@ "use strict"; -var Locale = require('dw/util/Locale'); var COHelpers = require('*/cartridge/scripts/checkout/checkoutHelpers'); -var OrderModel = require('*/cartridge/models/order'); var handleOrderConfirm = require('*/cartridge/controllers/middlewares/adyen/showConfirmation/order'); var payment = require('*/cartridge/controllers/middlewares/adyen/showConfirmation/payment'); function handleAuthorised(adyenPaymentInstrument, detailsResult, order, options) { - var req = options.req; - // custom fraudDetection var fraudDetectionStatus = { status: 'success' @@ -18,12 +14,6 @@ function handleAuthorised(adyenPaymentInstrument, detailsResult, order, options) if (placeOrderResult.error) { return payment.handlePaymentError(order, 'placeOrder', options); } - var currentLocale = Locale.getLocale(req.locale.id); - var orderModel = new OrderModel(order, { - countryCode: currentLocale.country - }); - - // Save orderModel to custom object during session - return handleOrderConfirm(adyenPaymentInstrument, detailsResult, order, orderModel, options); + return handleOrderConfirm(adyenPaymentInstrument, detailsResult, order, options); } module.exports = handleAuthorised; \ No newline at end of file diff --git a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js index dd154b224..19c024a54 100644 --- a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js +++ b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js @@ -6,11 +6,10 @@ var AdyenHelper = require('*/cartridge/scripts/util/adyenHelper'); var AdyenConfigs = require('*/cartridge/scripts/util/adyenConfigs'); var _require = require('*/cartridge/controllers/utils/index'), clearForms = _require.clearForms; -function handleOrderConfirm(adyenPaymentInstrument, result, order, orderModel, _ref) { +function handleOrderConfirm(adyenPaymentInstrument, result, order, _ref) { var res = _ref.res, next = _ref.next; Transaction.wrap(function () { - order.custom.Adyen_CustomerEmail = JSON.stringify(orderModel); AdyenHelper.savePaymentDetails(adyenPaymentInstrument, order, result); }); clearForms.clearForms(); diff --git a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js index 727b68f9f..036137b71 100644 --- a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js +++ b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js @@ -4,11 +4,9 @@ var OrderMgr = require('dw/order/OrderMgr'); var Order = require('dw/order/Order'); var Transaction = require('dw/system/Transaction'); var URLUtils = require('dw/web/URLUtils'); -var Locale = require('dw/util/Locale'); var Resource = require('dw/web/Resource'); var adyenCheckout = require('*/cartridge/scripts/adyenCheckout'); var COHelpers = require('*/cartridge/scripts/checkout/checkoutHelpers'); -var OrderModel = require('*/cartridge/models/order'); var AdyenHelper = require('*/cartridge/scripts/util/adyenHelper'); var AdyenConfigs = require('*/cartridge/scripts/util/adyenConfigs'); var constants = require('*/cartridge/adyenConstants/constants'); @@ -41,8 +39,7 @@ function handlePaymentsDetailsCall(stateData, adyenPaymentInstrument) { }; } function handleAuthorisedPayment(order, result, adyenPaymentInstrument, _ref2) { - var req = _ref2.req, - res = _ref2.res, + var res = _ref2.res, next = _ref2.next; // custom fraudDetection var fraudDetectionStatus = { @@ -57,14 +54,7 @@ function handleAuthorisedPayment(order, result, adyenPaymentInstrument, _ref2) { next: next }); } - var currentLocale = Locale.getLocale(req.locale.id); - var orderModel = new OrderModel(order, { - countryCode: currentLocale.country - }); - - // Save orderModel to custom object during session Transaction.wrap(function () { - order.custom.Adyen_CustomerEmail = JSON.stringify(orderModel); AdyenHelper.savePaymentDetails(adyenPaymentInstrument, order, result); }); clearForms.clearAdyenData(adyenPaymentInstrument); @@ -85,6 +75,10 @@ function handlePaymentResult(result, order, adyenPaymentInstrument, options) { if ([constants.RESULTCODES.AUTHORISED, constants.RESULTCODES.PENDING, constants.RESULTCODES.RECEIVED].indexOf(result.resultCode) > -1) { return handleAuthorisedPayment(order, result, adyenPaymentInstrument, options); } + Transaction.wrap(function () { + order.custom.Adyen_pspReference = result.pspReference; + order.custom.Adyen_eventCode = result.resultCode; + }); return handlePaymentError(order, adyenPaymentInstrument, options); } @@ -101,7 +95,7 @@ function handlePayment(stateData, order, options) { } var finalResult; if (!hasStateData) { - if (result && (JSON.stringify(result).indexOf('amazonpay') > -1 || JSON.stringify(result).indexOf('applepay') > -1)) { + if (result && (JSON.stringify(result).indexOf('amazonpay') > -1 || JSON.stringify(result).indexOf('applepay') > -1 || JSON.stringify(result).indexOf('cashapp') > -1)) { finalResult = JSON.parse(result); } else { return handlePaymentError(order, adyenPaymentInstrument, options); diff --git a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js index 19be7a248..fa51fe3df 100644 --- a/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js +++ b/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js @@ -16,9 +16,9 @@ function handleAdyenGiving(req, res) { var clientKey = AdyenConfigs.getAdyenClientKey(); var environment = AdyenHelper.getCheckoutEnvironment(); var configuredAmounts = AdyenHelper.getDonationAmounts(); - var charityName = AdyenConfigs.getAdyenGivingCharityName(); + var charityName = encodeURI(AdyenConfigs.getAdyenGivingCharityName()); var charityWebsite = AdyenConfigs.getAdyenGivingCharityWebsite(); - var charityDescription = AdyenConfigs.getAdyenGivingCharityDescription(); + var charityDescription = encodeURI(AdyenConfigs.getAdyenGivingCharityDescription()); var adyenGivingBackgroundUrl = AdyenConfigs.getAdyenGivingBackgroundUrl(); var adyenGivingLogoUrl = AdyenConfigs.getAdyenGivingLogoUrl(); var orderToken = getOrderToken(req); diff --git a/cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js b/cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js index c9dc21c50..abe0acb14 100644 --- a/cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js +++ b/cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js @@ -8,12 +8,15 @@ var Template = require('dw/util/Template'); var Transaction = require('dw/system/Transaction'); var Order = require('dw/order/Order'); var COHelpers = require('*/cartridge/scripts/checkout/checkoutHelpers'); +var OrderModel = require('*/cartridge/models/order'); function sendEmail(order) { var confirmationEmail = new Mail(); var context = new HashMap(); - var savedOrderModel = order.custom.Adyen_CustomerEmail; + var orderModel = new OrderModel(order, { + containerView: 'order' + }); var orderObject = { - order: JSON.parse(savedOrderModel) + order: orderModel }; confirmationEmail.addTo(order.customerEmail); confirmationEmail.setSubject(Resource.msg('subject.order.confirmation.email', 'order', null)); @@ -25,13 +28,12 @@ function sendEmail(order) { var content = template.render(context).text; confirmationEmail.setContent(content, 'text/html', 'UTF-8'); confirmationEmail.send(); - order.custom.Adyen_CustomerEmail = null; } function submit(order) { try { Transaction.begin(); // Places the order if not placed yet - if (order.status === Order.ORDER_STATUS_CREATED) { + if (order.status.value === Order.ORDER_STATUS_CREATED) { // custom fraudDetection var fraudDetectionStatus = { status: 'success' diff --git a/cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js b/cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js index 0f50e4c50..c96d3378f 100644 --- a/cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js +++ b/cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js @@ -19,8 +19,10 @@ function convertToSfccCardType(paymentInformation, paymentInstrument) { paymentInstrument.custom.adyenPaymentMethod = sfccCardType; paymentInstrument.custom["".concat(constants.OMS_NAMESPACE, "_Adyen_Payment_Method")] = sfccCardType; if (paymentInformation.creditCardToken) { + var firstTwoDigitsFromCurrentYear = AdyenHelper.getFirstTwoNumbersFromYear(); + var expirationYear = firstTwoDigitsFromCurrentYear * 100 + paymentInformation.expirationYear; paymentInstrument.setCreditCardExpirationMonth(paymentInformation.expirationMonth); - paymentInstrument.setCreditCardExpirationYear(paymentInformation.expirationYear); + paymentInstrument.setCreditCardExpirationYear(expirationYear); paymentInstrument.setCreditCardToken(paymentInformation.creditCardToken); } } diff --git a/cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenCheckout.js b/cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenCheckout.js index 9cc410e0b..4f1869eb4 100644 --- a/cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenCheckout.js +++ b/cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenCheckout.js @@ -106,7 +106,7 @@ eval("\n\nvar store = __webpack_require__(/*! ../../../store */ \"./cartridges/i /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nvar _require = __webpack_require__(/*! ./makePartialPayment */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js\"),\n makePartialPayment = _require.makePartialPayment;\nvar _require2 = __webpack_require__(/*! ../commons */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js\"),\n onBrand = _require2.onBrand,\n onFieldValid = _require2.onFieldValid;\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require3 = __webpack_require__(/*! ./renderGiftcardComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js\"),\n createElementsToShowRemainingGiftCardAmount = _require3.createElementsToShowRemainingGiftCardAmount,\n renderAddedGiftCard = _require3.renderAddedGiftCard,\n getGiftCardElements = _require3.getGiftCardElements,\n showGiftCardInfoMessage = _require3.showGiftCardInfoMessage,\n showGiftCardCancelButton = _require3.showGiftCardCancelButton,\n attachGiftCardCancelListener = _require3.attachGiftCardCancelListener;\nfunction getCardConfig() {\n return {\n enableStoreDetails: window.showStoreDetails,\n showBrandsUnderCardNumber: false,\n clickToPayConfiguration: {\n shopperEmail: window.customerEmail,\n merchantDisplayName: window.merchantAccount\n },\n onChange: function onChange(state) {\n store.isValid = state.isValid;\n var method = state.data.paymentMethod.storedPaymentMethodId ? \"storedCard\".concat(state.data.paymentMethod.storedPaymentMethodId) : store.selectedMethod;\n store.updateSelectedPayment(method, 'isValid', store.isValid);\n store.updateSelectedPayment(method, 'stateData', state.data);\n },\n onSubmit: function onSubmit() {\n helpers.assignPaymentMethodValue();\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n },\n onFieldValid: onFieldValid,\n onBrand: onBrand\n };\n}\nfunction getPaypalConfig() {\n store.paypalTerminatedEarly = false;\n return {\n showPayButton: true,\n environment: window.Configuration.environment,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n document.querySelector('#adyenStateData').value = JSON.stringify(store.selectedPayment.stateData);\n helpers.paymentFromComponent(state.data, component);\n },\n onCancel: function onCancel(data, component) {\n store.paypalTerminatedEarly = false;\n helpers.paymentFromComponent({\n cancelTransaction: true,\n merchantReference: document.querySelector('#merchantReference').value,\n orderToken: document.querySelector('#orderToken').value\n }, component);\n },\n onError: function onError(error, component) {\n store.paypalTerminatedEarly = false;\n if (component) {\n component.setStatus('ready');\n }\n document.querySelector('#showConfirmationForm').submit();\n },\n onAdditionalDetails: function onAdditionalDetails(state) {\n store.paypalTerminatedEarly = false;\n document.querySelector('#additionalDetailsHidden').value = JSON.stringify(state.data);\n document.querySelector('#showConfirmationForm').submit();\n },\n onClick: function onClick(data, actions) {\n $('#dwfrm_billing').trigger('submit');\n if (store.formErrorsExist) {\n return actions.reject();\n }\n if (store.paypalTerminatedEarly) {\n helpers.paymentFromComponent({\n cancelTransaction: true,\n merchantReference: document.querySelector('#merchantReference').value\n });\n store.paypalTerminatedEarly = false;\n return actions.resolve();\n }\n store.paypalTerminatedEarly = true;\n return null;\n }\n };\n}\nfunction getGooglePayConfig() {\n return {\n environment: window.Configuration.environment,\n onSubmit: function onSubmit() {\n helpers.assignPaymentMethodValue();\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n },\n configuration: {\n gatewayMerchantId: window.merchantAccount\n },\n showPayButton: true,\n buttonColor: 'white'\n };\n}\nfunction handlePartialPaymentSuccess() {\n var _store$addedGiftCards;\n var _getGiftCardElements = getGiftCardElements(),\n giftCardSelectContainer = _getGiftCardElements.giftCardSelectContainer,\n giftCardSelect = _getGiftCardElements.giftCardSelect,\n giftCardsList = _getGiftCardElements.giftCardsList,\n cancelMainPaymentGiftCard = _getGiftCardElements.cancelMainPaymentGiftCard,\n giftCardAddButton = _getGiftCardElements.giftCardAddButton;\n giftCardSelectContainer.classList.add('invisible');\n giftCardSelect.value = null;\n giftCardsList.innerHTML = '';\n cancelMainPaymentGiftCard.addEventListener('click', function () {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n cancelMainPaymentGiftCard.classList.add('invisible');\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = 'null';\n });\n if (store.componentsObj.giftcard) {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n }\n store.addedGiftCards.forEach(function (card) {\n renderAddedGiftCard(card);\n });\n if ((_store$addedGiftCards = store.addedGiftCards) !== null && _store$addedGiftCards !== void 0 && _store$addedGiftCards.length) {\n showGiftCardInfoMessage();\n }\n showGiftCardCancelButton(true);\n attachGiftCardCancelListener();\n createElementsToShowRemainingGiftCardAmount();\n}\nfunction getGiftCardConfig() {\n var giftcardBalance;\n return {\n showPayButton: true,\n onChange: function onChange(state) {\n store.updateSelectedPayment(constants.GIFTCARD, 'isValid', state.isValid);\n store.updateSelectedPayment(constants.GIFTCARD, 'stateData', state.data);\n },\n onBalanceCheck: function onBalanceCheck(resolve, reject, requestData) {\n $.ajax({\n type: 'POST',\n url: window.checkBalanceUrl,\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n giftcardBalance = data.balance;\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n if (data.resultCode === constants.SUCCESS) {\n var _getGiftCardElements2 = getGiftCardElements(),\n giftCardsInfoMessageContainer = _getGiftCardElements2.giftCardsInfoMessageContainer,\n giftCardSelect = _getGiftCardElements2.giftCardSelect,\n cancelMainPaymentGiftCard = _getGiftCardElements2.cancelMainPaymentGiftCard,\n giftCardAddButton = _getGiftCardElements2.giftCardAddButton,\n giftCardSelectWrapper = _getGiftCardElements2.giftCardSelectWrapper;\n if (giftCardSelectWrapper) {\n giftCardSelectWrapper.classList.add('invisible');\n }\n var initialPartialObject = _objectSpread({}, store.partialPaymentsOrderObj);\n cancelMainPaymentGiftCard.classList.remove('invisible');\n cancelMainPaymentGiftCard.addEventListener('click', function () {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n cancelMainPaymentGiftCard.classList.add('invisible');\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = 'null';\n store.partialPaymentsOrderObj.remainingAmountFormatted = initialPartialObject.remainingAmountFormatted;\n store.partialPaymentsOrderObj.totalDiscountedAmount = initialPartialObject.totalDiscountedAmount;\n });\n document.querySelector('button[value=\"submit-payment\"]').disabled = true;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n store.partialPaymentsOrderObj.remainingAmountFormatted = data.remainingAmountFormatted;\n store.partialPaymentsOrderObj.totalDiscountedAmount = data.totalAmountFormatted;\n resolve(data);\n } else if (data.resultCode === constants.NOTENOUGHBALANCE) {\n resolve(data);\n } else {\n reject();\n }\n },\n fail: function fail() {\n reject();\n }\n });\n },\n onOrderRequest: function onOrderRequest(resolve, reject, requestData) {\n // Make a POST /orders request\n // Create an order for the total transaction amount\n var giftCardData = requestData.paymentMethod;\n $.ajax({\n type: 'POST',\n url: window.partialPaymentsOrderUrl,\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n if (data.resultCode === 'Success') {\n // make payments call including giftcard data and order data\n var brandSelect = document.getElementById('giftCardSelect');\n var selectedBrandIndex = brandSelect.selectedIndex;\n var giftcardBrand = brandSelect.options[selectedBrandIndex].text;\n var partialPaymentRequest = {\n paymentMethod: giftCardData,\n amount: giftcardBalance,\n partialPaymentsOrder: {\n pspReference: data.pspReference,\n orderData: data.orderData\n },\n giftcardBrand: giftcardBrand\n };\n var partialPaymentResponse = makePartialPayment(partialPaymentRequest);\n if (partialPaymentResponse !== null && partialPaymentResponse !== void 0 && partialPaymentResponse.error) {\n reject();\n } else {\n handlePartialPaymentSuccess();\n }\n }\n }\n });\n },\n onSubmit: function onSubmit(state, component) {\n store.selectedMethod = state.data.paymentMethod.type;\n store.brand = component === null || component === void 0 ? void 0 : component.displayName;\n document.querySelector('input[name=\"brandCode\"]').checked = false;\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n }\n };\n}\nfunction handleOnChange(state) {\n store.isValid = state.isValid;\n if (!store.componentsObj[store.selectedMethod]) {\n store.componentsObj[store.selectedMethod] = {};\n }\n store.componentsObj[store.selectedMethod].isValid = store.isValid;\n store.componentsObj[store.selectedMethod].stateData = state.data;\n}\nvar actionHandler = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(action) {\n var checkout;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return AdyenCheckout(store.checkoutConfiguration);\n case 2:\n checkout = _context.sent;\n checkout.createFromAction(action).mount('#action-container');\n $('#action-modal').modal({\n backdrop: 'static',\n keyboard: false\n });\n if (action.type === constants.ACTIONTYPE.QRCODE) {\n document.getElementById('cancelQrMethodsButton').classList.remove('invisible');\n }\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function actionHandler(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nfunction handleOnAdditionalDetails(state) {\n $.ajax({\n type: 'POST',\n url: window.paymentsDetailsURL,\n data: JSON.stringify({\n data: state.data,\n orderToken: window.orderToken\n }),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n if (!data.isFinal && _typeof(data.action) === 'object') {\n actionHandler(data.action);\n } else {\n window.location.href = data.redirectUrl;\n }\n }\n });\n}\nfunction getAmazonpayConfig() {\n return {\n showPayButton: true,\n productType: 'PayAndShip',\n checkoutMode: 'ProcessOrder',\n locale: window.Configuration.locale,\n returnUrl: window.returnURL,\n onClick: function onClick(resolve, reject) {\n $('#dwfrm_billing').trigger('submit');\n if (store.formErrorsExist) {\n reject();\n } else {\n helpers.assignPaymentMethodValue();\n resolve();\n }\n },\n onError: function onError() {}\n };\n}\nfunction getApplePayConfig() {\n return {\n showPayButton: true,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n }\n };\n}\nfunction getKlarnaConfig() {\n var _window = window,\n klarnaWidgetEnabled = _window.klarnaWidgetEnabled;\n if (klarnaWidgetEnabled) {\n return {\n showPayButton: true,\n useKlarnaWidget: true,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n },\n onAdditionalDetails: function onAdditionalDetails(state) {\n document.querySelector('#additionalDetailsHidden').value = JSON.stringify(state.data);\n document.querySelector('#showConfirmationForm').submit();\n }\n };\n }\n return null;\n}\nfunction setCheckoutConfiguration() {\n store.checkoutConfiguration.onChange = handleOnChange;\n store.checkoutConfiguration.onAdditionalDetails = handleOnAdditionalDetails;\n store.checkoutConfiguration.showPayButton = false;\n store.checkoutConfiguration.clientKey = window.adyenClientKey;\n store.checkoutConfiguration.paymentMethodsConfiguration = {\n card: getCardConfig(),\n bcmc: getCardConfig(),\n storedCard: getCardConfig(),\n boletobancario: {\n personalDetailsRequired: true,\n // turn personalDetails section on/off\n billingAddressRequired: false,\n // turn billingAddress section on/off\n showEmailAddress: false // allow shopper to specify their email address\n },\n\n paywithgoogle: getGooglePayConfig(),\n googlepay: getGooglePayConfig(),\n paypal: getPaypalConfig(),\n amazonpay: getAmazonpayConfig(),\n giftcard: getGiftCardConfig(),\n applepay: getApplePayConfig(),\n klarna: getKlarnaConfig(),\n klarna_account: getKlarnaConfig(),\n klarna_paynow: getKlarnaConfig()\n };\n}\nmodule.exports = {\n getCardConfig: getCardConfig,\n getPaypalConfig: getPaypalConfig,\n getGooglePayConfig: getGooglePayConfig,\n getAmazonpayConfig: getAmazonpayConfig,\n setCheckoutConfiguration: setCheckoutConfiguration,\n actionHandler: actionHandler\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js?"); +eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nvar _require = __webpack_require__(/*! ./makePartialPayment */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js\"),\n makePartialPayment = _require.makePartialPayment;\nvar _require2 = __webpack_require__(/*! ../commons */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js\"),\n onBrand = _require2.onBrand,\n onFieldValid = _require2.onFieldValid;\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require3 = __webpack_require__(/*! ./renderGiftcardComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js\"),\n createElementsToShowRemainingGiftCardAmount = _require3.createElementsToShowRemainingGiftCardAmount,\n renderAddedGiftCard = _require3.renderAddedGiftCard,\n getGiftCardElements = _require3.getGiftCardElements,\n showGiftCardInfoMessage = _require3.showGiftCardInfoMessage,\n showGiftCardCancelButton = _require3.showGiftCardCancelButton,\n attachGiftCardCancelListener = _require3.attachGiftCardCancelListener;\nfunction getCardConfig() {\n return {\n enableStoreDetails: window.showStoreDetails,\n showBrandsUnderCardNumber: false,\n clickToPayConfiguration: {\n shopperEmail: window.customerEmail,\n merchantDisplayName: window.merchantAccount\n },\n onChange: function onChange(state) {\n store.isValid = state.isValid;\n var method = state.data.paymentMethod.storedPaymentMethodId ? \"storedCard\".concat(state.data.paymentMethod.storedPaymentMethodId) : store.selectedMethod;\n store.updateSelectedPayment(method, 'isValid', store.isValid);\n store.updateSelectedPayment(method, 'stateData', state.data);\n },\n onSubmit: function onSubmit() {\n helpers.assignPaymentMethodValue();\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n },\n onFieldValid: onFieldValid,\n onBrand: onBrand\n };\n}\nfunction getPaypalConfig() {\n store.paypalTerminatedEarly = false;\n return {\n showPayButton: true,\n environment: window.Configuration.environment,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n document.querySelector('#adyenStateData').value = JSON.stringify(store.selectedPayment.stateData);\n helpers.paymentFromComponent(state.data, component);\n },\n onCancel: function onCancel(data, component) {\n store.paypalTerminatedEarly = false;\n helpers.paymentFromComponent({\n cancelTransaction: true,\n merchantReference: document.querySelector('#merchantReference').value,\n orderToken: document.querySelector('#orderToken').value\n }, component);\n },\n onError: function onError(error, component) {\n store.paypalTerminatedEarly = false;\n if (component) {\n component.setStatus('ready');\n }\n document.querySelector('#showConfirmationForm').submit();\n },\n onAdditionalDetails: function onAdditionalDetails(state) {\n store.paypalTerminatedEarly = false;\n document.querySelector('#additionalDetailsHidden').value = JSON.stringify(state.data);\n document.querySelector('#showConfirmationForm').submit();\n },\n onClick: function onClick(data, actions) {\n $('#dwfrm_billing').trigger('submit');\n if (store.formErrorsExist) {\n return actions.reject();\n }\n if (store.paypalTerminatedEarly) {\n helpers.paymentFromComponent({\n cancelTransaction: true,\n merchantReference: document.querySelector('#merchantReference').value\n });\n store.paypalTerminatedEarly = false;\n return actions.resolve();\n }\n store.paypalTerminatedEarly = true;\n return null;\n }\n };\n}\nfunction getGooglePayConfig() {\n return {\n environment: window.Configuration.environment,\n onSubmit: function onSubmit() {\n helpers.assignPaymentMethodValue();\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n },\n configuration: {\n gatewayMerchantId: window.merchantAccount\n },\n showPayButton: true,\n buttonColor: 'white'\n };\n}\nfunction handlePartialPaymentSuccess() {\n var _store$addedGiftCards;\n var _getGiftCardElements = getGiftCardElements(),\n giftCardSelectContainer = _getGiftCardElements.giftCardSelectContainer,\n giftCardSelect = _getGiftCardElements.giftCardSelect,\n giftCardsList = _getGiftCardElements.giftCardsList,\n cancelMainPaymentGiftCard = _getGiftCardElements.cancelMainPaymentGiftCard,\n giftCardAddButton = _getGiftCardElements.giftCardAddButton;\n giftCardSelectContainer.classList.add('invisible');\n giftCardSelect.value = null;\n giftCardsList.innerHTML = '';\n cancelMainPaymentGiftCard.addEventListener('click', function () {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n cancelMainPaymentGiftCard.classList.add('invisible');\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = 'null';\n });\n if (store.componentsObj.giftcard) {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n }\n store.addedGiftCards.forEach(function (card) {\n renderAddedGiftCard(card);\n });\n if ((_store$addedGiftCards = store.addedGiftCards) !== null && _store$addedGiftCards !== void 0 && _store$addedGiftCards.length) {\n showGiftCardInfoMessage();\n }\n showGiftCardCancelButton(true);\n attachGiftCardCancelListener();\n createElementsToShowRemainingGiftCardAmount();\n}\nfunction makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject) {\n var brandSelect = document.getElementById('giftCardSelect');\n var selectedBrandIndex = brandSelect.selectedIndex;\n var giftcardBrand = brandSelect.options[selectedBrandIndex].text;\n var partialPaymentRequest = {\n paymentMethod: giftCardData,\n amount: giftcardBalance,\n partialPaymentsOrder: {\n pspReference: store.adyenOrderData.pspReference,\n orderData: store.adyenOrderData.orderData\n },\n giftcardBrand: giftcardBrand\n };\n var partialPaymentResponse = makePartialPayment(partialPaymentRequest);\n if (partialPaymentResponse !== null && partialPaymentResponse !== void 0 && partialPaymentResponse.error) {\n reject();\n } else {\n handlePartialPaymentSuccess();\n }\n}\nfunction getGiftCardConfig() {\n var giftcardBalance;\n return {\n showPayButton: true,\n onChange: function onChange(state) {\n store.updateSelectedPayment(constants.GIFTCARD, 'isValid', state.isValid);\n store.updateSelectedPayment(constants.GIFTCARD, 'stateData', state.data);\n },\n onBalanceCheck: function onBalanceCheck(resolve, reject, requestData) {\n $.ajax({\n type: 'POST',\n url: window.checkBalanceUrl,\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n giftcardBalance = data.balance;\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n if (data.resultCode === constants.SUCCESS) {\n var _getGiftCardElements2 = getGiftCardElements(),\n giftCardsInfoMessageContainer = _getGiftCardElements2.giftCardsInfoMessageContainer,\n giftCardSelect = _getGiftCardElements2.giftCardSelect,\n cancelMainPaymentGiftCard = _getGiftCardElements2.cancelMainPaymentGiftCard,\n giftCardAddButton = _getGiftCardElements2.giftCardAddButton,\n giftCardSelectWrapper = _getGiftCardElements2.giftCardSelectWrapper;\n if (giftCardSelectWrapper) {\n giftCardSelectWrapper.classList.add('invisible');\n }\n var initialPartialObject = _objectSpread({}, store.partialPaymentsOrderObj);\n cancelMainPaymentGiftCard.classList.remove('invisible');\n cancelMainPaymentGiftCard.addEventListener('click', function () {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n cancelMainPaymentGiftCard.classList.add('invisible');\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = 'null';\n store.partialPaymentsOrderObj.remainingAmountFormatted = initialPartialObject.remainingAmountFormatted;\n store.partialPaymentsOrderObj.totalDiscountedAmount = initialPartialObject.totalDiscountedAmount;\n });\n document.querySelector('button[value=\"submit-payment\"]').disabled = true;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n store.partialPaymentsOrderObj.remainingAmountFormatted = data.remainingAmountFormatted;\n store.partialPaymentsOrderObj.totalDiscountedAmount = data.totalAmountFormatted;\n resolve(data);\n } else if (data.resultCode === constants.NOTENOUGHBALANCE) {\n resolve(data);\n } else {\n reject();\n }\n },\n fail: function fail() {\n reject();\n }\n });\n },\n onOrderRequest: function onOrderRequest(resolve, reject, requestData) {\n // Make a POST /orders request\n // Create an order for the total transaction amount\n var giftCardData = requestData.paymentMethod;\n if (store.adyenOrderData) {\n makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject);\n } else {\n $.ajax({\n type: 'POST',\n url: window.partialPaymentsOrderUrl,\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n if (data.resultCode === 'Success') {\n store.adyenOrderData = data;\n // make payments call including giftcard data and order data\n makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject);\n }\n }\n });\n }\n },\n onSubmit: function onSubmit(state, component) {\n store.selectedMethod = state.data.paymentMethod.type;\n store.brand = component === null || component === void 0 ? void 0 : component.displayName;\n document.querySelector('input[name=\"brandCode\"]').checked = false;\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n }\n };\n}\nfunction handleOnChange(state) {\n store.isValid = state.isValid;\n if (!store.componentsObj[store.selectedMethod]) {\n store.componentsObj[store.selectedMethod] = {};\n }\n store.componentsObj[store.selectedMethod].isValid = store.isValid;\n store.componentsObj[store.selectedMethod].stateData = state.data;\n}\nvar actionHandler = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(action) {\n var checkout;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return AdyenCheckout(store.checkoutConfiguration);\n case 2:\n checkout = _context.sent;\n checkout.createFromAction(action).mount('#action-container');\n $('#action-modal').modal({\n backdrop: 'static',\n keyboard: false\n });\n if (action.type === constants.ACTIONTYPE.QRCODE) {\n document.getElementById('cancelQrMethodsButton').classList.remove('invisible');\n }\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function actionHandler(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nfunction handleOnAdditionalDetails(state) {\n $.ajax({\n type: 'POST',\n url: window.paymentsDetailsURL,\n data: JSON.stringify({\n data: state.data,\n orderToken: window.orderToken\n }),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n if (!data.isFinal && _typeof(data.action) === 'object') {\n actionHandler(data.action);\n } else {\n window.location.href = data.redirectUrl;\n }\n }\n });\n}\nfunction getAmazonpayConfig() {\n return {\n showPayButton: true,\n productType: 'PayAndShip',\n checkoutMode: 'ProcessOrder',\n locale: window.Configuration.locale,\n returnUrl: window.returnURL,\n onClick: function onClick(resolve, reject) {\n $('#dwfrm_billing').trigger('submit');\n if (store.formErrorsExist) {\n reject();\n } else {\n helpers.assignPaymentMethodValue();\n resolve();\n }\n },\n onError: function onError() {}\n };\n}\nfunction getApplePayConfig() {\n return {\n showPayButton: true,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n }\n };\n}\nfunction getCashAppConfig() {\n return {\n showPayButton: true,\n onSubmit: function onSubmit(state, component) {\n $('#dwfrm_billing').trigger('submit');\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n }\n };\n}\nfunction getKlarnaConfig() {\n var _window = window,\n klarnaWidgetEnabled = _window.klarnaWidgetEnabled;\n if (klarnaWidgetEnabled) {\n return {\n showPayButton: true,\n useKlarnaWidget: true,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n },\n onAdditionalDetails: function onAdditionalDetails(state) {\n document.querySelector('#additionalDetailsHidden').value = JSON.stringify(state.data);\n document.querySelector('#showConfirmationForm').submit();\n }\n };\n }\n return null;\n}\nfunction setCheckoutConfiguration() {\n store.checkoutConfiguration.onChange = handleOnChange;\n store.checkoutConfiguration.onAdditionalDetails = handleOnAdditionalDetails;\n store.checkoutConfiguration.showPayButton = false;\n store.checkoutConfiguration.clientKey = window.adyenClientKey;\n store.checkoutConfiguration.paymentMethodsConfiguration = {\n card: getCardConfig(),\n bcmc: getCardConfig(),\n storedCard: getCardConfig(),\n boletobancario: {\n personalDetailsRequired: true,\n // turn personalDetails section on/off\n billingAddressRequired: false,\n // turn billingAddress section on/off\n showEmailAddress: false // allow shopper to specify their email address\n },\n\n paywithgoogle: getGooglePayConfig(),\n googlepay: getGooglePayConfig(),\n paypal: getPaypalConfig(),\n amazonpay: getAmazonpayConfig(),\n giftcard: getGiftCardConfig(),\n applepay: getApplePayConfig(),\n klarna: getKlarnaConfig(),\n klarna_account: getKlarnaConfig(),\n klarna_paynow: getKlarnaConfig(),\n cashapp: getCashAppConfig()\n };\n}\nmodule.exports = {\n getCardConfig: getCardConfig,\n getPaypalConfig: getPaypalConfig,\n getGooglePayConfig: getGooglePayConfig,\n getAmazonpayConfig: getAmazonpayConfig,\n setCheckoutConfiguration: setCheckoutConfiguration,\n actionHandler: actionHandler\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js?"); /***/ }), @@ -118,7 +118,7 @@ eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nfunction assignPaymentMethodValue() {\n var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName');\n // if currently selected paymentMethod contains a brand it will be part of the label ID\n var paymentMethodlabelId = \"#lb_\".concat(store.selectedMethod);\n if (adyenPaymentMethod) {\n var _document$querySelect;\n adyenPaymentMethod.value = store.brand ? store.brand : (_document$querySelect = document.querySelector(paymentMethodlabelId)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.innerHTML;\n }\n}\nfunction setOrderFormData(response) {\n if (response.orderNo) {\n document.querySelector('#merchantReference').value = response.orderNo;\n }\n if (response.orderToken) {\n document.querySelector('#orderToken').value = response.orderToken;\n }\n}\n\n/**\n * Makes an ajax call to the controller function PaymentFromComponent.\n * Used by certain payment methods like paypal\n */\nfunction paymentFromComponent(data) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestData = store.partialPaymentsOrderObj ? _objectSpread(_objectSpread({}, data), {}, {\n partialPaymentsOrder: store.partialPaymentsOrderObj\n }) : data;\n $.ajax({\n url: window.paymentFromComponentURL,\n type: 'post',\n data: {\n data: JSON.stringify(requestData),\n paymentMethod: document.querySelector('#adyenPaymentMethodName').value\n },\n success: function success(response) {\n var _response$fullRespons;\n setOrderFormData(response);\n if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) {\n component.handleAction(response.fullResponse.action);\n } else if (response.isApplePay) {\n document.querySelector('#result').value = JSON.stringify(response);\n document.querySelector('#showConfirmationForm').submit();\n } else if (response.paymentError || response.error) {\n component.handleError();\n }\n }\n });\n}\nfunction resetPaymentMethod() {\n $('#requiredBrandCode').hide();\n $('#selectedIssuer').val('');\n $('#adyenIssuerName').val('');\n $('#dateOfBirth').val('');\n $('#telephoneNumber').val('');\n $('#gender').val('');\n $('#bankAccountOwnerName').val('');\n $('#bankAccountNumber').val('');\n $('#bankLocationId').val('');\n $('.additionalFields').hide();\n}\n\n/**\n * Changes the \"display\" attribute of the selected method from hidden to visible\n */\nfunction displaySelectedMethod(type) {\n var _document$querySelect2;\n // If 'type' input field is present use this as type, otherwise default to function input param\n store.selectedMethod = document.querySelector(\"#component_\".concat(type, \" .type\")) ? document.querySelector(\"#component_\".concat(type, \" .type\")).value : type;\n resetPaymentMethod();\n var disabledSubmitButtonMethods = ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay'];\n if (window.klarnaWidgetEnabled) {\n disabledSubmitButtonMethods.push('klarna');\n }\n document.querySelector('button[value=\"submit-payment\"]').disabled = disabledSubmitButtonMethods.findIndex(function (pm) {\n return type.includes(pm);\n }) > -1;\n document.querySelector(\"#component_\".concat(type)).setAttribute('style', 'display:block');\n // set brand for giftcards if hidden inputfield is present\n store.brand = (_document$querySelect2 = document.querySelector(\"#component_\".concat(type, \" .brand\"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value;\n}\nfunction displayValidationErrors() {\n store.selectedPayment.node.showValidation();\n return false;\n}\nvar selectedMethods = {};\nfunction doCustomValidation() {\n return store.selectedMethod in selectedMethods ? selectedMethods[store.selectedMethod]() : true;\n}\nfunction showValidation() {\n return store.selectedPaymentIsValid ? doCustomValidation() : displayValidationErrors();\n}\nfunction getInstallmentValues(maxValue) {\n var values = [];\n for (var i = 1; i <= maxValue; i += 1) {\n values.push(i);\n }\n return values;\n}\nfunction createShowConfirmationForm(action) {\n if (document.querySelector('#showConfirmationForm')) {\n return;\n }\n var template = document.createElement('template');\n var form = \"
\\n \\n \\n \\n \\n
\");\n template.innerHTML = form;\n document.querySelector('body').appendChild(template.content);\n}\nmodule.exports = {\n setOrderFormData: setOrderFormData,\n assignPaymentMethodValue: assignPaymentMethodValue,\n paymentFromComponent: paymentFromComponent,\n resetPaymentMethod: resetPaymentMethod,\n displaySelectedMethod: displaySelectedMethod,\n showValidation: showValidation,\n createShowConfirmationForm: createShowConfirmationForm,\n getInstallmentValues: getInstallmentValues\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js?"); +eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nfunction assignPaymentMethodValue() {\n var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName');\n // if currently selected paymentMethod contains a brand it will be part of the label ID\n var paymentMethodlabelId = \"#lb_\".concat(store.selectedMethod);\n if (adyenPaymentMethod) {\n var _document$querySelect;\n adyenPaymentMethod.value = store.brand ? store.brand : (_document$querySelect = document.querySelector(paymentMethodlabelId)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.innerHTML;\n }\n}\nfunction setOrderFormData(response) {\n if (response.orderNo) {\n document.querySelector('#merchantReference').value = response.orderNo;\n }\n if (response.orderToken) {\n document.querySelector('#orderToken').value = response.orderToken;\n }\n}\n\n/**\n * Makes an ajax call to the controller function PaymentFromComponent.\n * Used by certain payment methods like paypal\n */\nfunction paymentFromComponent(data) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestData = store.partialPaymentsOrderObj ? _objectSpread(_objectSpread({}, data), {}, {\n partialPaymentsOrder: store.partialPaymentsOrderObj\n }) : data;\n $.ajax({\n url: window.paymentFromComponentURL,\n type: 'post',\n data: {\n data: JSON.stringify(requestData),\n paymentMethod: document.querySelector('#adyenPaymentMethodName').value\n },\n success: function success(response) {\n var _response$fullRespons;\n setOrderFormData(response);\n if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) {\n component.handleAction(response.fullResponse.action);\n } else if (response.skipSummaryPage) {\n document.querySelector('#result').value = JSON.stringify(response);\n document.querySelector('#showConfirmationForm').submit();\n } else if (response.paymentError || response.error) {\n component.handleError();\n }\n }\n });\n}\nfunction resetPaymentMethod() {\n $('#requiredBrandCode').hide();\n $('#selectedIssuer').val('');\n $('#adyenIssuerName').val('');\n $('#dateOfBirth').val('');\n $('#telephoneNumber').val('');\n $('#gender').val('');\n $('#bankAccountOwnerName').val('');\n $('#bankAccountNumber').val('');\n $('#bankLocationId').val('');\n $('.additionalFields').hide();\n}\n\n/**\n * Changes the \"display\" attribute of the selected method from hidden to visible\n */\nfunction displaySelectedMethod(type) {\n var _document$querySelect2;\n // If 'type' input field is present use this as type, otherwise default to function input param\n store.selectedMethod = document.querySelector(\"#component_\".concat(type, \" .type\")) ? document.querySelector(\"#component_\".concat(type, \" .type\")).value : type;\n resetPaymentMethod();\n var disabledSubmitButtonMethods = constants.DISABLED_SUBMIT_BUTTON_METHODS;\n if (window.klarnaWidgetEnabled) {\n disabledSubmitButtonMethods.push('klarna');\n }\n document.querySelector('button[value=\"submit-payment\"]').disabled = disabledSubmitButtonMethods.findIndex(function (pm) {\n return type.includes(pm);\n }) > -1;\n document.querySelector(\"#component_\".concat(type)).setAttribute('style', 'display:block');\n // set brand for giftcards if hidden inputfield is present\n store.brand = (_document$querySelect2 = document.querySelector(\"#component_\".concat(type, \" .brand\"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value;\n}\nfunction displayValidationErrors() {\n store.selectedPayment.node.showValidation();\n return false;\n}\nvar selectedMethods = {};\nfunction doCustomValidation() {\n return store.selectedMethod in selectedMethods ? selectedMethods[store.selectedMethod]() : true;\n}\nfunction showValidation() {\n return store.selectedPaymentIsValid ? doCustomValidation() : displayValidationErrors();\n}\nfunction getInstallmentValues(maxValue) {\n var values = [];\n for (var i = 1; i <= maxValue; i += 1) {\n values.push(i);\n }\n return values;\n}\nfunction createShowConfirmationForm(action) {\n if (document.querySelector('#showConfirmationForm')) {\n return;\n }\n var template = document.createElement('template');\n var form = \"
\\n \\n \\n \\n \\n
\");\n template.innerHTML = form;\n document.querySelector('body').appendChild(template.content);\n}\nmodule.exports = {\n setOrderFormData: setOrderFormData,\n assignPaymentMethodValue: assignPaymentMethodValue,\n paymentFromComponent: paymentFromComponent,\n resetPaymentMethod: resetPaymentMethod,\n displaySelectedMethod: displaySelectedMethod,\n showValidation: showValidation,\n createShowConfirmationForm: createShowConfirmationForm,\n getInstallmentValues: getInstallmentValues\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js?"); /***/ }), @@ -142,7 +142,7 @@ eval("\n\nmodule.exports.installmentLocales = ['pt_BR', 'ja_JP', 'tr_TR', 'es_MX /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _excluded = [\"giftCards\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar _require = __webpack_require__(/*! ./renderGenericComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js\"),\n initializeCheckout = _require.initializeCheckout;\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nfunction makePartialPayment(requestData) {\n var error;\n $.ajax({\n url: window.partialPaymentUrl,\n type: 'POST',\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(response) {\n if (response.error) {\n error = {\n error: true\n };\n } else {\n var giftCards = response.giftCards,\n rest = _objectWithoutProperties(response, _excluded);\n store.checkout.options.amount = rest.remainingAmount;\n store.partialPaymentsOrderObj = rest;\n sessionStorage.setItem('partialPaymentsObj', JSON.stringify(rest));\n store.addedGiftCards = giftCards;\n helpers.setOrderFormData(response);\n initializeCheckout();\n }\n }\n }).fail(function () {});\n return error;\n}\nmodule.exports = {\n makePartialPayment: makePartialPayment\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js?"); +eval("\n\nvar _excluded = [\"giftCards\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar _require = __webpack_require__(/*! ./renderGenericComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js\"),\n initializeCheckout = _require.initializeCheckout;\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nfunction makePartialPayment(requestData) {\n var error;\n $.ajax({\n url: window.partialPaymentUrl,\n type: 'POST',\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(response) {\n if (response.error) {\n error = {\n error: true\n };\n } else {\n var giftCards = response.giftCards,\n rest = _objectWithoutProperties(response, _excluded);\n store.checkout.options.amount = rest.remainingAmount;\n store.adyenOrderData = rest.partialPaymentsOrder;\n store.partialPaymentsOrderObj = rest;\n sessionStorage.setItem('partialPaymentsObj', JSON.stringify(rest));\n store.addedGiftCards = giftCards;\n helpers.setOrderFormData(response);\n initializeCheckout();\n }\n }\n }).fail(function () {});\n return error;\n}\nmodule.exports = {\n makePartialPayment: makePartialPayment\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js?"); /***/ }), @@ -154,7 +154,7 @@ eval("\n\nvar _excluded = [\"giftCards\"];\nfunction _objectWithoutProperties(so /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _document$getElementB;\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable no-unsafe-optional-chaining */\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar _require = __webpack_require__(/*! ./renderPaymentMethod */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderPaymentMethod.js\"),\n renderPaymentMethod = _require.renderPaymentMethod;\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nvar _require2 = __webpack_require__(/*! ./localesUsingInstallments */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/localesUsingInstallments.js\"),\n installmentLocales = _require2.installmentLocales;\nvar _require3 = __webpack_require__(/*! ../commons */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js\"),\n createSession = _require3.createSession,\n fetchGiftCards = _require3.fetchGiftCards;\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require4 = __webpack_require__(/*! ./renderGiftcardComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js\"),\n createElementsToShowRemainingGiftCardAmount = _require4.createElementsToShowRemainingGiftCardAmount,\n removeGiftCards = _require4.removeGiftCards,\n renderAddedGiftCard = _require4.renderAddedGiftCard,\n showGiftCardWarningMessage = _require4.showGiftCardWarningMessage,\n attachGiftCardAddButtonListener = _require4.attachGiftCardAddButtonListener,\n showGiftCardInfoMessage = _require4.showGiftCardInfoMessage,\n giftCardBrands = _require4.giftCardBrands,\n clearGiftCardsContainer = _require4.clearGiftCardsContainer,\n attachGiftCardCancelListener = _require4.attachGiftCardCancelListener,\n showGiftCardCancelButton = _require4.showGiftCardCancelButton;\nvar INIT_CHECKOUT_EVENT = 'INIT_CHECKOUT_EVENT';\nfunction addPosTerminals(terminals) {\n var ddTerminals = document.createElement('select');\n ddTerminals.id = 'terminalList';\n Object.keys(terminals).forEach(function (t) {\n var option = document.createElement('option');\n option.value = terminals[t];\n option.text = terminals[t];\n ddTerminals.appendChild(option);\n });\n document.querySelector('#adyenPosTerminals').append(ddTerminals);\n}\nfunction setCheckoutConfiguration(checkoutOptions) {\n var setField = function setField(key, val) {\n return val && _defineProperty({}, key, val);\n };\n store.checkoutConfiguration = _objectSpread(_objectSpread(_objectSpread({}, store.checkoutConfiguration), setField('amount', checkoutOptions.amount)), setField('countryCode', checkoutOptions.countryCode));\n}\nfunction resolveUnmount(key, val) {\n try {\n return Promise.resolve(val.node.unmount(\"component_\".concat(key)));\n } catch (e) {\n // try/catch block for val.unmount\n return Promise.resolve(false);\n }\n}\n\n/**\n * To avoid re-rendering components twice, unmounts existing components from payment methods list\n */\nfunction unmountComponents() {\n var promises = Object.entries(store.componentsObj).map(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n val = _ref3[1];\n delete store.componentsObj[key];\n return resolveUnmount(key, val);\n });\n return Promise.all(promises);\n}\nfunction isCartModified(amount, orderAmount) {\n return amount.currency !== orderAmount.currency || amount.value !== orderAmount.value;\n}\nfunction renderGiftCardLogo(imagePath) {\n var headingImg = document.querySelector('#headingImg');\n if (headingImg) {\n headingImg.src = \"\".concat(imagePath, \"genericgiftcard.png\");\n }\n}\nfunction applyGiftCards() {\n var now = new Date().toISOString();\n var amount = store.checkoutConfiguration.amount;\n var orderAmount = store.partialPaymentsOrderObj.orderAmount;\n var isPartialPaymentExpired = store.addedGiftCards.some(function (cart) {\n return now > cart.expiresAt;\n });\n var cartModified = isCartModified(amount, orderAmount);\n if (isPartialPaymentExpired) {\n removeGiftCards();\n } else if (cartModified) {\n removeGiftCards();\n showGiftCardWarningMessage();\n } else {\n var _store$addedGiftCards;\n clearGiftCardsContainer();\n store.addedGiftCards.forEach(function (card) {\n renderAddedGiftCard(card);\n });\n if ((_store$addedGiftCards = store.addedGiftCards) !== null && _store$addedGiftCards !== void 0 && _store$addedGiftCards.length) {\n showGiftCardInfoMessage();\n }\n store.checkout.options.amount = store.addedGiftCards[store.addedGiftCards.length - 1].remainingAmount;\n showGiftCardCancelButton(true);\n attachGiftCardCancelListener();\n createElementsToShowRemainingGiftCardAmount();\n }\n}\nfunction renderStoredPaymentMethod(imagePath) {\n return function (pm) {\n if (pm.supportedShopperInteractions.includes('Ecommerce')) {\n renderPaymentMethod(pm, true, imagePath);\n }\n };\n}\nfunction renderStoredPaymentMethods(data, imagePath) {\n if (data.storedPaymentMethods) {\n var storedPaymentMethods = data.storedPaymentMethods;\n storedPaymentMethods.forEach(renderStoredPaymentMethod(imagePath));\n }\n}\nfunction renderPaymentMethods(paymentMethods, imagePath, adyenDescriptions) {\n var promises = [];\n for (var i = 0; i < paymentMethods.length; i += 1) {\n var pm = paymentMethods[i];\n promises.push(renderPaymentMethod(pm, false, imagePath, adyenDescriptions[pm.type]));\n }\n return Promise.all(promises);\n}\nfunction renderPosTerminals(adyenConnectedTerminals) {\n var _adyenConnectedTermin;\n var removeChilds = function removeChilds() {\n var posTerminals = document.querySelector('#adyenPosTerminals');\n while (posTerminals.firstChild) {\n posTerminals.removeChild(posTerminals.firstChild);\n }\n };\n if (adyenConnectedTerminals !== null && adyenConnectedTerminals !== void 0 && (_adyenConnectedTermin = adyenConnectedTerminals.uniqueTerminalIds) !== null && _adyenConnectedTermin !== void 0 && _adyenConnectedTermin.length) {\n removeChilds();\n addPosTerminals(adyenConnectedTerminals.uniqueTerminalIds);\n }\n}\nfunction setAmazonPayConfig(adyenPaymentMethods) {\n var amazonpay = adyenPaymentMethods.paymentMethods.find(function (paymentMethod) {\n return paymentMethod.type === 'amazonpay';\n });\n if (amazonpay) {\n var _document$querySelect, _document$querySelect2, _document$querySelect3, _document$querySelect4, _document$querySelect5, _document$querySelect6, _document$querySelect7, _document$querySelect8;\n store.checkoutConfiguration.paymentMethodsConfiguration.amazonpay.configuration = amazonpay.configuration;\n store.checkoutConfiguration.paymentMethodsConfiguration.amazonpay.addressDetails = {\n name: \"\".concat((_document$querySelect = document.querySelector('#shippingFirstNamedefault')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.value, \" \").concat((_document$querySelect2 = document.querySelector('#shippingLastNamedefault')) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value),\n addressLine1: (_document$querySelect3 = document.querySelector('#shippingAddressOnedefault')) === null || _document$querySelect3 === void 0 ? void 0 : _document$querySelect3.value,\n city: (_document$querySelect4 = document.querySelector('#shippingAddressCitydefault')) === null || _document$querySelect4 === void 0 ? void 0 : _document$querySelect4.value,\n stateOrRegion: (_document$querySelect5 = document.querySelector('#shippingAddressCitydefault')) === null || _document$querySelect5 === void 0 ? void 0 : _document$querySelect5.value,\n postalCode: (_document$querySelect6 = document.querySelector('#shippingZipCodedefault')) === null || _document$querySelect6 === void 0 ? void 0 : _document$querySelect6.value,\n countryCode: (_document$querySelect7 = document.querySelector('#shippingCountrydefault')) === null || _document$querySelect7 === void 0 ? void 0 : _document$querySelect7.value,\n phoneNumber: (_document$querySelect8 = document.querySelector('#shippingPhoneNumberdefault')) === null || _document$querySelect8 === void 0 ? void 0 : _document$querySelect8.value\n };\n }\n}\nfunction setInstallments(amount) {\n try {\n var _window$installments;\n if (installmentLocales.indexOf(window.Configuration.locale) < 0) {\n return;\n }\n var _window$installments$ = (_window$installments = window.installments) === null || _window$installments === void 0 ? void 0 : _window$installments.replace(/\\[|]/g, '').split(','),\n _window$installments$2 = _slicedToArray(_window$installments$, 2),\n minAmount = _window$installments$2[0],\n numOfInstallments = _window$installments$2[1];\n if (minAmount <= amount.value) {\n store.checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions = {\n card: {}\n }; // eslint-disable-next-line max-len\n store.checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions.card.values = helpers.getInstallmentValues(numOfInstallments);\n store.checkoutConfiguration.paymentMethodsConfiguration.card.showInstallmentAmounts = true;\n }\n } catch (e) {} // eslint-disable-line no-empty\n}\n\nfunction setGiftCardContainerVisibility() {\n var availableGiftCards = giftCardBrands();\n if (availableGiftCards.length === 0) {\n var giftCardContainer = document.querySelector('.gift-card-selection');\n giftCardContainer.style.display = 'none';\n var giftCardSeparator = document.querySelector('.gift-card-separator');\n giftCardSeparator.style.display = 'none';\n }\n}\nfunction initializeCheckout() {\n return _initializeCheckout.apply(this, arguments);\n}\nfunction _initializeCheckout() {\n _initializeCheckout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var session, giftCardsData, totalDiscountedAmount, giftCards, lastGiftCard, paymentMethodsWithoutGiftCards, firstPaymentMethod;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return createSession();\n case 2:\n session = _context.sent;\n _context.next = 5;\n return fetchGiftCards();\n case 5:\n giftCardsData = _context.sent;\n store.checkoutConfiguration.session = {\n id: session.id,\n sessionData: session.sessionData,\n imagePath: session.imagePath,\n adyenDescriptions: session.adyenDescriptions\n };\n _context.next = 9;\n return AdyenCheckout(store.checkoutConfiguration);\n case 9:\n store.checkout = _context.sent;\n setGiftCardContainerVisibility();\n totalDiscountedAmount = giftCardsData.totalDiscountedAmount, giftCards = giftCardsData.giftCards;\n if (giftCards !== null && giftCards !== void 0 && giftCards.length) {\n store.addedGiftCards = giftCards;\n lastGiftCard = store.addedGiftCards[store.addedGiftCards.length - 1];\n store.partialPaymentsOrderObj = _objectSpread(_objectSpread({}, lastGiftCard), {}, {\n totalDiscountedAmount: totalDiscountedAmount\n });\n }\n setCheckoutConfiguration(store.checkout.options);\n setInstallments(store.checkout.options.amount);\n setAmazonPayConfig(store.checkout.paymentMethodsResponse);\n document.querySelector('#paymentMethodsList').innerHTML = '';\n paymentMethodsWithoutGiftCards = store.checkout.paymentMethodsResponse.paymentMethods.filter(function (pm) {\n return pm.type !== constants.GIFTCARD;\n });\n renderStoredPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath);\n _context.next = 21;\n return renderPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath, session.adyenDescriptions);\n case 21:\n renderPosTerminals(session.adyenConnectedTerminals);\n renderGiftCardLogo(session.imagePath);\n firstPaymentMethod = document.querySelector('input[type=radio][name=brandCode]');\n if (firstPaymentMethod) {\n firstPaymentMethod.checked = true;\n helpers.displaySelectedMethod(firstPaymentMethod.value);\n }\n helpers.createShowConfirmationForm(window.ShowConfirmationPaymentFromComponent);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _initializeCheckout.apply(this, arguments);\n}\n(_document$getElementB = document.getElementById('email')) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.addEventListener('change', function (e) {\n var emailPattern = /^[\\w.%+-]+@[\\w.-]+\\.[\\w]{2,6}$/;\n if (emailPattern.test(e.target.value)) {\n var paymentMethodsConfiguration = store.checkoutConfiguration.paymentMethodsConfiguration;\n paymentMethodsConfiguration.card.clickToPayConfiguration.shopperEmail = e.target.value;\n var event = new Event(INIT_CHECKOUT_EVENT);\n document.dispatchEvent(event);\n }\n});\n\n// used by renderGiftCardComponent.js\ndocument.addEventListener(INIT_CHECKOUT_EVENT, function () {\n initializeCheckout();\n});\n\n/**\n * Calls createSession and then renders the retrieved payment methods (including card component)\n */\nfunction renderGenericComponent() {\n return _renderGenericComponent.apply(this, arguments);\n}\nfunction _renderGenericComponent() {\n _renderGenericComponent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _store$addedGiftCards2;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(Object.keys(store.componentsObj).length !== 0)) {\n _context2.next = 3;\n break;\n }\n _context2.next = 3;\n return unmountComponents();\n case 3:\n _context2.next = 5;\n return initializeCheckout();\n case 5:\n if ((_store$addedGiftCards2 = store.addedGiftCards) !== null && _store$addedGiftCards2 !== void 0 && _store$addedGiftCards2.length) {\n applyGiftCards();\n }\n attachGiftCardAddButtonListener();\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _renderGenericComponent.apply(this, arguments);\n}\nmodule.exports = {\n renderGenericComponent: renderGenericComponent,\n initializeCheckout: initializeCheckout,\n INIT_CHECKOUT_EVENT: INIT_CHECKOUT_EVENT\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js?"); +eval("\n\nvar _document$getElementB;\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable no-unsafe-optional-chaining */\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar _require = __webpack_require__(/*! ./renderPaymentMethod */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderPaymentMethod.js\"),\n renderPaymentMethod = _require.renderPaymentMethod;\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nvar _require2 = __webpack_require__(/*! ./localesUsingInstallments */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/localesUsingInstallments.js\"),\n installmentLocales = _require2.installmentLocales;\nvar _require3 = __webpack_require__(/*! ../commons */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js\"),\n createSession = _require3.createSession,\n fetchGiftCards = _require3.fetchGiftCards;\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require4 = __webpack_require__(/*! ./renderGiftcardComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js\"),\n createElementsToShowRemainingGiftCardAmount = _require4.createElementsToShowRemainingGiftCardAmount,\n removeGiftCards = _require4.removeGiftCards,\n renderAddedGiftCard = _require4.renderAddedGiftCard,\n showGiftCardWarningMessage = _require4.showGiftCardWarningMessage,\n attachGiftCardAddButtonListener = _require4.attachGiftCardAddButtonListener,\n showGiftCardInfoMessage = _require4.showGiftCardInfoMessage,\n giftCardBrands = _require4.giftCardBrands,\n clearGiftCardsContainer = _require4.clearGiftCardsContainer,\n attachGiftCardCancelListener = _require4.attachGiftCardCancelListener,\n showGiftCardCancelButton = _require4.showGiftCardCancelButton;\nvar INIT_CHECKOUT_EVENT = 'INIT_CHECKOUT_EVENT';\nfunction addPosTerminals(terminals) {\n var ddTerminals = document.createElement('select');\n ddTerminals.id = 'terminalList';\n Object.keys(terminals).forEach(function (t) {\n var option = document.createElement('option');\n option.value = terminals[t];\n option.text = terminals[t];\n ddTerminals.appendChild(option);\n });\n document.querySelector('#adyenPosTerminals').append(ddTerminals);\n}\nfunction setCheckoutConfiguration(checkoutOptions) {\n var setField = function setField(key, val) {\n return val && _defineProperty({}, key, val);\n };\n store.checkoutConfiguration = _objectSpread(_objectSpread(_objectSpread({}, store.checkoutConfiguration), setField('amount', checkoutOptions.amount)), setField('countryCode', checkoutOptions.countryCode));\n}\nfunction resolveUnmount(key, val) {\n try {\n return Promise.resolve(val.node.unmount(\"component_\".concat(key)));\n } catch (e) {\n // try/catch block for val.unmount\n return Promise.resolve(false);\n }\n}\n\n/**\n * To avoid re-rendering components twice, unmounts existing components from payment methods list\n */\nfunction unmountComponents() {\n var promises = Object.entries(store.componentsObj).map(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n val = _ref3[1];\n delete store.componentsObj[key];\n return resolveUnmount(key, val);\n });\n return Promise.all(promises);\n}\nfunction isCartModified(amount, orderAmount) {\n return amount.currency !== orderAmount.currency || amount.value !== orderAmount.value;\n}\nfunction renderGiftCardLogo(imagePath) {\n var headingImg = document.querySelector('#headingImg');\n if (headingImg) {\n headingImg.src = \"\".concat(imagePath, \"genericgiftcard.png\");\n }\n}\nfunction applyGiftCards() {\n var now = new Date().toISOString();\n var amount = store.checkoutConfiguration.amount;\n var orderAmount = store.partialPaymentsOrderObj.orderAmount;\n var isPartialPaymentExpired = store.addedGiftCards.some(function (cart) {\n return now > cart.expiresAt;\n });\n var cartModified = isCartModified(amount, orderAmount);\n if (isPartialPaymentExpired) {\n removeGiftCards();\n } else if (cartModified) {\n removeGiftCards();\n showGiftCardWarningMessage();\n } else {\n var _store$addedGiftCards;\n clearGiftCardsContainer();\n store.addedGiftCards.forEach(function (card) {\n renderAddedGiftCard(card);\n });\n if ((_store$addedGiftCards = store.addedGiftCards) !== null && _store$addedGiftCards !== void 0 && _store$addedGiftCards.length) {\n showGiftCardInfoMessage();\n }\n store.checkout.options.amount = store.addedGiftCards[store.addedGiftCards.length - 1].remainingAmount;\n showGiftCardCancelButton(true);\n attachGiftCardCancelListener();\n createElementsToShowRemainingGiftCardAmount();\n }\n}\nfunction renderStoredPaymentMethod(imagePath) {\n return function (pm) {\n if (pm.supportedShopperInteractions.includes('Ecommerce')) {\n renderPaymentMethod(pm, true, imagePath);\n }\n };\n}\nfunction renderStoredPaymentMethods(data, imagePath) {\n if (data.storedPaymentMethods) {\n var storedPaymentMethods = data.storedPaymentMethods;\n storedPaymentMethods.forEach(renderStoredPaymentMethod(imagePath));\n }\n}\nfunction renderPaymentMethods(paymentMethods, imagePath, adyenDescriptions) {\n var promises = [];\n for (var i = 0; i < paymentMethods.length; i += 1) {\n var pm = paymentMethods[i];\n promises.push(renderPaymentMethod(pm, false, imagePath, adyenDescriptions[pm.type]));\n }\n return Promise.all(promises);\n}\nfunction renderPosTerminals(adyenConnectedTerminals) {\n var _adyenConnectedTermin;\n var removeChilds = function removeChilds() {\n var posTerminals = document.querySelector('#adyenPosTerminals');\n while (posTerminals.firstChild) {\n posTerminals.removeChild(posTerminals.firstChild);\n }\n };\n if (adyenConnectedTerminals !== null && adyenConnectedTerminals !== void 0 && (_adyenConnectedTermin = adyenConnectedTerminals.uniqueTerminalIds) !== null && _adyenConnectedTermin !== void 0 && _adyenConnectedTermin.length) {\n removeChilds();\n addPosTerminals(adyenConnectedTerminals.uniqueTerminalIds);\n }\n}\nfunction setAmazonPayConfig(adyenPaymentMethods) {\n var amazonpay = adyenPaymentMethods.paymentMethods.find(function (paymentMethod) {\n return paymentMethod.type === 'amazonpay';\n });\n if (amazonpay) {\n var _document$querySelect, _document$querySelect2, _document$querySelect3, _document$querySelect4, _document$querySelect5, _document$querySelect6, _document$querySelect7, _document$querySelect8;\n store.checkoutConfiguration.paymentMethodsConfiguration.amazonpay.configuration = amazonpay.configuration;\n store.checkoutConfiguration.paymentMethodsConfiguration.amazonpay.addressDetails = {\n name: \"\".concat((_document$querySelect = document.querySelector('#shippingFirstNamedefault')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.value, \" \").concat((_document$querySelect2 = document.querySelector('#shippingLastNamedefault')) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value),\n addressLine1: (_document$querySelect3 = document.querySelector('#shippingAddressOnedefault')) === null || _document$querySelect3 === void 0 ? void 0 : _document$querySelect3.value,\n city: (_document$querySelect4 = document.querySelector('#shippingAddressCitydefault')) === null || _document$querySelect4 === void 0 ? void 0 : _document$querySelect4.value,\n stateOrRegion: (_document$querySelect5 = document.querySelector('#shippingAddressCitydefault')) === null || _document$querySelect5 === void 0 ? void 0 : _document$querySelect5.value,\n postalCode: (_document$querySelect6 = document.querySelector('#shippingZipCodedefault')) === null || _document$querySelect6 === void 0 ? void 0 : _document$querySelect6.value,\n countryCode: (_document$querySelect7 = document.querySelector('#shippingCountrydefault')) === null || _document$querySelect7 === void 0 ? void 0 : _document$querySelect7.value,\n phoneNumber: (_document$querySelect8 = document.querySelector('#shippingPhoneNumberdefault')) === null || _document$querySelect8 === void 0 ? void 0 : _document$querySelect8.value\n };\n }\n}\nfunction setInstallments(amount) {\n try {\n var _window$installments;\n if (installmentLocales.indexOf(window.Configuration.locale) < 0) {\n return;\n }\n var _window$installments$ = (_window$installments = window.installments) === null || _window$installments === void 0 ? void 0 : _window$installments.replace(/\\[|]/g, '').split(','),\n _window$installments$2 = _slicedToArray(_window$installments$, 2),\n minAmount = _window$installments$2[0],\n numOfInstallments = _window$installments$2[1];\n if (minAmount <= amount.value) {\n store.checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions = {\n card: {}\n }; // eslint-disable-next-line max-len\n store.checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions.card.values = helpers.getInstallmentValues(numOfInstallments);\n store.checkoutConfiguration.paymentMethodsConfiguration.card.showInstallmentAmounts = true;\n }\n } catch (e) {} // eslint-disable-line no-empty\n}\n\nfunction setGiftCardContainerVisibility() {\n var availableGiftCards = giftCardBrands();\n if (availableGiftCards.length === 0) {\n var giftCardContainer = document.querySelector('.gift-card-selection');\n giftCardContainer.style.display = 'none';\n var giftCardSeparator = document.querySelector('.gift-card-separator');\n giftCardSeparator.style.display = 'none';\n }\n}\nfunction initializeCheckout() {\n return _initializeCheckout.apply(this, arguments);\n}\nfunction _initializeCheckout() {\n _initializeCheckout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var session, giftCardsData, totalDiscountedAmount, giftCards, lastGiftCard, paymentMethodsWithoutGiftCards, firstPaymentMethod;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return createSession();\n case 2:\n session = _context2.sent;\n _context2.next = 5;\n return fetchGiftCards();\n case 5:\n giftCardsData = _context2.sent;\n store.checkoutConfiguration.session = {\n id: session.id,\n sessionData: session.sessionData,\n imagePath: session.imagePath,\n adyenDescriptions: session.adyenDescriptions\n };\n _context2.next = 9;\n return AdyenCheckout(store.checkoutConfiguration);\n case 9:\n store.checkout = _context2.sent;\n setGiftCardContainerVisibility();\n totalDiscountedAmount = giftCardsData.totalDiscountedAmount, giftCards = giftCardsData.giftCards;\n if (giftCards !== null && giftCards !== void 0 && giftCards.length) {\n store.addedGiftCards = giftCards;\n lastGiftCard = store.addedGiftCards[store.addedGiftCards.length - 1];\n store.partialPaymentsOrderObj = _objectSpread(_objectSpread({}, lastGiftCard), {}, {\n totalDiscountedAmount: totalDiscountedAmount\n });\n }\n setCheckoutConfiguration(store.checkout.options);\n setInstallments(store.checkout.options.amount);\n setAmazonPayConfig(store.checkout.paymentMethodsResponse);\n document.querySelector('#paymentMethodsList').innerHTML = '';\n paymentMethodsWithoutGiftCards = store.checkout.paymentMethodsResponse.paymentMethods.filter(function (pm) {\n return pm.type !== constants.GIFTCARD;\n });\n renderStoredPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath);\n _context2.next = 21;\n return renderPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath, session.adyenDescriptions);\n case 21:\n renderPosTerminals(session.adyenConnectedTerminals);\n renderGiftCardLogo(session.imagePath);\n firstPaymentMethod = document.querySelector('input[type=radio][name=brandCode]');\n if (firstPaymentMethod) {\n firstPaymentMethod.checked = true;\n helpers.displaySelectedMethod(firstPaymentMethod.value);\n }\n helpers.createShowConfirmationForm(window.ShowConfirmationPaymentFromComponent);\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _initializeCheckout.apply(this, arguments);\n}\n(_document$getElementB = document.getElementById('email')) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.addEventListener('change', function (e) {\n var emailPattern = /^[\\w.%+-]+@[\\w.-]+\\.[\\w]{2,6}$/;\n if (emailPattern.test(e.target.value)) {\n var paymentMethodsConfiguration = store.checkoutConfiguration.paymentMethodsConfiguration;\n paymentMethodsConfiguration.card.clickToPayConfiguration.shopperEmail = e.target.value;\n var event = new Event(INIT_CHECKOUT_EVENT);\n document.dispatchEvent(event);\n }\n});\n\n// used by renderGiftCardComponent.js\ndocument.addEventListener(INIT_CHECKOUT_EVENT, function () {\n var handleCheckoutEvent = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(Object.keys(store.componentsObj).length !== 0)) {\n _context.next = 3;\n break;\n }\n _context.next = 3;\n return unmountComponents();\n case 3:\n _context.next = 5;\n return initializeCheckout();\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function handleCheckoutEvent() {\n return _ref4.apply(this, arguments);\n };\n }();\n handleCheckoutEvent();\n});\n\n/**\n * Calls createSession and then renders the retrieved payment methods (including card component)\n */\nfunction renderGenericComponent() {\n return _renderGenericComponent.apply(this, arguments);\n}\nfunction _renderGenericComponent() {\n _renderGenericComponent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n var _store$addedGiftCards2;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (!(Object.keys(store.componentsObj).length !== 0)) {\n _context3.next = 3;\n break;\n }\n _context3.next = 3;\n return unmountComponents();\n case 3:\n _context3.next = 5;\n return initializeCheckout();\n case 5:\n if ((_store$addedGiftCards2 = store.addedGiftCards) !== null && _store$addedGiftCards2 !== void 0 && _store$addedGiftCards2.length) {\n applyGiftCards();\n }\n attachGiftCardAddButtonListener();\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _renderGenericComponent.apply(this, arguments);\n}\nmodule.exports = {\n renderGenericComponent: renderGenericComponent,\n initializeCheckout: initializeCheckout,\n INIT_CHECKOUT_EVENT: INIT_CHECKOUT_EVENT\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js?"); /***/ }), @@ -166,7 +166,7 @@ eval("\n\nvar _document$getElementB;\nfunction _regeneratorRuntime() { \"use str /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require = __webpack_require__(/*! ./renderGenericComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js\"),\n INIT_CHECKOUT_EVENT = _require.INIT_CHECKOUT_EVENT;\nfunction getGiftCardElements() {\n var giftCardSelect = document.querySelector('#giftCardSelect');\n var giftCardUl = document.querySelector('#giftCardUl');\n var giftCardContainer = document.querySelector('#giftCardContainer');\n var giftCardAddButton = document.querySelector('#giftCardAddButton');\n var giftCardCancelContainer = document.querySelector('#giftCardsCancelContainer');\n var giftCardCancelButton = document.querySelector('#giftCardCancelButton');\n var giftCardSelectContainer = document.querySelector('#giftCardSelectContainer');\n var giftCardSelectWrapper = document.querySelector('#giftCardSelectWrapper');\n var giftCardsList = document.querySelector('#giftCardsList');\n var giftCardsInfoMessageContainer = document.querySelector('#giftCardsInfoMessage');\n var cancelMainPaymentGiftCard = document.querySelector('#cancelGiftCardButton');\n var giftCardInformation = document.querySelector('#giftCardInformation');\n return {\n giftCardSelect: giftCardSelect,\n giftCardUl: giftCardUl,\n giftCardContainer: giftCardContainer,\n giftCardAddButton: giftCardAddButton,\n giftCardSelectContainer: giftCardSelectContainer,\n giftCardsList: giftCardsList,\n giftCardsInfoMessageContainer: giftCardsInfoMessageContainer,\n giftCardSelectWrapper: giftCardSelectWrapper,\n giftCardCancelContainer: giftCardCancelContainer,\n giftCardCancelButton: giftCardCancelButton,\n cancelMainPaymentGiftCard: cancelMainPaymentGiftCard,\n giftCardInformation: giftCardInformation\n };\n}\nfunction showGiftCardCancelButton(show) {\n var _getGiftCardElements = getGiftCardElements(),\n giftCardCancelContainer = _getGiftCardElements.giftCardCancelContainer;\n if (show) {\n giftCardCancelContainer.classList.remove('invisible');\n } else {\n giftCardCancelContainer.classList.add('invisible');\n }\n}\nfunction removeGiftCards() {\n var _store$addedGiftCards;\n (_store$addedGiftCards = store.addedGiftCards) === null || _store$addedGiftCards === void 0 ? void 0 : _store$addedGiftCards.forEach(function (card) {\n $.ajax({\n type: 'POST',\n url: window.cancelPartialPaymentOrderUrl,\n data: JSON.stringify(card),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(res) {\n var adyenPartialPaymentsOrder = document.querySelector('#adyenPartialPaymentsOrder');\n var _getGiftCardElements2 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements2.giftCardsList,\n giftCardAddButton = _getGiftCardElements2.giftCardAddButton,\n giftCardSelect = _getGiftCardElements2.giftCardSelect,\n giftCardUl = _getGiftCardElements2.giftCardUl,\n giftCardsInfoMessageContainer = _getGiftCardElements2.giftCardsInfoMessageContainer,\n giftCardSelectContainer = _getGiftCardElements2.giftCardSelectContainer,\n cancelMainPaymentGiftCard = _getGiftCardElements2.cancelMainPaymentGiftCard,\n giftCardInformation = _getGiftCardElements2.giftCardInformation;\n adyenPartialPaymentsOrder.value = null;\n giftCardsList.innerHTML = '';\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = null;\n giftCardSelectContainer.classList.add('invisible');\n giftCardSelect.classList.remove('invisible');\n giftCardUl.innerHTML = '';\n cancelMainPaymentGiftCard.classList.add('invisible');\n showGiftCardCancelButton(false);\n giftCardInformation === null || giftCardInformation === void 0 ? void 0 : giftCardInformation.remove();\n store.checkout.options.amount = res.amount;\n store.partialPaymentsOrderObj = null;\n store.addedGiftCards = null;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n if (res.resultCode === constants.RECEIVED) {\n var _document$querySelect, _store$componentsObj, _store$componentsObj$;\n (_document$querySelect = document.querySelector('#cancelGiftCardContainer')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.parentNode.remove();\n (_store$componentsObj = store.componentsObj) === null || _store$componentsObj === void 0 ? void 0 : (_store$componentsObj$ = _store$componentsObj.giftcard) === null || _store$componentsObj$ === void 0 ? void 0 : _store$componentsObj$.node.unmount('component_giftcard');\n }\n var event = new Event(INIT_CHECKOUT_EVENT);\n document.dispatchEvent(event);\n }\n });\n });\n}\nfunction giftCardBrands() {\n var paymentMethodsResponse = store.checkout.paymentMethodsResponse;\n return paymentMethodsResponse.paymentMethods.filter(function (pm) {\n return pm.type === constants.GIFTCARD;\n });\n}\nfunction renderGiftCardSelectForm() {\n var _getGiftCardElements3 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements3.giftCardUl,\n giftCardSelect = _getGiftCardElements3.giftCardSelect;\n if (giftCardUl !== null && giftCardUl !== void 0 && giftCardUl.innerHTML) {\n giftCardSelect.classList.remove('invisible');\n return;\n }\n var imagePath = store.checkoutConfiguration.session.imagePath;\n giftCardBrands().forEach(function (giftCard) {\n var newListItem = document.createElement('li');\n newListItem.setAttribute('data-brand', giftCard.brand);\n newListItem.setAttribute('data-name', giftCard.name);\n newListItem.setAttribute('data-type', giftCard.type);\n var span = document.createElement('span');\n span.textContent = giftCard.name;\n var img = document.createElement('img');\n img.src = \"\".concat(imagePath).concat(giftCard.brand, \".png\");\n img.width = 40;\n img.height = 26;\n newListItem.appendChild(span);\n newListItem.appendChild(img);\n giftCardUl.appendChild(newListItem);\n });\n}\nfunction attachGiftCardFormListeners() {\n if (store.giftCardComponentListenersAdded) {\n return;\n }\n var _getGiftCardElements4 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements4.giftCardUl,\n giftCardSelect = _getGiftCardElements4.giftCardSelect,\n giftCardContainer = _getGiftCardElements4.giftCardContainer,\n giftCardSelectWrapper = _getGiftCardElements4.giftCardSelectWrapper;\n if (giftCardUl) {\n giftCardUl.addEventListener('click', function (event) {\n var _store$componentsObj2;\n giftCardUl.classList.toggle('invisible');\n var selectedGiftCard = {\n name: event.target.dataset.name,\n brand: event.target.dataset.brand,\n type: event.target.dataset.type\n };\n if ((_store$componentsObj2 = store.componentsObj) !== null && _store$componentsObj2 !== void 0 && _store$componentsObj2.giftcard) {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n }\n if (!store.partialPaymentsOrderObj) {\n store.partialPaymentsOrderObj = {};\n }\n var newOption = document.createElement('option');\n newOption.textContent = selectedGiftCard.name;\n newOption.value = selectedGiftCard.brand;\n newOption.style.visibility = 'hidden';\n giftCardSelect.appendChild(newOption);\n giftCardSelect.value = selectedGiftCard.brand;\n giftCardContainer.innerHTML = '';\n var giftCardNode = store.checkout.create(constants.GIFTCARD, _objectSpread(_objectSpread({}, store.checkoutConfiguration.giftcard), {}, {\n brand: selectedGiftCard.brand,\n name: selectedGiftCard.name\n })).mount(giftCardContainer);\n store.componentsObj.giftcard = {\n node: giftCardNode\n };\n });\n }\n if (giftCardSelect) {\n giftCardSelectWrapper.addEventListener('mousedown', function () {\n giftCardUl.classList.toggle('invisible');\n });\n }\n store.giftCardComponentListenersAdded = true;\n}\nfunction showGiftCardWarningMessage() {\n var alertContainer = document.createElement('div');\n alertContainer.setAttribute('id', 'giftCardWarningMessage');\n alertContainer.classList.add('alert', 'alert-warning', 'error-message', 'gift-card-warning-msg');\n alertContainer.setAttribute('role', 'alert');\n var alertContainerP = document.createElement('p');\n alertContainerP.classList.add('error-message-text');\n alertContainerP.textContent = window.giftCardWarningMessage;\n alertContainer.appendChild(alertContainerP);\n var orderTotalSummaryEl = document.querySelector('.card-body.order-total-summary');\n orderTotalSummaryEl === null || orderTotalSummaryEl === void 0 ? void 0 : orderTotalSummaryEl.appendChild(alertContainer);\n}\nfunction attachGiftCardAddButtonListener() {\n var _getGiftCardElements5 = getGiftCardElements(),\n giftCardAddButton = _getGiftCardElements5.giftCardAddButton,\n giftCardSelectContainer = _getGiftCardElements5.giftCardSelectContainer,\n giftCardSelectWrapper = _getGiftCardElements5.giftCardSelectWrapper,\n giftCardSelect = _getGiftCardElements5.giftCardSelect;\n if (giftCardAddButton) {\n giftCardAddButton.addEventListener('click', function () {\n renderGiftCardSelectForm();\n attachGiftCardFormListeners();\n var giftCardWarningMessageEl = document.querySelector('#giftCardWarningMessage');\n if (giftCardWarningMessageEl) {\n giftCardWarningMessageEl.style.display = 'none';\n }\n giftCardSelect.value = 'null';\n giftCardAddButton.style.display = 'none';\n giftCardSelectContainer.classList.remove('invisible');\n giftCardSelectWrapper.classList.remove('invisible');\n });\n }\n}\nfunction attachGiftCardCancelListener() {\n var _getGiftCardElements6 = getGiftCardElements(),\n giftCardCancelButton = _getGiftCardElements6.giftCardCancelButton;\n giftCardCancelButton === null || giftCardCancelButton === void 0 ? void 0 : giftCardCancelButton.addEventListener('click', function () {\n removeGiftCards();\n });\n}\nfunction removeGiftCardFormListeners() {\n var _getGiftCardElements7 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements7.giftCardUl,\n giftCardSelect = _getGiftCardElements7.giftCardSelect;\n giftCardUl.replaceWith(giftCardUl.cloneNode(true));\n giftCardSelect.replaceWith(giftCardSelect.cloneNode(true));\n store.giftCardComponentListenersAdded = false;\n}\nfunction clearGiftCardsContainer() {\n var _getGiftCardElements8 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements8.giftCardsList;\n giftCardsList.innerHTML = '';\n}\nfunction renderAddedGiftCard(card) {\n var giftCardData = card.giftCard;\n var imagePath = store.checkoutConfiguration.session.imagePath;\n var _getGiftCardElements9 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements9.giftCardsList,\n giftCardAddButton = _getGiftCardElements9.giftCardAddButton;\n var giftCardDiv = document.createElement('div');\n giftCardDiv.classList.add('gift-card');\n var brandContainer = document.createElement('div');\n brandContainer.classList.add('brand-container');\n var giftCardImg = document.createElement('img');\n var giftCardImgSrc = \"\".concat(imagePath).concat(giftCardData.brand, \".png\");\n giftCardImg.setAttribute('src', giftCardImgSrc);\n giftCardImg.classList.add('gift-card-logo');\n var giftCardNameP = document.createElement('p');\n giftCardNameP.textContent = giftCardData.name;\n brandContainer.appendChild(giftCardImg);\n brandContainer.appendChild(giftCardNameP);\n var giftCardAction = document.createElement('div');\n giftCardAction.classList.add('gift-card-action');\n var brandAndRemoveActionWrapper = document.createElement('div');\n brandAndRemoveActionWrapper.classList.add('wrapper');\n brandAndRemoveActionWrapper.appendChild(brandContainer);\n brandAndRemoveActionWrapper.appendChild(giftCardAction);\n var giftCardAmountDiv = document.createElement('div');\n giftCardAmountDiv.classList.add('wrapper');\n var amountLabel = document.createElement('p');\n amountLabel.textContent = window.deductedBalanceGiftCardResource;\n var amountValue = document.createElement('strong');\n amountValue.textContent = card.discountedAmount ? \"-\".concat(card.discountedAmount) : '';\n giftCardAmountDiv.appendChild(amountLabel);\n giftCardAmountDiv.appendChild(amountValue);\n giftCardDiv.appendChild(brandAndRemoveActionWrapper);\n giftCardDiv.appendChild(giftCardAmountDiv);\n giftCardsList.appendChild(giftCardDiv);\n giftCardAddButton.style.display = 'block';\n removeGiftCardFormListeners();\n}\nfunction createElementsToShowRemainingGiftCardAmount() {\n var renderedRemainingAmountEndSpan = document.getElementById('remainingAmountEndSpan');\n var renderedDiscountedAmountEndSpan = document.getElementById('discountedAmountEndSpan');\n if (renderedRemainingAmountEndSpan && renderedDiscountedAmountEndSpan) {\n renderedRemainingAmountEndSpan.innerText = store.partialPaymentsOrderObj.remainingAmountFormatted;\n renderedDiscountedAmountEndSpan.innerText = store.partialPaymentsOrderObj.totalDiscountedAmount;\n return;\n }\n var mainContainer = document.createElement('div');\n var remainingAmountContainer = document.createElement('div');\n var remainingAmountStart = document.createElement('div');\n var remainingAmountEnd = document.createElement('div');\n var discountedAmountContainer = document.createElement('div');\n var discountedAmountStart = document.createElement('div');\n var discountedAmountEnd = document.createElement('div');\n var remainingAmountStartP = document.createElement('p');\n var remainingAmountEndP = document.createElement('p');\n var discountedAmountStartP = document.createElement('p');\n var discountedAmountEndP = document.createElement('p');\n var remainingAmountStartSpan = document.createElement('span');\n var discountedAmountStartSpan = document.createElement('span');\n var remainingAmountEndSpan = document.createElement('span');\n remainingAmountEndSpan.id = 'remainingAmountEndSpan';\n var discountedAmountEndSpan = document.createElement('span');\n discountedAmountEndSpan.id = 'discountedAmountEndSpan';\n remainingAmountContainer.classList.add('row', 'grand-total', 'leading-lines');\n remainingAmountStart.classList.add('col-6', 'start-lines');\n remainingAmountEnd.classList.add('col-6', 'end-lines');\n remainingAmountStartP.classList.add('order-receipt-label');\n discountedAmountContainer.classList.add('row', 'grand-total', 'leading-lines');\n discountedAmountStart.classList.add('col-6', 'start-lines');\n discountedAmountEnd.classList.add('col-6', 'end-lines');\n discountedAmountStartP.classList.add('order-receipt-label');\n remainingAmountEndP.classList.add('text-right');\n discountedAmountEndP.classList.add('text-right');\n discountedAmountContainer.id = 'discountedAmountContainer';\n remainingAmountContainer.id = 'remainingAmountContainer';\n remainingAmountStartSpan.innerText = window.remainingAmountGiftCardResource;\n discountedAmountStartSpan.innerText = window.discountedAmountGiftCardResource;\n remainingAmountEndSpan.innerText = store.partialPaymentsOrderObj.remainingAmountFormatted;\n discountedAmountEndSpan.innerText = store.partialPaymentsOrderObj.totalDiscountedAmount;\n remainingAmountContainer.appendChild(remainingAmountStart);\n remainingAmountContainer.appendChild(remainingAmountEnd);\n remainingAmountStart.appendChild(remainingAmountStartP);\n discountedAmountContainer.appendChild(discountedAmountStart);\n discountedAmountContainer.appendChild(discountedAmountEnd);\n discountedAmountStart.appendChild(discountedAmountStartP);\n remainingAmountEnd.appendChild(remainingAmountEndP);\n remainingAmountStartP.appendChild(remainingAmountStartSpan);\n discountedAmountEnd.appendChild(discountedAmountEndP);\n discountedAmountStartP.appendChild(discountedAmountStartSpan);\n remainingAmountEndP.appendChild(remainingAmountEndSpan);\n discountedAmountEndP.appendChild(discountedAmountEndSpan);\n var pricingContainer = document.querySelector('.card-body.order-total-summary');\n mainContainer.id = 'giftCardInformation';\n mainContainer.appendChild(discountedAmountContainer);\n mainContainer.appendChild(remainingAmountContainer);\n pricingContainer.appendChild(mainContainer);\n}\nfunction showGiftCardInfoMessage() {\n var messageText = store.partialPaymentsOrderObj.message;\n var _getGiftCardElements10 = getGiftCardElements(),\n giftCardsInfoMessageContainer = _getGiftCardElements10.giftCardsInfoMessageContainer;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n if (!messageText) return;\n var giftCardsInfoMessage = document.createElement('div');\n giftCardsInfoMessage.classList.add('adyen-checkout__alert-message', 'adyen-checkout__alert-message--warning');\n giftCardsInfoMessage.setAttribute('role', 'alert');\n var infoMessage = document.createElement('span');\n infoMessage.textContent = messageText;\n giftCardsInfoMessage.appendChild(infoMessage);\n giftCardsInfoMessageContainer.appendChild(giftCardsInfoMessage);\n giftCardsInfoMessageContainer.classList.add('gift-cards-info-message-container');\n}\nmodule.exports = {\n removeGiftCards: removeGiftCards,\n renderAddedGiftCard: renderAddedGiftCard,\n attachGiftCardAddButtonListener: attachGiftCardAddButtonListener,\n getGiftCardElements: getGiftCardElements,\n showGiftCardWarningMessage: showGiftCardWarningMessage,\n createElementsToShowRemainingGiftCardAmount: createElementsToShowRemainingGiftCardAmount,\n renderGiftCardSelectForm: renderGiftCardSelectForm,\n showGiftCardInfoMessage: showGiftCardInfoMessage,\n giftCardBrands: giftCardBrands,\n clearGiftCardsContainer: clearGiftCardsContainer,\n attachGiftCardCancelListener: attachGiftCardCancelListener,\n showGiftCardCancelButton: showGiftCardCancelButton\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js?"); +eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require = __webpack_require__(/*! ./renderGenericComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js\"),\n INIT_CHECKOUT_EVENT = _require.INIT_CHECKOUT_EVENT;\nfunction getGiftCardElements() {\n var giftCardSelect = document.querySelector('#giftCardSelect');\n var giftCardUl = document.querySelector('#giftCardUl');\n var giftCardContainer = document.querySelector('#giftCardContainer');\n var giftCardAddButton = document.querySelector('#giftCardAddButton');\n var giftCardCancelContainer = document.querySelector('#giftCardsCancelContainer');\n var giftCardCancelButton = document.querySelector('#giftCardCancelButton');\n var giftCardSelectContainer = document.querySelector('#giftCardSelectContainer');\n var giftCardSelectWrapper = document.querySelector('#giftCardSelectWrapper');\n var giftCardsList = document.querySelector('#giftCardsList');\n var giftCardsInfoMessageContainer = document.querySelector('#giftCardsInfoMessage');\n var cancelMainPaymentGiftCard = document.querySelector('#cancelGiftCardButton');\n var giftCardInformation = document.querySelector('#giftCardInformation');\n return {\n giftCardSelect: giftCardSelect,\n giftCardUl: giftCardUl,\n giftCardContainer: giftCardContainer,\n giftCardAddButton: giftCardAddButton,\n giftCardSelectContainer: giftCardSelectContainer,\n giftCardsList: giftCardsList,\n giftCardsInfoMessageContainer: giftCardsInfoMessageContainer,\n giftCardSelectWrapper: giftCardSelectWrapper,\n giftCardCancelContainer: giftCardCancelContainer,\n giftCardCancelButton: giftCardCancelButton,\n cancelMainPaymentGiftCard: cancelMainPaymentGiftCard,\n giftCardInformation: giftCardInformation\n };\n}\nfunction showGiftCardCancelButton(show) {\n var _getGiftCardElements = getGiftCardElements(),\n giftCardCancelContainer = _getGiftCardElements.giftCardCancelContainer;\n if (show) {\n giftCardCancelContainer.classList.remove('invisible');\n } else {\n giftCardCancelContainer.classList.add('invisible');\n }\n}\nfunction removeGiftCards() {\n var _store$addedGiftCards;\n (_store$addedGiftCards = store.addedGiftCards) === null || _store$addedGiftCards === void 0 ? void 0 : _store$addedGiftCards.forEach(function (card) {\n $.ajax({\n type: 'POST',\n url: window.cancelPartialPaymentOrderUrl,\n data: JSON.stringify(card),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(res) {\n var adyenPartialPaymentsOrder = document.querySelector('#adyenPartialPaymentsOrder');\n var _getGiftCardElements2 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements2.giftCardsList,\n giftCardAddButton = _getGiftCardElements2.giftCardAddButton,\n giftCardSelect = _getGiftCardElements2.giftCardSelect,\n giftCardUl = _getGiftCardElements2.giftCardUl,\n giftCardsInfoMessageContainer = _getGiftCardElements2.giftCardsInfoMessageContainer,\n giftCardSelectContainer = _getGiftCardElements2.giftCardSelectContainer,\n cancelMainPaymentGiftCard = _getGiftCardElements2.cancelMainPaymentGiftCard,\n giftCardInformation = _getGiftCardElements2.giftCardInformation;\n adyenPartialPaymentsOrder.value = null;\n giftCardsList.innerHTML = '';\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = null;\n giftCardSelectContainer.classList.add('invisible');\n giftCardSelect.classList.remove('invisible');\n giftCardUl.innerHTML = '';\n cancelMainPaymentGiftCard.classList.add('invisible');\n showGiftCardCancelButton(false);\n giftCardInformation === null || giftCardInformation === void 0 ? void 0 : giftCardInformation.remove();\n store.checkout.options.amount = res.amount;\n store.partialPaymentsOrderObj = null;\n store.addedGiftCards = null;\n store.adyenOrderData = null;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n if (res.resultCode === constants.RECEIVED) {\n var _document$querySelect, _store$componentsObj, _store$componentsObj$;\n (_document$querySelect = document.querySelector('#cancelGiftCardContainer')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.parentNode.remove();\n (_store$componentsObj = store.componentsObj) === null || _store$componentsObj === void 0 ? void 0 : (_store$componentsObj$ = _store$componentsObj.giftcard) === null || _store$componentsObj$ === void 0 ? void 0 : _store$componentsObj$.node.unmount('component_giftcard');\n }\n var event = new Event(INIT_CHECKOUT_EVENT);\n document.dispatchEvent(event);\n }\n });\n });\n}\nfunction giftCardBrands() {\n var paymentMethodsResponse = store.checkout.paymentMethodsResponse;\n return paymentMethodsResponse.paymentMethods.filter(function (pm) {\n return pm.type === constants.GIFTCARD;\n });\n}\nfunction renderGiftCardSelectForm() {\n var _getGiftCardElements3 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements3.giftCardUl,\n giftCardSelect = _getGiftCardElements3.giftCardSelect;\n if (giftCardUl !== null && giftCardUl !== void 0 && giftCardUl.innerHTML) {\n giftCardSelect.classList.remove('invisible');\n return;\n }\n var imagePath = store.checkoutConfiguration.session.imagePath;\n giftCardBrands().forEach(function (giftCard) {\n var newListItem = document.createElement('li');\n newListItem.setAttribute('data-brand', giftCard.brand);\n newListItem.setAttribute('data-name', giftCard.name);\n newListItem.setAttribute('data-type', giftCard.type);\n var span = document.createElement('span');\n span.textContent = giftCard.name;\n var img = document.createElement('img');\n img.src = \"\".concat(imagePath).concat(giftCard.brand, \".png\");\n img.width = 40;\n img.height = 26;\n newListItem.appendChild(span);\n newListItem.appendChild(img);\n giftCardUl.appendChild(newListItem);\n });\n}\nfunction attachGiftCardFormListeners() {\n if (store.giftCardComponentListenersAdded) {\n return;\n }\n var _getGiftCardElements4 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements4.giftCardUl,\n giftCardSelect = _getGiftCardElements4.giftCardSelect,\n giftCardContainer = _getGiftCardElements4.giftCardContainer,\n giftCardSelectWrapper = _getGiftCardElements4.giftCardSelectWrapper;\n if (giftCardUl) {\n giftCardUl.addEventListener('click', function (event) {\n var _store$componentsObj2;\n giftCardUl.classList.toggle('invisible');\n var selectedGiftCard = {\n name: event.target.dataset.name,\n brand: event.target.dataset.brand,\n type: event.target.dataset.type\n };\n if ((_store$componentsObj2 = store.componentsObj) !== null && _store$componentsObj2 !== void 0 && _store$componentsObj2.giftcard) {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n }\n if (!store.partialPaymentsOrderObj) {\n store.partialPaymentsOrderObj = {};\n }\n var newOption = document.createElement('option');\n newOption.textContent = selectedGiftCard.name;\n newOption.value = selectedGiftCard.brand;\n newOption.style.visibility = 'hidden';\n giftCardSelect.appendChild(newOption);\n giftCardSelect.value = selectedGiftCard.brand;\n giftCardContainer.innerHTML = '';\n var giftCardNode = store.checkout.create(constants.GIFTCARD, _objectSpread(_objectSpread({}, store.checkoutConfiguration.giftcard), {}, {\n brand: selectedGiftCard.brand,\n name: selectedGiftCard.name\n })).mount(giftCardContainer);\n store.componentsObj.giftcard = {\n node: giftCardNode\n };\n });\n }\n if (giftCardSelect) {\n giftCardSelectWrapper.addEventListener('mousedown', function () {\n giftCardUl.classList.toggle('invisible');\n });\n }\n store.giftCardComponentListenersAdded = true;\n}\nfunction showGiftCardWarningMessage() {\n var alertContainer = document.createElement('div');\n alertContainer.setAttribute('id', 'giftCardWarningMessage');\n alertContainer.classList.add('alert', 'alert-warning', 'error-message', 'gift-card-warning-msg');\n alertContainer.setAttribute('role', 'alert');\n var alertContainerP = document.createElement('p');\n alertContainerP.classList.add('error-message-text');\n alertContainerP.textContent = window.giftCardWarningMessage;\n alertContainer.appendChild(alertContainerP);\n var orderTotalSummaryEl = document.querySelector('.card-body.order-total-summary');\n orderTotalSummaryEl === null || orderTotalSummaryEl === void 0 ? void 0 : orderTotalSummaryEl.appendChild(alertContainer);\n}\nfunction attachGiftCardAddButtonListener() {\n var _getGiftCardElements5 = getGiftCardElements(),\n giftCardAddButton = _getGiftCardElements5.giftCardAddButton,\n giftCardSelectContainer = _getGiftCardElements5.giftCardSelectContainer,\n giftCardSelectWrapper = _getGiftCardElements5.giftCardSelectWrapper,\n giftCardSelect = _getGiftCardElements5.giftCardSelect;\n if (giftCardAddButton) {\n giftCardAddButton.addEventListener('click', function () {\n renderGiftCardSelectForm();\n attachGiftCardFormListeners();\n var giftCardWarningMessageEl = document.querySelector('#giftCardWarningMessage');\n if (giftCardWarningMessageEl) {\n giftCardWarningMessageEl.style.display = 'none';\n }\n giftCardSelect.value = 'null';\n giftCardAddButton.style.display = 'none';\n giftCardSelectContainer.classList.remove('invisible');\n giftCardSelectWrapper.classList.remove('invisible');\n });\n }\n}\nfunction attachGiftCardCancelListener() {\n var _getGiftCardElements6 = getGiftCardElements(),\n giftCardCancelButton = _getGiftCardElements6.giftCardCancelButton;\n giftCardCancelButton === null || giftCardCancelButton === void 0 ? void 0 : giftCardCancelButton.addEventListener('click', function () {\n removeGiftCards();\n });\n}\nfunction removeGiftCardFormListeners() {\n var _getGiftCardElements7 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements7.giftCardUl,\n giftCardSelect = _getGiftCardElements7.giftCardSelect;\n giftCardUl.replaceWith(giftCardUl.cloneNode(true));\n giftCardSelect.replaceWith(giftCardSelect.cloneNode(true));\n store.giftCardComponentListenersAdded = false;\n}\nfunction clearGiftCardsContainer() {\n var _getGiftCardElements8 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements8.giftCardsList;\n giftCardsList.innerHTML = '';\n}\nfunction renderAddedGiftCard(card) {\n var giftCardData = card.giftCard;\n var imagePath = store.checkoutConfiguration.session.imagePath;\n var _getGiftCardElements9 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements9.giftCardsList,\n giftCardAddButton = _getGiftCardElements9.giftCardAddButton;\n var giftCardDiv = document.createElement('div');\n giftCardDiv.classList.add('gift-card');\n var brandContainer = document.createElement('div');\n brandContainer.classList.add('brand-container');\n var giftCardImg = document.createElement('img');\n var giftCardImgSrc = \"\".concat(imagePath).concat(giftCardData.brand, \".png\");\n giftCardImg.setAttribute('src', giftCardImgSrc);\n giftCardImg.classList.add('gift-card-logo');\n var giftCardNameP = document.createElement('p');\n giftCardNameP.textContent = giftCardData.name;\n brandContainer.appendChild(giftCardImg);\n brandContainer.appendChild(giftCardNameP);\n var giftCardAction = document.createElement('div');\n giftCardAction.classList.add('gift-card-action');\n var brandAndRemoveActionWrapper = document.createElement('div');\n brandAndRemoveActionWrapper.classList.add('wrapper');\n brandAndRemoveActionWrapper.appendChild(brandContainer);\n brandAndRemoveActionWrapper.appendChild(giftCardAction);\n var giftCardAmountDiv = document.createElement('div');\n giftCardAmountDiv.classList.add('wrapper');\n var amountLabel = document.createElement('p');\n amountLabel.textContent = window.deductedBalanceGiftCardResource;\n var amountValue = document.createElement('strong');\n amountValue.textContent = card.discountedAmount ? \"-\".concat(card.discountedAmount) : '';\n giftCardAmountDiv.appendChild(amountLabel);\n giftCardAmountDiv.appendChild(amountValue);\n giftCardDiv.appendChild(brandAndRemoveActionWrapper);\n giftCardDiv.appendChild(giftCardAmountDiv);\n giftCardsList.appendChild(giftCardDiv);\n giftCardAddButton.style.display = 'block';\n removeGiftCardFormListeners();\n}\nfunction createElementsToShowRemainingGiftCardAmount() {\n var renderedRemainingAmountEndSpan = document.getElementById('remainingAmountEndSpan');\n var renderedDiscountedAmountEndSpan = document.getElementById('discountedAmountEndSpan');\n if (renderedRemainingAmountEndSpan && renderedDiscountedAmountEndSpan) {\n renderedRemainingAmountEndSpan.innerText = store.partialPaymentsOrderObj.remainingAmountFormatted;\n renderedDiscountedAmountEndSpan.innerText = store.partialPaymentsOrderObj.totalDiscountedAmount;\n return;\n }\n var mainContainer = document.createElement('div');\n var remainingAmountContainer = document.createElement('div');\n var remainingAmountStart = document.createElement('div');\n var remainingAmountEnd = document.createElement('div');\n var discountedAmountContainer = document.createElement('div');\n var discountedAmountStart = document.createElement('div');\n var discountedAmountEnd = document.createElement('div');\n var remainingAmountStartP = document.createElement('p');\n var remainingAmountEndP = document.createElement('p');\n var discountedAmountStartP = document.createElement('p');\n var discountedAmountEndP = document.createElement('p');\n var remainingAmountStartSpan = document.createElement('span');\n var discountedAmountStartSpan = document.createElement('span');\n var remainingAmountEndSpan = document.createElement('span');\n remainingAmountEndSpan.id = 'remainingAmountEndSpan';\n var discountedAmountEndSpan = document.createElement('span');\n discountedAmountEndSpan.id = 'discountedAmountEndSpan';\n remainingAmountContainer.classList.add('row', 'grand-total', 'leading-lines');\n remainingAmountStart.classList.add('col-6', 'start-lines');\n remainingAmountEnd.classList.add('col-6', 'end-lines');\n remainingAmountStartP.classList.add('order-receipt-label');\n discountedAmountContainer.classList.add('row', 'grand-total', 'leading-lines');\n discountedAmountStart.classList.add('col-6', 'start-lines');\n discountedAmountEnd.classList.add('col-6', 'end-lines');\n discountedAmountStartP.classList.add('order-receipt-label');\n remainingAmountEndP.classList.add('text-right');\n discountedAmountEndP.classList.add('text-right');\n discountedAmountContainer.id = 'discountedAmountContainer';\n remainingAmountContainer.id = 'remainingAmountContainer';\n remainingAmountStartSpan.innerText = window.remainingAmountGiftCardResource;\n discountedAmountStartSpan.innerText = window.discountedAmountGiftCardResource;\n remainingAmountEndSpan.innerText = store.partialPaymentsOrderObj.remainingAmountFormatted;\n discountedAmountEndSpan.innerText = store.partialPaymentsOrderObj.totalDiscountedAmount;\n remainingAmountContainer.appendChild(remainingAmountStart);\n remainingAmountContainer.appendChild(remainingAmountEnd);\n remainingAmountStart.appendChild(remainingAmountStartP);\n discountedAmountContainer.appendChild(discountedAmountStart);\n discountedAmountContainer.appendChild(discountedAmountEnd);\n discountedAmountStart.appendChild(discountedAmountStartP);\n remainingAmountEnd.appendChild(remainingAmountEndP);\n remainingAmountStartP.appendChild(remainingAmountStartSpan);\n discountedAmountEnd.appendChild(discountedAmountEndP);\n discountedAmountStartP.appendChild(discountedAmountStartSpan);\n remainingAmountEndP.appendChild(remainingAmountEndSpan);\n discountedAmountEndP.appendChild(discountedAmountEndSpan);\n var pricingContainer = document.querySelector('.card-body.order-total-summary');\n mainContainer.id = 'giftCardInformation';\n mainContainer.appendChild(discountedAmountContainer);\n mainContainer.appendChild(remainingAmountContainer);\n pricingContainer.appendChild(mainContainer);\n}\nfunction showGiftCardInfoMessage() {\n var messageText = store.partialPaymentsOrderObj.message;\n var _getGiftCardElements10 = getGiftCardElements(),\n giftCardsInfoMessageContainer = _getGiftCardElements10.giftCardsInfoMessageContainer;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n if (!messageText) return;\n var giftCardsInfoMessage = document.createElement('div');\n giftCardsInfoMessage.classList.add('adyen-checkout__alert-message', 'adyen-checkout__alert-message--warning');\n giftCardsInfoMessage.setAttribute('role', 'alert');\n var infoMessage = document.createElement('span');\n infoMessage.textContent = messageText;\n giftCardsInfoMessage.appendChild(infoMessage);\n giftCardsInfoMessageContainer.appendChild(giftCardsInfoMessage);\n giftCardsInfoMessageContainer.classList.add('gift-cards-info-message-container');\n}\nmodule.exports = {\n removeGiftCards: removeGiftCards,\n renderAddedGiftCard: renderAddedGiftCard,\n attachGiftCardAddButtonListener: attachGiftCardAddButtonListener,\n getGiftCardElements: getGiftCardElements,\n showGiftCardWarningMessage: showGiftCardWarningMessage,\n createElementsToShowRemainingGiftCardAmount: createElementsToShowRemainingGiftCardAmount,\n renderGiftCardSelectForm: renderGiftCardSelectForm,\n showGiftCardInfoMessage: showGiftCardInfoMessage,\n giftCardBrands: giftCardBrands,\n clearGiftCardsContainer: clearGiftCardsContainer,\n attachGiftCardCancelListener: attachGiftCardCancelListener,\n showGiftCardCancelButton: showGiftCardCancelButton\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js?"); /***/ }), @@ -214,7 +214,7 @@ eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); +eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n DISABLED_SUBMIT_BUTTON_METHODS: ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay', 'cashapp'],\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); /***/ }), diff --git a/cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenGiving.js b/cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenGiving.js index 0578f79f1..3f4a8de30 100644 --- a/cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenGiving.js +++ b/cartridges/int_adyen_SFRA/cartridge/static/default/js/adyenGiving.js @@ -94,7 +94,7 @@ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar adyenGivingNode = document.getElementById('donate-container');\nfunction handleOnDonate(state, component) {\n if (!state.isValid) {\n return;\n }\n var selectedAmount = state.data.amount;\n var donationData = {\n amountValue: selectedAmount.value,\n amountCurrency: selectedAmount.currency,\n orderNo: window.orderNo,\n orderToken: window.orderToken\n };\n $.ajax({\n url: window.donateURL,\n type: 'post',\n data: donationData,\n success: function success() {\n component.setStatus('success');\n }\n });\n}\nfunction handleOnCancel(state, component) {\n var adyenGiving = document.getElementById('adyenGiving');\n adyenGiving.style.transition = 'all 3s ease-in-out';\n adyenGiving.style.display = 'none';\n component.unmount();\n}\nfunction getAmounts() {\n try {\n return JSON.parse(donationAmounts);\n } catch (e) {\n return [];\n }\n}\nvar donationConfig = {\n amounts: getAmounts(),\n backgroundUrl: adyenGivingBackgroundUrl,\n description: charityDescription,\n logoUrl: adyenGivingLogoUrl,\n name: charityName,\n url: charityWebsite,\n showCancelButton: true,\n onDonate: handleOnDonate,\n onCancel: handleOnCancel\n};\nAdyenCheckout(window.Configuration).then(function (checkout) {\n checkout.create('donation', donationConfig).mount(adyenGivingNode);\n});\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js?"); +eval("\n\nvar adyenGivingNode = document.getElementById('donate-container');\nfunction handleOnDonate(state, component) {\n if (!state.isValid) {\n return;\n }\n var selectedAmount = state.data.amount;\n var donationData = {\n amountValue: selectedAmount.value,\n amountCurrency: selectedAmount.currency,\n orderNo: window.orderNo,\n orderToken: window.orderToken\n };\n $.ajax({\n url: window.donateURL,\n type: 'post',\n data: donationData,\n success: function success() {\n component.setStatus('success');\n }\n });\n}\nfunction handleOnCancel(state, component) {\n var adyenGiving = document.getElementById('adyenGiving');\n adyenGiving.style.transition = 'all 3s ease-in-out';\n adyenGiving.style.display = 'none';\n component.unmount();\n}\nfunction getAmounts() {\n try {\n return JSON.parse(donationAmounts);\n } catch (e) {\n return [];\n }\n}\nvar donationConfig = {\n amounts: getAmounts(),\n backgroundUrl: adyenGivingBackgroundUrl,\n description: decodeURI(charityDescription),\n logoUrl: adyenGivingLogoUrl,\n name: decodeURI(charityName),\n url: charityWebsite,\n showCancelButton: true,\n onDonate: handleOnDonate,\n onCancel: handleOnCancel\n};\nAdyenCheckout(window.Configuration).then(function (checkout) {\n checkout.create('donation', donationConfig).mount(adyenGivingNode);\n});\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js?"); /***/ }) diff --git a/cartridges/int_adyen_SFRA/cartridge/static/default/js/amazonPayCheckout.js b/cartridges/int_adyen_SFRA/cartridge/static/default/js/amazonPayCheckout.js index 8d9f64ae4..3d03cacbe 100644 --- a/cartridges/int_adyen_SFRA/cartridge/static/default/js/amazonPayCheckout.js +++ b/cartridges/int_adyen_SFRA/cartridge/static/default/js/amazonPayCheckout.js @@ -94,7 +94,7 @@ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nfunction assignPaymentMethodValue() {\n var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName');\n // if currently selected paymentMethod contains a brand it will be part of the label ID\n var paymentMethodlabelId = \"#lb_\".concat(store.selectedMethod);\n if (adyenPaymentMethod) {\n var _document$querySelect;\n adyenPaymentMethod.value = store.brand ? store.brand : (_document$querySelect = document.querySelector(paymentMethodlabelId)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.innerHTML;\n }\n}\nfunction setOrderFormData(response) {\n if (response.orderNo) {\n document.querySelector('#merchantReference').value = response.orderNo;\n }\n if (response.orderToken) {\n document.querySelector('#orderToken').value = response.orderToken;\n }\n}\n\n/**\n * Makes an ajax call to the controller function PaymentFromComponent.\n * Used by certain payment methods like paypal\n */\nfunction paymentFromComponent(data) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestData = store.partialPaymentsOrderObj ? _objectSpread(_objectSpread({}, data), {}, {\n partialPaymentsOrder: store.partialPaymentsOrderObj\n }) : data;\n $.ajax({\n url: window.paymentFromComponentURL,\n type: 'post',\n data: {\n data: JSON.stringify(requestData),\n paymentMethod: document.querySelector('#adyenPaymentMethodName').value\n },\n success: function success(response) {\n var _response$fullRespons;\n setOrderFormData(response);\n if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) {\n component.handleAction(response.fullResponse.action);\n } else if (response.isApplePay) {\n document.querySelector('#result').value = JSON.stringify(response);\n document.querySelector('#showConfirmationForm').submit();\n } else if (response.paymentError || response.error) {\n component.handleError();\n }\n }\n });\n}\nfunction resetPaymentMethod() {\n $('#requiredBrandCode').hide();\n $('#selectedIssuer').val('');\n $('#adyenIssuerName').val('');\n $('#dateOfBirth').val('');\n $('#telephoneNumber').val('');\n $('#gender').val('');\n $('#bankAccountOwnerName').val('');\n $('#bankAccountNumber').val('');\n $('#bankLocationId').val('');\n $('.additionalFields').hide();\n}\n\n/**\n * Changes the \"display\" attribute of the selected method from hidden to visible\n */\nfunction displaySelectedMethod(type) {\n var _document$querySelect2;\n // If 'type' input field is present use this as type, otherwise default to function input param\n store.selectedMethod = document.querySelector(\"#component_\".concat(type, \" .type\")) ? document.querySelector(\"#component_\".concat(type, \" .type\")).value : type;\n resetPaymentMethod();\n var disabledSubmitButtonMethods = ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay'];\n if (window.klarnaWidgetEnabled) {\n disabledSubmitButtonMethods.push('klarna');\n }\n document.querySelector('button[value=\"submit-payment\"]').disabled = disabledSubmitButtonMethods.findIndex(function (pm) {\n return type.includes(pm);\n }) > -1;\n document.querySelector(\"#component_\".concat(type)).setAttribute('style', 'display:block');\n // set brand for giftcards if hidden inputfield is present\n store.brand = (_document$querySelect2 = document.querySelector(\"#component_\".concat(type, \" .brand\"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value;\n}\nfunction displayValidationErrors() {\n store.selectedPayment.node.showValidation();\n return false;\n}\nvar selectedMethods = {};\nfunction doCustomValidation() {\n return store.selectedMethod in selectedMethods ? selectedMethods[store.selectedMethod]() : true;\n}\nfunction showValidation() {\n return store.selectedPaymentIsValid ? doCustomValidation() : displayValidationErrors();\n}\nfunction getInstallmentValues(maxValue) {\n var values = [];\n for (var i = 1; i <= maxValue; i += 1) {\n values.push(i);\n }\n return values;\n}\nfunction createShowConfirmationForm(action) {\n if (document.querySelector('#showConfirmationForm')) {\n return;\n }\n var template = document.createElement('template');\n var form = \"
\\n \\n \\n \\n \\n
\");\n template.innerHTML = form;\n document.querySelector('body').appendChild(template.content);\n}\nmodule.exports = {\n setOrderFormData: setOrderFormData,\n assignPaymentMethodValue: assignPaymentMethodValue,\n paymentFromComponent: paymentFromComponent,\n resetPaymentMethod: resetPaymentMethod,\n displaySelectedMethod: displaySelectedMethod,\n showValidation: showValidation,\n createShowConfirmationForm: createShowConfirmationForm,\n getInstallmentValues: getInstallmentValues\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js?"); +eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nfunction assignPaymentMethodValue() {\n var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName');\n // if currently selected paymentMethod contains a brand it will be part of the label ID\n var paymentMethodlabelId = \"#lb_\".concat(store.selectedMethod);\n if (adyenPaymentMethod) {\n var _document$querySelect;\n adyenPaymentMethod.value = store.brand ? store.brand : (_document$querySelect = document.querySelector(paymentMethodlabelId)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.innerHTML;\n }\n}\nfunction setOrderFormData(response) {\n if (response.orderNo) {\n document.querySelector('#merchantReference').value = response.orderNo;\n }\n if (response.orderToken) {\n document.querySelector('#orderToken').value = response.orderToken;\n }\n}\n\n/**\n * Makes an ajax call to the controller function PaymentFromComponent.\n * Used by certain payment methods like paypal\n */\nfunction paymentFromComponent(data) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestData = store.partialPaymentsOrderObj ? _objectSpread(_objectSpread({}, data), {}, {\n partialPaymentsOrder: store.partialPaymentsOrderObj\n }) : data;\n $.ajax({\n url: window.paymentFromComponentURL,\n type: 'post',\n data: {\n data: JSON.stringify(requestData),\n paymentMethod: document.querySelector('#adyenPaymentMethodName').value\n },\n success: function success(response) {\n var _response$fullRespons;\n setOrderFormData(response);\n if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) {\n component.handleAction(response.fullResponse.action);\n } else if (response.skipSummaryPage) {\n document.querySelector('#result').value = JSON.stringify(response);\n document.querySelector('#showConfirmationForm').submit();\n } else if (response.paymentError || response.error) {\n component.handleError();\n }\n }\n });\n}\nfunction resetPaymentMethod() {\n $('#requiredBrandCode').hide();\n $('#selectedIssuer').val('');\n $('#adyenIssuerName').val('');\n $('#dateOfBirth').val('');\n $('#telephoneNumber').val('');\n $('#gender').val('');\n $('#bankAccountOwnerName').val('');\n $('#bankAccountNumber').val('');\n $('#bankLocationId').val('');\n $('.additionalFields').hide();\n}\n\n/**\n * Changes the \"display\" attribute of the selected method from hidden to visible\n */\nfunction displaySelectedMethod(type) {\n var _document$querySelect2;\n // If 'type' input field is present use this as type, otherwise default to function input param\n store.selectedMethod = document.querySelector(\"#component_\".concat(type, \" .type\")) ? document.querySelector(\"#component_\".concat(type, \" .type\")).value : type;\n resetPaymentMethod();\n var disabledSubmitButtonMethods = constants.DISABLED_SUBMIT_BUTTON_METHODS;\n if (window.klarnaWidgetEnabled) {\n disabledSubmitButtonMethods.push('klarna');\n }\n document.querySelector('button[value=\"submit-payment\"]').disabled = disabledSubmitButtonMethods.findIndex(function (pm) {\n return type.includes(pm);\n }) > -1;\n document.querySelector(\"#component_\".concat(type)).setAttribute('style', 'display:block');\n // set brand for giftcards if hidden inputfield is present\n store.brand = (_document$querySelect2 = document.querySelector(\"#component_\".concat(type, \" .brand\"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value;\n}\nfunction displayValidationErrors() {\n store.selectedPayment.node.showValidation();\n return false;\n}\nvar selectedMethods = {};\nfunction doCustomValidation() {\n return store.selectedMethod in selectedMethods ? selectedMethods[store.selectedMethod]() : true;\n}\nfunction showValidation() {\n return store.selectedPaymentIsValid ? doCustomValidation() : displayValidationErrors();\n}\nfunction getInstallmentValues(maxValue) {\n var values = [];\n for (var i = 1; i <= maxValue; i += 1) {\n values.push(i);\n }\n return values;\n}\nfunction createShowConfirmationForm(action) {\n if (document.querySelector('#showConfirmationForm')) {\n return;\n }\n var template = document.createElement('template');\n var form = \"
\\n \\n \\n \\n \\n
\");\n template.innerHTML = form;\n document.querySelector('body').appendChild(template.content);\n}\nmodule.exports = {\n setOrderFormData: setOrderFormData,\n assignPaymentMethodValue: assignPaymentMethodValue,\n paymentFromComponent: paymentFromComponent,\n resetPaymentMethod: resetPaymentMethod,\n displaySelectedMethod: displaySelectedMethod,\n showValidation: showValidation,\n createShowConfirmationForm: createShowConfirmationForm,\n getInstallmentValues: getInstallmentValues\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js?"); /***/ }), @@ -110,6 +110,18 @@ eval("\n\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runti /***/ }), +/***/ "./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js": +/*!****************************************************************************!*\ + !*** ./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n DISABLED_SUBMIT_BUTTON_METHODS: ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay', 'cashapp'],\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); + +/***/ }), + /***/ "./cartridges/int_adyen_SFRA/cartridge/store/index.js": /*!************************************************************!*\ !*** ./cartridges/int_adyen_SFRA/cartridge/store/index.js ***! diff --git a/cartridges/int_adyen_SFRA/cartridge/static/default/js/applePayExpress.js b/cartridges/int_adyen_SFRA/cartridge/static/default/js/applePayExpress.js index 7375a637e..7447fd87e 100644 --- a/cartridges/int_adyen_SFRA/cartridge/static/default/js/applePayExpress.js +++ b/cartridges/int_adyen_SFRA/cartridge/static/default/js/applePayExpress.js @@ -94,7 +94,7 @@ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nfunction assignPaymentMethodValue() {\n var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName');\n // if currently selected paymentMethod contains a brand it will be part of the label ID\n var paymentMethodlabelId = \"#lb_\".concat(store.selectedMethod);\n if (adyenPaymentMethod) {\n var _document$querySelect;\n adyenPaymentMethod.value = store.brand ? store.brand : (_document$querySelect = document.querySelector(paymentMethodlabelId)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.innerHTML;\n }\n}\nfunction setOrderFormData(response) {\n if (response.orderNo) {\n document.querySelector('#merchantReference').value = response.orderNo;\n }\n if (response.orderToken) {\n document.querySelector('#orderToken').value = response.orderToken;\n }\n}\n\n/**\n * Makes an ajax call to the controller function PaymentFromComponent.\n * Used by certain payment methods like paypal\n */\nfunction paymentFromComponent(data) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestData = store.partialPaymentsOrderObj ? _objectSpread(_objectSpread({}, data), {}, {\n partialPaymentsOrder: store.partialPaymentsOrderObj\n }) : data;\n $.ajax({\n url: window.paymentFromComponentURL,\n type: 'post',\n data: {\n data: JSON.stringify(requestData),\n paymentMethod: document.querySelector('#adyenPaymentMethodName').value\n },\n success: function success(response) {\n var _response$fullRespons;\n setOrderFormData(response);\n if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) {\n component.handleAction(response.fullResponse.action);\n } else if (response.isApplePay) {\n document.querySelector('#result').value = JSON.stringify(response);\n document.querySelector('#showConfirmationForm').submit();\n } else if (response.paymentError || response.error) {\n component.handleError();\n }\n }\n });\n}\nfunction resetPaymentMethod() {\n $('#requiredBrandCode').hide();\n $('#selectedIssuer').val('');\n $('#adyenIssuerName').val('');\n $('#dateOfBirth').val('');\n $('#telephoneNumber').val('');\n $('#gender').val('');\n $('#bankAccountOwnerName').val('');\n $('#bankAccountNumber').val('');\n $('#bankLocationId').val('');\n $('.additionalFields').hide();\n}\n\n/**\n * Changes the \"display\" attribute of the selected method from hidden to visible\n */\nfunction displaySelectedMethod(type) {\n var _document$querySelect2;\n // If 'type' input field is present use this as type, otherwise default to function input param\n store.selectedMethod = document.querySelector(\"#component_\".concat(type, \" .type\")) ? document.querySelector(\"#component_\".concat(type, \" .type\")).value : type;\n resetPaymentMethod();\n var disabledSubmitButtonMethods = ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay'];\n if (window.klarnaWidgetEnabled) {\n disabledSubmitButtonMethods.push('klarna');\n }\n document.querySelector('button[value=\"submit-payment\"]').disabled = disabledSubmitButtonMethods.findIndex(function (pm) {\n return type.includes(pm);\n }) > -1;\n document.querySelector(\"#component_\".concat(type)).setAttribute('style', 'display:block');\n // set brand for giftcards if hidden inputfield is present\n store.brand = (_document$querySelect2 = document.querySelector(\"#component_\".concat(type, \" .brand\"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value;\n}\nfunction displayValidationErrors() {\n store.selectedPayment.node.showValidation();\n return false;\n}\nvar selectedMethods = {};\nfunction doCustomValidation() {\n return store.selectedMethod in selectedMethods ? selectedMethods[store.selectedMethod]() : true;\n}\nfunction showValidation() {\n return store.selectedPaymentIsValid ? doCustomValidation() : displayValidationErrors();\n}\nfunction getInstallmentValues(maxValue) {\n var values = [];\n for (var i = 1; i <= maxValue; i += 1) {\n values.push(i);\n }\n return values;\n}\nfunction createShowConfirmationForm(action) {\n if (document.querySelector('#showConfirmationForm')) {\n return;\n }\n var template = document.createElement('template');\n var form = \"
\\n \\n \\n \\n \\n
\");\n template.innerHTML = form;\n document.querySelector('body').appendChild(template.content);\n}\nmodule.exports = {\n setOrderFormData: setOrderFormData,\n assignPaymentMethodValue: assignPaymentMethodValue,\n paymentFromComponent: paymentFromComponent,\n resetPaymentMethod: resetPaymentMethod,\n displaySelectedMethod: displaySelectedMethod,\n showValidation: showValidation,\n createShowConfirmationForm: createShowConfirmationForm,\n getInstallmentValues: getInstallmentValues\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js?"); +eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nfunction assignPaymentMethodValue() {\n var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName');\n // if currently selected paymentMethod contains a brand it will be part of the label ID\n var paymentMethodlabelId = \"#lb_\".concat(store.selectedMethod);\n if (adyenPaymentMethod) {\n var _document$querySelect;\n adyenPaymentMethod.value = store.brand ? store.brand : (_document$querySelect = document.querySelector(paymentMethodlabelId)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.innerHTML;\n }\n}\nfunction setOrderFormData(response) {\n if (response.orderNo) {\n document.querySelector('#merchantReference').value = response.orderNo;\n }\n if (response.orderToken) {\n document.querySelector('#orderToken').value = response.orderToken;\n }\n}\n\n/**\n * Makes an ajax call to the controller function PaymentFromComponent.\n * Used by certain payment methods like paypal\n */\nfunction paymentFromComponent(data) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestData = store.partialPaymentsOrderObj ? _objectSpread(_objectSpread({}, data), {}, {\n partialPaymentsOrder: store.partialPaymentsOrderObj\n }) : data;\n $.ajax({\n url: window.paymentFromComponentURL,\n type: 'post',\n data: {\n data: JSON.stringify(requestData),\n paymentMethod: document.querySelector('#adyenPaymentMethodName').value\n },\n success: function success(response) {\n var _response$fullRespons;\n setOrderFormData(response);\n if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) {\n component.handleAction(response.fullResponse.action);\n } else if (response.skipSummaryPage) {\n document.querySelector('#result').value = JSON.stringify(response);\n document.querySelector('#showConfirmationForm').submit();\n } else if (response.paymentError || response.error) {\n component.handleError();\n }\n }\n });\n}\nfunction resetPaymentMethod() {\n $('#requiredBrandCode').hide();\n $('#selectedIssuer').val('');\n $('#adyenIssuerName').val('');\n $('#dateOfBirth').val('');\n $('#telephoneNumber').val('');\n $('#gender').val('');\n $('#bankAccountOwnerName').val('');\n $('#bankAccountNumber').val('');\n $('#bankLocationId').val('');\n $('.additionalFields').hide();\n}\n\n/**\n * Changes the \"display\" attribute of the selected method from hidden to visible\n */\nfunction displaySelectedMethod(type) {\n var _document$querySelect2;\n // If 'type' input field is present use this as type, otherwise default to function input param\n store.selectedMethod = document.querySelector(\"#component_\".concat(type, \" .type\")) ? document.querySelector(\"#component_\".concat(type, \" .type\")).value : type;\n resetPaymentMethod();\n var disabledSubmitButtonMethods = constants.DISABLED_SUBMIT_BUTTON_METHODS;\n if (window.klarnaWidgetEnabled) {\n disabledSubmitButtonMethods.push('klarna');\n }\n document.querySelector('button[value=\"submit-payment\"]').disabled = disabledSubmitButtonMethods.findIndex(function (pm) {\n return type.includes(pm);\n }) > -1;\n document.querySelector(\"#component_\".concat(type)).setAttribute('style', 'display:block');\n // set brand for giftcards if hidden inputfield is present\n store.brand = (_document$querySelect2 = document.querySelector(\"#component_\".concat(type, \" .brand\"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value;\n}\nfunction displayValidationErrors() {\n store.selectedPayment.node.showValidation();\n return false;\n}\nvar selectedMethods = {};\nfunction doCustomValidation() {\n return store.selectedMethod in selectedMethods ? selectedMethods[store.selectedMethod]() : true;\n}\nfunction showValidation() {\n return store.selectedPaymentIsValid ? doCustomValidation() : displayValidationErrors();\n}\nfunction getInstallmentValues(maxValue) {\n var values = [];\n for (var i = 1; i <= maxValue; i += 1) {\n values.push(i);\n }\n return values;\n}\nfunction createShowConfirmationForm(action) {\n if (document.querySelector('#showConfirmationForm')) {\n return;\n }\n var template = document.createElement('template');\n var form = \"
\\n \\n \\n \\n \\n
\");\n template.innerHTML = form;\n document.querySelector('body').appendChild(template.content);\n}\nmodule.exports = {\n setOrderFormData: setOrderFormData,\n assignPaymentMethodValue: assignPaymentMethodValue,\n paymentFromComponent: paymentFromComponent,\n resetPaymentMethod: resetPaymentMethod,\n displaySelectedMethod: displaySelectedMethod,\n showValidation: showValidation,\n createShowConfirmationForm: createShowConfirmationForm,\n getInstallmentValues: getInstallmentValues\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js?"); /***/ }), @@ -130,7 +130,7 @@ eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); +eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n DISABLED_SUBMIT_BUTTON_METHODS: ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay', 'cashapp'],\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); /***/ }), diff --git a/cartridges/int_adyen_SFRA/cartridge/static/default/js/checkout.js b/cartridges/int_adyen_SFRA/cartridge/static/default/js/checkout.js index 79c935539..f35686395 100644 --- a/cartridges/int_adyen_SFRA/cartridge/static/default/js/checkout.js +++ b/cartridges/int_adyen_SFRA/cartridge/static/default/js/checkout.js @@ -250,7 +250,7 @@ eval("\n\nvar store = __webpack_require__(/*! ../../../store */ \"./cartridges/i /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nvar _require = __webpack_require__(/*! ./makePartialPayment */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js\"),\n makePartialPayment = _require.makePartialPayment;\nvar _require2 = __webpack_require__(/*! ../commons */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js\"),\n onBrand = _require2.onBrand,\n onFieldValid = _require2.onFieldValid;\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require3 = __webpack_require__(/*! ./renderGiftcardComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js\"),\n createElementsToShowRemainingGiftCardAmount = _require3.createElementsToShowRemainingGiftCardAmount,\n renderAddedGiftCard = _require3.renderAddedGiftCard,\n getGiftCardElements = _require3.getGiftCardElements,\n showGiftCardInfoMessage = _require3.showGiftCardInfoMessage,\n showGiftCardCancelButton = _require3.showGiftCardCancelButton,\n attachGiftCardCancelListener = _require3.attachGiftCardCancelListener;\nfunction getCardConfig() {\n return {\n enableStoreDetails: window.showStoreDetails,\n showBrandsUnderCardNumber: false,\n clickToPayConfiguration: {\n shopperEmail: window.customerEmail,\n merchantDisplayName: window.merchantAccount\n },\n onChange: function onChange(state) {\n store.isValid = state.isValid;\n var method = state.data.paymentMethod.storedPaymentMethodId ? \"storedCard\".concat(state.data.paymentMethod.storedPaymentMethodId) : store.selectedMethod;\n store.updateSelectedPayment(method, 'isValid', store.isValid);\n store.updateSelectedPayment(method, 'stateData', state.data);\n },\n onSubmit: function onSubmit() {\n helpers.assignPaymentMethodValue();\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n },\n onFieldValid: onFieldValid,\n onBrand: onBrand\n };\n}\nfunction getPaypalConfig() {\n store.paypalTerminatedEarly = false;\n return {\n showPayButton: true,\n environment: window.Configuration.environment,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n document.querySelector('#adyenStateData').value = JSON.stringify(store.selectedPayment.stateData);\n helpers.paymentFromComponent(state.data, component);\n },\n onCancel: function onCancel(data, component) {\n store.paypalTerminatedEarly = false;\n helpers.paymentFromComponent({\n cancelTransaction: true,\n merchantReference: document.querySelector('#merchantReference').value,\n orderToken: document.querySelector('#orderToken').value\n }, component);\n },\n onError: function onError(error, component) {\n store.paypalTerminatedEarly = false;\n if (component) {\n component.setStatus('ready');\n }\n document.querySelector('#showConfirmationForm').submit();\n },\n onAdditionalDetails: function onAdditionalDetails(state) {\n store.paypalTerminatedEarly = false;\n document.querySelector('#additionalDetailsHidden').value = JSON.stringify(state.data);\n document.querySelector('#showConfirmationForm').submit();\n },\n onClick: function onClick(data, actions) {\n $('#dwfrm_billing').trigger('submit');\n if (store.formErrorsExist) {\n return actions.reject();\n }\n if (store.paypalTerminatedEarly) {\n helpers.paymentFromComponent({\n cancelTransaction: true,\n merchantReference: document.querySelector('#merchantReference').value\n });\n store.paypalTerminatedEarly = false;\n return actions.resolve();\n }\n store.paypalTerminatedEarly = true;\n return null;\n }\n };\n}\nfunction getGooglePayConfig() {\n return {\n environment: window.Configuration.environment,\n onSubmit: function onSubmit() {\n helpers.assignPaymentMethodValue();\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n },\n configuration: {\n gatewayMerchantId: window.merchantAccount\n },\n showPayButton: true,\n buttonColor: 'white'\n };\n}\nfunction handlePartialPaymentSuccess() {\n var _store$addedGiftCards;\n var _getGiftCardElements = getGiftCardElements(),\n giftCardSelectContainer = _getGiftCardElements.giftCardSelectContainer,\n giftCardSelect = _getGiftCardElements.giftCardSelect,\n giftCardsList = _getGiftCardElements.giftCardsList,\n cancelMainPaymentGiftCard = _getGiftCardElements.cancelMainPaymentGiftCard,\n giftCardAddButton = _getGiftCardElements.giftCardAddButton;\n giftCardSelectContainer.classList.add('invisible');\n giftCardSelect.value = null;\n giftCardsList.innerHTML = '';\n cancelMainPaymentGiftCard.addEventListener('click', function () {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n cancelMainPaymentGiftCard.classList.add('invisible');\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = 'null';\n });\n if (store.componentsObj.giftcard) {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n }\n store.addedGiftCards.forEach(function (card) {\n renderAddedGiftCard(card);\n });\n if ((_store$addedGiftCards = store.addedGiftCards) !== null && _store$addedGiftCards !== void 0 && _store$addedGiftCards.length) {\n showGiftCardInfoMessage();\n }\n showGiftCardCancelButton(true);\n attachGiftCardCancelListener();\n createElementsToShowRemainingGiftCardAmount();\n}\nfunction getGiftCardConfig() {\n var giftcardBalance;\n return {\n showPayButton: true,\n onChange: function onChange(state) {\n store.updateSelectedPayment(constants.GIFTCARD, 'isValid', state.isValid);\n store.updateSelectedPayment(constants.GIFTCARD, 'stateData', state.data);\n },\n onBalanceCheck: function onBalanceCheck(resolve, reject, requestData) {\n $.ajax({\n type: 'POST',\n url: window.checkBalanceUrl,\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n giftcardBalance = data.balance;\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n if (data.resultCode === constants.SUCCESS) {\n var _getGiftCardElements2 = getGiftCardElements(),\n giftCardsInfoMessageContainer = _getGiftCardElements2.giftCardsInfoMessageContainer,\n giftCardSelect = _getGiftCardElements2.giftCardSelect,\n cancelMainPaymentGiftCard = _getGiftCardElements2.cancelMainPaymentGiftCard,\n giftCardAddButton = _getGiftCardElements2.giftCardAddButton,\n giftCardSelectWrapper = _getGiftCardElements2.giftCardSelectWrapper;\n if (giftCardSelectWrapper) {\n giftCardSelectWrapper.classList.add('invisible');\n }\n var initialPartialObject = _objectSpread({}, store.partialPaymentsOrderObj);\n cancelMainPaymentGiftCard.classList.remove('invisible');\n cancelMainPaymentGiftCard.addEventListener('click', function () {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n cancelMainPaymentGiftCard.classList.add('invisible');\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = 'null';\n store.partialPaymentsOrderObj.remainingAmountFormatted = initialPartialObject.remainingAmountFormatted;\n store.partialPaymentsOrderObj.totalDiscountedAmount = initialPartialObject.totalDiscountedAmount;\n });\n document.querySelector('button[value=\"submit-payment\"]').disabled = true;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n store.partialPaymentsOrderObj.remainingAmountFormatted = data.remainingAmountFormatted;\n store.partialPaymentsOrderObj.totalDiscountedAmount = data.totalAmountFormatted;\n resolve(data);\n } else if (data.resultCode === constants.NOTENOUGHBALANCE) {\n resolve(data);\n } else {\n reject();\n }\n },\n fail: function fail() {\n reject();\n }\n });\n },\n onOrderRequest: function onOrderRequest(resolve, reject, requestData) {\n // Make a POST /orders request\n // Create an order for the total transaction amount\n var giftCardData = requestData.paymentMethod;\n $.ajax({\n type: 'POST',\n url: window.partialPaymentsOrderUrl,\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n if (data.resultCode === 'Success') {\n // make payments call including giftcard data and order data\n var brandSelect = document.getElementById('giftCardSelect');\n var selectedBrandIndex = brandSelect.selectedIndex;\n var giftcardBrand = brandSelect.options[selectedBrandIndex].text;\n var partialPaymentRequest = {\n paymentMethod: giftCardData,\n amount: giftcardBalance,\n partialPaymentsOrder: {\n pspReference: data.pspReference,\n orderData: data.orderData\n },\n giftcardBrand: giftcardBrand\n };\n var partialPaymentResponse = makePartialPayment(partialPaymentRequest);\n if (partialPaymentResponse !== null && partialPaymentResponse !== void 0 && partialPaymentResponse.error) {\n reject();\n } else {\n handlePartialPaymentSuccess();\n }\n }\n }\n });\n },\n onSubmit: function onSubmit(state, component) {\n store.selectedMethod = state.data.paymentMethod.type;\n store.brand = component === null || component === void 0 ? void 0 : component.displayName;\n document.querySelector('input[name=\"brandCode\"]').checked = false;\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n }\n };\n}\nfunction handleOnChange(state) {\n store.isValid = state.isValid;\n if (!store.componentsObj[store.selectedMethod]) {\n store.componentsObj[store.selectedMethod] = {};\n }\n store.componentsObj[store.selectedMethod].isValid = store.isValid;\n store.componentsObj[store.selectedMethod].stateData = state.data;\n}\nvar actionHandler = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(action) {\n var checkout;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return AdyenCheckout(store.checkoutConfiguration);\n case 2:\n checkout = _context.sent;\n checkout.createFromAction(action).mount('#action-container');\n $('#action-modal').modal({\n backdrop: 'static',\n keyboard: false\n });\n if (action.type === constants.ACTIONTYPE.QRCODE) {\n document.getElementById('cancelQrMethodsButton').classList.remove('invisible');\n }\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function actionHandler(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nfunction handleOnAdditionalDetails(state) {\n $.ajax({\n type: 'POST',\n url: window.paymentsDetailsURL,\n data: JSON.stringify({\n data: state.data,\n orderToken: window.orderToken\n }),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n if (!data.isFinal && _typeof(data.action) === 'object') {\n actionHandler(data.action);\n } else {\n window.location.href = data.redirectUrl;\n }\n }\n });\n}\nfunction getAmazonpayConfig() {\n return {\n showPayButton: true,\n productType: 'PayAndShip',\n checkoutMode: 'ProcessOrder',\n locale: window.Configuration.locale,\n returnUrl: window.returnURL,\n onClick: function onClick(resolve, reject) {\n $('#dwfrm_billing').trigger('submit');\n if (store.formErrorsExist) {\n reject();\n } else {\n helpers.assignPaymentMethodValue();\n resolve();\n }\n },\n onError: function onError() {}\n };\n}\nfunction getApplePayConfig() {\n return {\n showPayButton: true,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n }\n };\n}\nfunction getKlarnaConfig() {\n var _window = window,\n klarnaWidgetEnabled = _window.klarnaWidgetEnabled;\n if (klarnaWidgetEnabled) {\n return {\n showPayButton: true,\n useKlarnaWidget: true,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n },\n onAdditionalDetails: function onAdditionalDetails(state) {\n document.querySelector('#additionalDetailsHidden').value = JSON.stringify(state.data);\n document.querySelector('#showConfirmationForm').submit();\n }\n };\n }\n return null;\n}\nfunction setCheckoutConfiguration() {\n store.checkoutConfiguration.onChange = handleOnChange;\n store.checkoutConfiguration.onAdditionalDetails = handleOnAdditionalDetails;\n store.checkoutConfiguration.showPayButton = false;\n store.checkoutConfiguration.clientKey = window.adyenClientKey;\n store.checkoutConfiguration.paymentMethodsConfiguration = {\n card: getCardConfig(),\n bcmc: getCardConfig(),\n storedCard: getCardConfig(),\n boletobancario: {\n personalDetailsRequired: true,\n // turn personalDetails section on/off\n billingAddressRequired: false,\n // turn billingAddress section on/off\n showEmailAddress: false // allow shopper to specify their email address\n },\n\n paywithgoogle: getGooglePayConfig(),\n googlepay: getGooglePayConfig(),\n paypal: getPaypalConfig(),\n amazonpay: getAmazonpayConfig(),\n giftcard: getGiftCardConfig(),\n applepay: getApplePayConfig(),\n klarna: getKlarnaConfig(),\n klarna_account: getKlarnaConfig(),\n klarna_paynow: getKlarnaConfig()\n };\n}\nmodule.exports = {\n getCardConfig: getCardConfig,\n getPaypalConfig: getPaypalConfig,\n getGooglePayConfig: getGooglePayConfig,\n getAmazonpayConfig: getAmazonpayConfig,\n setCheckoutConfiguration: setCheckoutConfiguration,\n actionHandler: actionHandler\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js?"); +eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nvar _require = __webpack_require__(/*! ./makePartialPayment */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js\"),\n makePartialPayment = _require.makePartialPayment;\nvar _require2 = __webpack_require__(/*! ../commons */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js\"),\n onBrand = _require2.onBrand,\n onFieldValid = _require2.onFieldValid;\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require3 = __webpack_require__(/*! ./renderGiftcardComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js\"),\n createElementsToShowRemainingGiftCardAmount = _require3.createElementsToShowRemainingGiftCardAmount,\n renderAddedGiftCard = _require3.renderAddedGiftCard,\n getGiftCardElements = _require3.getGiftCardElements,\n showGiftCardInfoMessage = _require3.showGiftCardInfoMessage,\n showGiftCardCancelButton = _require3.showGiftCardCancelButton,\n attachGiftCardCancelListener = _require3.attachGiftCardCancelListener;\nfunction getCardConfig() {\n return {\n enableStoreDetails: window.showStoreDetails,\n showBrandsUnderCardNumber: false,\n clickToPayConfiguration: {\n shopperEmail: window.customerEmail,\n merchantDisplayName: window.merchantAccount\n },\n onChange: function onChange(state) {\n store.isValid = state.isValid;\n var method = state.data.paymentMethod.storedPaymentMethodId ? \"storedCard\".concat(state.data.paymentMethod.storedPaymentMethodId) : store.selectedMethod;\n store.updateSelectedPayment(method, 'isValid', store.isValid);\n store.updateSelectedPayment(method, 'stateData', state.data);\n },\n onSubmit: function onSubmit() {\n helpers.assignPaymentMethodValue();\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n },\n onFieldValid: onFieldValid,\n onBrand: onBrand\n };\n}\nfunction getPaypalConfig() {\n store.paypalTerminatedEarly = false;\n return {\n showPayButton: true,\n environment: window.Configuration.environment,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n document.querySelector('#adyenStateData').value = JSON.stringify(store.selectedPayment.stateData);\n helpers.paymentFromComponent(state.data, component);\n },\n onCancel: function onCancel(data, component) {\n store.paypalTerminatedEarly = false;\n helpers.paymentFromComponent({\n cancelTransaction: true,\n merchantReference: document.querySelector('#merchantReference').value,\n orderToken: document.querySelector('#orderToken').value\n }, component);\n },\n onError: function onError(error, component) {\n store.paypalTerminatedEarly = false;\n if (component) {\n component.setStatus('ready');\n }\n document.querySelector('#showConfirmationForm').submit();\n },\n onAdditionalDetails: function onAdditionalDetails(state) {\n store.paypalTerminatedEarly = false;\n document.querySelector('#additionalDetailsHidden').value = JSON.stringify(state.data);\n document.querySelector('#showConfirmationForm').submit();\n },\n onClick: function onClick(data, actions) {\n $('#dwfrm_billing').trigger('submit');\n if (store.formErrorsExist) {\n return actions.reject();\n }\n if (store.paypalTerminatedEarly) {\n helpers.paymentFromComponent({\n cancelTransaction: true,\n merchantReference: document.querySelector('#merchantReference').value\n });\n store.paypalTerminatedEarly = false;\n return actions.resolve();\n }\n store.paypalTerminatedEarly = true;\n return null;\n }\n };\n}\nfunction getGooglePayConfig() {\n return {\n environment: window.Configuration.environment,\n onSubmit: function onSubmit() {\n helpers.assignPaymentMethodValue();\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n },\n configuration: {\n gatewayMerchantId: window.merchantAccount\n },\n showPayButton: true,\n buttonColor: 'white'\n };\n}\nfunction handlePartialPaymentSuccess() {\n var _store$addedGiftCards;\n var _getGiftCardElements = getGiftCardElements(),\n giftCardSelectContainer = _getGiftCardElements.giftCardSelectContainer,\n giftCardSelect = _getGiftCardElements.giftCardSelect,\n giftCardsList = _getGiftCardElements.giftCardsList,\n cancelMainPaymentGiftCard = _getGiftCardElements.cancelMainPaymentGiftCard,\n giftCardAddButton = _getGiftCardElements.giftCardAddButton;\n giftCardSelectContainer.classList.add('invisible');\n giftCardSelect.value = null;\n giftCardsList.innerHTML = '';\n cancelMainPaymentGiftCard.addEventListener('click', function () {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n cancelMainPaymentGiftCard.classList.add('invisible');\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = 'null';\n });\n if (store.componentsObj.giftcard) {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n }\n store.addedGiftCards.forEach(function (card) {\n renderAddedGiftCard(card);\n });\n if ((_store$addedGiftCards = store.addedGiftCards) !== null && _store$addedGiftCards !== void 0 && _store$addedGiftCards.length) {\n showGiftCardInfoMessage();\n }\n showGiftCardCancelButton(true);\n attachGiftCardCancelListener();\n createElementsToShowRemainingGiftCardAmount();\n}\nfunction makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject) {\n var brandSelect = document.getElementById('giftCardSelect');\n var selectedBrandIndex = brandSelect.selectedIndex;\n var giftcardBrand = brandSelect.options[selectedBrandIndex].text;\n var partialPaymentRequest = {\n paymentMethod: giftCardData,\n amount: giftcardBalance,\n partialPaymentsOrder: {\n pspReference: store.adyenOrderData.pspReference,\n orderData: store.adyenOrderData.orderData\n },\n giftcardBrand: giftcardBrand\n };\n var partialPaymentResponse = makePartialPayment(partialPaymentRequest);\n if (partialPaymentResponse !== null && partialPaymentResponse !== void 0 && partialPaymentResponse.error) {\n reject();\n } else {\n handlePartialPaymentSuccess();\n }\n}\nfunction getGiftCardConfig() {\n var giftcardBalance;\n return {\n showPayButton: true,\n onChange: function onChange(state) {\n store.updateSelectedPayment(constants.GIFTCARD, 'isValid', state.isValid);\n store.updateSelectedPayment(constants.GIFTCARD, 'stateData', state.data);\n },\n onBalanceCheck: function onBalanceCheck(resolve, reject, requestData) {\n $.ajax({\n type: 'POST',\n url: window.checkBalanceUrl,\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n giftcardBalance = data.balance;\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n if (data.resultCode === constants.SUCCESS) {\n var _getGiftCardElements2 = getGiftCardElements(),\n giftCardsInfoMessageContainer = _getGiftCardElements2.giftCardsInfoMessageContainer,\n giftCardSelect = _getGiftCardElements2.giftCardSelect,\n cancelMainPaymentGiftCard = _getGiftCardElements2.cancelMainPaymentGiftCard,\n giftCardAddButton = _getGiftCardElements2.giftCardAddButton,\n giftCardSelectWrapper = _getGiftCardElements2.giftCardSelectWrapper;\n if (giftCardSelectWrapper) {\n giftCardSelectWrapper.classList.add('invisible');\n }\n var initialPartialObject = _objectSpread({}, store.partialPaymentsOrderObj);\n cancelMainPaymentGiftCard.classList.remove('invisible');\n cancelMainPaymentGiftCard.addEventListener('click', function () {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n cancelMainPaymentGiftCard.classList.add('invisible');\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = 'null';\n store.partialPaymentsOrderObj.remainingAmountFormatted = initialPartialObject.remainingAmountFormatted;\n store.partialPaymentsOrderObj.totalDiscountedAmount = initialPartialObject.totalDiscountedAmount;\n });\n document.querySelector('button[value=\"submit-payment\"]').disabled = true;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n store.partialPaymentsOrderObj.remainingAmountFormatted = data.remainingAmountFormatted;\n store.partialPaymentsOrderObj.totalDiscountedAmount = data.totalAmountFormatted;\n resolve(data);\n } else if (data.resultCode === constants.NOTENOUGHBALANCE) {\n resolve(data);\n } else {\n reject();\n }\n },\n fail: function fail() {\n reject();\n }\n });\n },\n onOrderRequest: function onOrderRequest(resolve, reject, requestData) {\n // Make a POST /orders request\n // Create an order for the total transaction amount\n var giftCardData = requestData.paymentMethod;\n if (store.adyenOrderData) {\n makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject);\n } else {\n $.ajax({\n type: 'POST',\n url: window.partialPaymentsOrderUrl,\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n if (data.resultCode === 'Success') {\n store.adyenOrderData = data;\n // make payments call including giftcard data and order data\n makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject);\n }\n }\n });\n }\n },\n onSubmit: function onSubmit(state, component) {\n store.selectedMethod = state.data.paymentMethod.type;\n store.brand = component === null || component === void 0 ? void 0 : component.displayName;\n document.querySelector('input[name=\"brandCode\"]').checked = false;\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n document.querySelector('button[value=\"submit-payment\"]').click();\n }\n };\n}\nfunction handleOnChange(state) {\n store.isValid = state.isValid;\n if (!store.componentsObj[store.selectedMethod]) {\n store.componentsObj[store.selectedMethod] = {};\n }\n store.componentsObj[store.selectedMethod].isValid = store.isValid;\n store.componentsObj[store.selectedMethod].stateData = state.data;\n}\nvar actionHandler = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(action) {\n var checkout;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return AdyenCheckout(store.checkoutConfiguration);\n case 2:\n checkout = _context.sent;\n checkout.createFromAction(action).mount('#action-container');\n $('#action-modal').modal({\n backdrop: 'static',\n keyboard: false\n });\n if (action.type === constants.ACTIONTYPE.QRCODE) {\n document.getElementById('cancelQrMethodsButton').classList.remove('invisible');\n }\n case 6:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function actionHandler(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nfunction handleOnAdditionalDetails(state) {\n $.ajax({\n type: 'POST',\n url: window.paymentsDetailsURL,\n data: JSON.stringify({\n data: state.data,\n orderToken: window.orderToken\n }),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(data) {\n if (!data.isFinal && _typeof(data.action) === 'object') {\n actionHandler(data.action);\n } else {\n window.location.href = data.redirectUrl;\n }\n }\n });\n}\nfunction getAmazonpayConfig() {\n return {\n showPayButton: true,\n productType: 'PayAndShip',\n checkoutMode: 'ProcessOrder',\n locale: window.Configuration.locale,\n returnUrl: window.returnURL,\n onClick: function onClick(resolve, reject) {\n $('#dwfrm_billing').trigger('submit');\n if (store.formErrorsExist) {\n reject();\n } else {\n helpers.assignPaymentMethodValue();\n resolve();\n }\n },\n onError: function onError() {}\n };\n}\nfunction getApplePayConfig() {\n return {\n showPayButton: true,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n }\n };\n}\nfunction getCashAppConfig() {\n return {\n showPayButton: true,\n onSubmit: function onSubmit(state, component) {\n $('#dwfrm_billing').trigger('submit');\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n }\n };\n}\nfunction getKlarnaConfig() {\n var _window = window,\n klarnaWidgetEnabled = _window.klarnaWidgetEnabled;\n if (klarnaWidgetEnabled) {\n return {\n showPayButton: true,\n useKlarnaWidget: true,\n onSubmit: function onSubmit(state, component) {\n helpers.assignPaymentMethodValue();\n helpers.paymentFromComponent(state.data, component);\n },\n onAdditionalDetails: function onAdditionalDetails(state) {\n document.querySelector('#additionalDetailsHidden').value = JSON.stringify(state.data);\n document.querySelector('#showConfirmationForm').submit();\n }\n };\n }\n return null;\n}\nfunction setCheckoutConfiguration() {\n store.checkoutConfiguration.onChange = handleOnChange;\n store.checkoutConfiguration.onAdditionalDetails = handleOnAdditionalDetails;\n store.checkoutConfiguration.showPayButton = false;\n store.checkoutConfiguration.clientKey = window.adyenClientKey;\n store.checkoutConfiguration.paymentMethodsConfiguration = {\n card: getCardConfig(),\n bcmc: getCardConfig(),\n storedCard: getCardConfig(),\n boletobancario: {\n personalDetailsRequired: true,\n // turn personalDetails section on/off\n billingAddressRequired: false,\n // turn billingAddress section on/off\n showEmailAddress: false // allow shopper to specify their email address\n },\n\n paywithgoogle: getGooglePayConfig(),\n googlepay: getGooglePayConfig(),\n paypal: getPaypalConfig(),\n amazonpay: getAmazonpayConfig(),\n giftcard: getGiftCardConfig(),\n applepay: getApplePayConfig(),\n klarna: getKlarnaConfig(),\n klarna_account: getKlarnaConfig(),\n klarna_paynow: getKlarnaConfig(),\n cashapp: getCashAppConfig()\n };\n}\nmodule.exports = {\n getCardConfig: getCardConfig,\n getPaypalConfig: getPaypalConfig,\n getGooglePayConfig: getGooglePayConfig,\n getAmazonpayConfig: getAmazonpayConfig,\n setCheckoutConfiguration: setCheckoutConfiguration,\n actionHandler: actionHandler\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js?"); /***/ }), @@ -262,7 +262,7 @@ eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nfunction assignPaymentMethodValue() {\n var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName');\n // if currently selected paymentMethod contains a brand it will be part of the label ID\n var paymentMethodlabelId = \"#lb_\".concat(store.selectedMethod);\n if (adyenPaymentMethod) {\n var _document$querySelect;\n adyenPaymentMethod.value = store.brand ? store.brand : (_document$querySelect = document.querySelector(paymentMethodlabelId)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.innerHTML;\n }\n}\nfunction setOrderFormData(response) {\n if (response.orderNo) {\n document.querySelector('#merchantReference').value = response.orderNo;\n }\n if (response.orderToken) {\n document.querySelector('#orderToken').value = response.orderToken;\n }\n}\n\n/**\n * Makes an ajax call to the controller function PaymentFromComponent.\n * Used by certain payment methods like paypal\n */\nfunction paymentFromComponent(data) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestData = store.partialPaymentsOrderObj ? _objectSpread(_objectSpread({}, data), {}, {\n partialPaymentsOrder: store.partialPaymentsOrderObj\n }) : data;\n $.ajax({\n url: window.paymentFromComponentURL,\n type: 'post',\n data: {\n data: JSON.stringify(requestData),\n paymentMethod: document.querySelector('#adyenPaymentMethodName').value\n },\n success: function success(response) {\n var _response$fullRespons;\n setOrderFormData(response);\n if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) {\n component.handleAction(response.fullResponse.action);\n } else if (response.isApplePay) {\n document.querySelector('#result').value = JSON.stringify(response);\n document.querySelector('#showConfirmationForm').submit();\n } else if (response.paymentError || response.error) {\n component.handleError();\n }\n }\n });\n}\nfunction resetPaymentMethod() {\n $('#requiredBrandCode').hide();\n $('#selectedIssuer').val('');\n $('#adyenIssuerName').val('');\n $('#dateOfBirth').val('');\n $('#telephoneNumber').val('');\n $('#gender').val('');\n $('#bankAccountOwnerName').val('');\n $('#bankAccountNumber').val('');\n $('#bankLocationId').val('');\n $('.additionalFields').hide();\n}\n\n/**\n * Changes the \"display\" attribute of the selected method from hidden to visible\n */\nfunction displaySelectedMethod(type) {\n var _document$querySelect2;\n // If 'type' input field is present use this as type, otherwise default to function input param\n store.selectedMethod = document.querySelector(\"#component_\".concat(type, \" .type\")) ? document.querySelector(\"#component_\".concat(type, \" .type\")).value : type;\n resetPaymentMethod();\n var disabledSubmitButtonMethods = ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay'];\n if (window.klarnaWidgetEnabled) {\n disabledSubmitButtonMethods.push('klarna');\n }\n document.querySelector('button[value=\"submit-payment\"]').disabled = disabledSubmitButtonMethods.findIndex(function (pm) {\n return type.includes(pm);\n }) > -1;\n document.querySelector(\"#component_\".concat(type)).setAttribute('style', 'display:block');\n // set brand for giftcards if hidden inputfield is present\n store.brand = (_document$querySelect2 = document.querySelector(\"#component_\".concat(type, \" .brand\"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value;\n}\nfunction displayValidationErrors() {\n store.selectedPayment.node.showValidation();\n return false;\n}\nvar selectedMethods = {};\nfunction doCustomValidation() {\n return store.selectedMethod in selectedMethods ? selectedMethods[store.selectedMethod]() : true;\n}\nfunction showValidation() {\n return store.selectedPaymentIsValid ? doCustomValidation() : displayValidationErrors();\n}\nfunction getInstallmentValues(maxValue) {\n var values = [];\n for (var i = 1; i <= maxValue; i += 1) {\n values.push(i);\n }\n return values;\n}\nfunction createShowConfirmationForm(action) {\n if (document.querySelector('#showConfirmationForm')) {\n return;\n }\n var template = document.createElement('template');\n var form = \"
\\n \\n \\n \\n \\n
\");\n template.innerHTML = form;\n document.querySelector('body').appendChild(template.content);\n}\nmodule.exports = {\n setOrderFormData: setOrderFormData,\n assignPaymentMethodValue: assignPaymentMethodValue,\n paymentFromComponent: paymentFromComponent,\n resetPaymentMethod: resetPaymentMethod,\n displaySelectedMethod: displaySelectedMethod,\n showValidation: showValidation,\n createShowConfirmationForm: createShowConfirmationForm,\n getInstallmentValues: getInstallmentValues\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js?"); +eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nfunction assignPaymentMethodValue() {\n var adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName');\n // if currently selected paymentMethod contains a brand it will be part of the label ID\n var paymentMethodlabelId = \"#lb_\".concat(store.selectedMethod);\n if (adyenPaymentMethod) {\n var _document$querySelect;\n adyenPaymentMethod.value = store.brand ? store.brand : (_document$querySelect = document.querySelector(paymentMethodlabelId)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.innerHTML;\n }\n}\nfunction setOrderFormData(response) {\n if (response.orderNo) {\n document.querySelector('#merchantReference').value = response.orderNo;\n }\n if (response.orderToken) {\n document.querySelector('#orderToken').value = response.orderToken;\n }\n}\n\n/**\n * Makes an ajax call to the controller function PaymentFromComponent.\n * Used by certain payment methods like paypal\n */\nfunction paymentFromComponent(data) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestData = store.partialPaymentsOrderObj ? _objectSpread(_objectSpread({}, data), {}, {\n partialPaymentsOrder: store.partialPaymentsOrderObj\n }) : data;\n $.ajax({\n url: window.paymentFromComponentURL,\n type: 'post',\n data: {\n data: JSON.stringify(requestData),\n paymentMethod: document.querySelector('#adyenPaymentMethodName').value\n },\n success: function success(response) {\n var _response$fullRespons;\n setOrderFormData(response);\n if ((_response$fullRespons = response.fullResponse) !== null && _response$fullRespons !== void 0 && _response$fullRespons.action) {\n component.handleAction(response.fullResponse.action);\n } else if (response.skipSummaryPage) {\n document.querySelector('#result').value = JSON.stringify(response);\n document.querySelector('#showConfirmationForm').submit();\n } else if (response.paymentError || response.error) {\n component.handleError();\n }\n }\n });\n}\nfunction resetPaymentMethod() {\n $('#requiredBrandCode').hide();\n $('#selectedIssuer').val('');\n $('#adyenIssuerName').val('');\n $('#dateOfBirth').val('');\n $('#telephoneNumber').val('');\n $('#gender').val('');\n $('#bankAccountOwnerName').val('');\n $('#bankAccountNumber').val('');\n $('#bankLocationId').val('');\n $('.additionalFields').hide();\n}\n\n/**\n * Changes the \"display\" attribute of the selected method from hidden to visible\n */\nfunction displaySelectedMethod(type) {\n var _document$querySelect2;\n // If 'type' input field is present use this as type, otherwise default to function input param\n store.selectedMethod = document.querySelector(\"#component_\".concat(type, \" .type\")) ? document.querySelector(\"#component_\".concat(type, \" .type\")).value : type;\n resetPaymentMethod();\n var disabledSubmitButtonMethods = constants.DISABLED_SUBMIT_BUTTON_METHODS;\n if (window.klarnaWidgetEnabled) {\n disabledSubmitButtonMethods.push('klarna');\n }\n document.querySelector('button[value=\"submit-payment\"]').disabled = disabledSubmitButtonMethods.findIndex(function (pm) {\n return type.includes(pm);\n }) > -1;\n document.querySelector(\"#component_\".concat(type)).setAttribute('style', 'display:block');\n // set brand for giftcards if hidden inputfield is present\n store.brand = (_document$querySelect2 = document.querySelector(\"#component_\".concat(type, \" .brand\"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value;\n}\nfunction displayValidationErrors() {\n store.selectedPayment.node.showValidation();\n return false;\n}\nvar selectedMethods = {};\nfunction doCustomValidation() {\n return store.selectedMethod in selectedMethods ? selectedMethods[store.selectedMethod]() : true;\n}\nfunction showValidation() {\n return store.selectedPaymentIsValid ? doCustomValidation() : displayValidationErrors();\n}\nfunction getInstallmentValues(maxValue) {\n var values = [];\n for (var i = 1; i <= maxValue; i += 1) {\n values.push(i);\n }\n return values;\n}\nfunction createShowConfirmationForm(action) {\n if (document.querySelector('#showConfirmationForm')) {\n return;\n }\n var template = document.createElement('template');\n var form = \"
\\n \\n \\n \\n \\n
\");\n template.innerHTML = form;\n document.querySelector('body').appendChild(template.content);\n}\nmodule.exports = {\n setOrderFormData: setOrderFormData,\n assignPaymentMethodValue: assignPaymentMethodValue,\n paymentFromComponent: paymentFromComponent,\n resetPaymentMethod: resetPaymentMethod,\n displaySelectedMethod: displaySelectedMethod,\n showValidation: showValidation,\n createShowConfirmationForm: createShowConfirmationForm,\n getInstallmentValues: getInstallmentValues\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js?"); /***/ }), @@ -286,7 +286,7 @@ eval("\n\nmodule.exports.installmentLocales = ['pt_BR', 'ja_JP', 'tr_TR', 'es_MX /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _excluded = [\"giftCards\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar _require = __webpack_require__(/*! ./renderGenericComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js\"),\n initializeCheckout = _require.initializeCheckout;\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nfunction makePartialPayment(requestData) {\n var error;\n $.ajax({\n url: window.partialPaymentUrl,\n type: 'POST',\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(response) {\n if (response.error) {\n error = {\n error: true\n };\n } else {\n var giftCards = response.giftCards,\n rest = _objectWithoutProperties(response, _excluded);\n store.checkout.options.amount = rest.remainingAmount;\n store.partialPaymentsOrderObj = rest;\n sessionStorage.setItem('partialPaymentsObj', JSON.stringify(rest));\n store.addedGiftCards = giftCards;\n helpers.setOrderFormData(response);\n initializeCheckout();\n }\n }\n }).fail(function () {});\n return error;\n}\nmodule.exports = {\n makePartialPayment: makePartialPayment\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js?"); +eval("\n\nvar _excluded = [\"giftCards\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar _require = __webpack_require__(/*! ./renderGenericComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js\"),\n initializeCheckout = _require.initializeCheckout;\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nfunction makePartialPayment(requestData) {\n var error;\n $.ajax({\n url: window.partialPaymentUrl,\n type: 'POST',\n data: JSON.stringify(requestData),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(response) {\n if (response.error) {\n error = {\n error: true\n };\n } else {\n var giftCards = response.giftCards,\n rest = _objectWithoutProperties(response, _excluded);\n store.checkout.options.amount = rest.remainingAmount;\n store.adyenOrderData = rest.partialPaymentsOrder;\n store.partialPaymentsOrderObj = rest;\n sessionStorage.setItem('partialPaymentsObj', JSON.stringify(rest));\n store.addedGiftCards = giftCards;\n helpers.setOrderFormData(response);\n initializeCheckout();\n }\n }\n }).fail(function () {});\n return error;\n}\nmodule.exports = {\n makePartialPayment: makePartialPayment\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js?"); /***/ }), @@ -298,7 +298,7 @@ eval("\n\nvar _excluded = [\"giftCards\"];\nfunction _objectWithoutProperties(so /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _document$getElementB;\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable no-unsafe-optional-chaining */\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar _require = __webpack_require__(/*! ./renderPaymentMethod */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderPaymentMethod.js\"),\n renderPaymentMethod = _require.renderPaymentMethod;\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nvar _require2 = __webpack_require__(/*! ./localesUsingInstallments */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/localesUsingInstallments.js\"),\n installmentLocales = _require2.installmentLocales;\nvar _require3 = __webpack_require__(/*! ../commons */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js\"),\n createSession = _require3.createSession,\n fetchGiftCards = _require3.fetchGiftCards;\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require4 = __webpack_require__(/*! ./renderGiftcardComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js\"),\n createElementsToShowRemainingGiftCardAmount = _require4.createElementsToShowRemainingGiftCardAmount,\n removeGiftCards = _require4.removeGiftCards,\n renderAddedGiftCard = _require4.renderAddedGiftCard,\n showGiftCardWarningMessage = _require4.showGiftCardWarningMessage,\n attachGiftCardAddButtonListener = _require4.attachGiftCardAddButtonListener,\n showGiftCardInfoMessage = _require4.showGiftCardInfoMessage,\n giftCardBrands = _require4.giftCardBrands,\n clearGiftCardsContainer = _require4.clearGiftCardsContainer,\n attachGiftCardCancelListener = _require4.attachGiftCardCancelListener,\n showGiftCardCancelButton = _require4.showGiftCardCancelButton;\nvar INIT_CHECKOUT_EVENT = 'INIT_CHECKOUT_EVENT';\nfunction addPosTerminals(terminals) {\n var ddTerminals = document.createElement('select');\n ddTerminals.id = 'terminalList';\n Object.keys(terminals).forEach(function (t) {\n var option = document.createElement('option');\n option.value = terminals[t];\n option.text = terminals[t];\n ddTerminals.appendChild(option);\n });\n document.querySelector('#adyenPosTerminals').append(ddTerminals);\n}\nfunction setCheckoutConfiguration(checkoutOptions) {\n var setField = function setField(key, val) {\n return val && _defineProperty({}, key, val);\n };\n store.checkoutConfiguration = _objectSpread(_objectSpread(_objectSpread({}, store.checkoutConfiguration), setField('amount', checkoutOptions.amount)), setField('countryCode', checkoutOptions.countryCode));\n}\nfunction resolveUnmount(key, val) {\n try {\n return Promise.resolve(val.node.unmount(\"component_\".concat(key)));\n } catch (e) {\n // try/catch block for val.unmount\n return Promise.resolve(false);\n }\n}\n\n/**\n * To avoid re-rendering components twice, unmounts existing components from payment methods list\n */\nfunction unmountComponents() {\n var promises = Object.entries(store.componentsObj).map(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n val = _ref3[1];\n delete store.componentsObj[key];\n return resolveUnmount(key, val);\n });\n return Promise.all(promises);\n}\nfunction isCartModified(amount, orderAmount) {\n return amount.currency !== orderAmount.currency || amount.value !== orderAmount.value;\n}\nfunction renderGiftCardLogo(imagePath) {\n var headingImg = document.querySelector('#headingImg');\n if (headingImg) {\n headingImg.src = \"\".concat(imagePath, \"genericgiftcard.png\");\n }\n}\nfunction applyGiftCards() {\n var now = new Date().toISOString();\n var amount = store.checkoutConfiguration.amount;\n var orderAmount = store.partialPaymentsOrderObj.orderAmount;\n var isPartialPaymentExpired = store.addedGiftCards.some(function (cart) {\n return now > cart.expiresAt;\n });\n var cartModified = isCartModified(amount, orderAmount);\n if (isPartialPaymentExpired) {\n removeGiftCards();\n } else if (cartModified) {\n removeGiftCards();\n showGiftCardWarningMessage();\n } else {\n var _store$addedGiftCards;\n clearGiftCardsContainer();\n store.addedGiftCards.forEach(function (card) {\n renderAddedGiftCard(card);\n });\n if ((_store$addedGiftCards = store.addedGiftCards) !== null && _store$addedGiftCards !== void 0 && _store$addedGiftCards.length) {\n showGiftCardInfoMessage();\n }\n store.checkout.options.amount = store.addedGiftCards[store.addedGiftCards.length - 1].remainingAmount;\n showGiftCardCancelButton(true);\n attachGiftCardCancelListener();\n createElementsToShowRemainingGiftCardAmount();\n }\n}\nfunction renderStoredPaymentMethod(imagePath) {\n return function (pm) {\n if (pm.supportedShopperInteractions.includes('Ecommerce')) {\n renderPaymentMethod(pm, true, imagePath);\n }\n };\n}\nfunction renderStoredPaymentMethods(data, imagePath) {\n if (data.storedPaymentMethods) {\n var storedPaymentMethods = data.storedPaymentMethods;\n storedPaymentMethods.forEach(renderStoredPaymentMethod(imagePath));\n }\n}\nfunction renderPaymentMethods(paymentMethods, imagePath, adyenDescriptions) {\n var promises = [];\n for (var i = 0; i < paymentMethods.length; i += 1) {\n var pm = paymentMethods[i];\n promises.push(renderPaymentMethod(pm, false, imagePath, adyenDescriptions[pm.type]));\n }\n return Promise.all(promises);\n}\nfunction renderPosTerminals(adyenConnectedTerminals) {\n var _adyenConnectedTermin;\n var removeChilds = function removeChilds() {\n var posTerminals = document.querySelector('#adyenPosTerminals');\n while (posTerminals.firstChild) {\n posTerminals.removeChild(posTerminals.firstChild);\n }\n };\n if (adyenConnectedTerminals !== null && adyenConnectedTerminals !== void 0 && (_adyenConnectedTermin = adyenConnectedTerminals.uniqueTerminalIds) !== null && _adyenConnectedTermin !== void 0 && _adyenConnectedTermin.length) {\n removeChilds();\n addPosTerminals(adyenConnectedTerminals.uniqueTerminalIds);\n }\n}\nfunction setAmazonPayConfig(adyenPaymentMethods) {\n var amazonpay = adyenPaymentMethods.paymentMethods.find(function (paymentMethod) {\n return paymentMethod.type === 'amazonpay';\n });\n if (amazonpay) {\n var _document$querySelect, _document$querySelect2, _document$querySelect3, _document$querySelect4, _document$querySelect5, _document$querySelect6, _document$querySelect7, _document$querySelect8;\n store.checkoutConfiguration.paymentMethodsConfiguration.amazonpay.configuration = amazonpay.configuration;\n store.checkoutConfiguration.paymentMethodsConfiguration.amazonpay.addressDetails = {\n name: \"\".concat((_document$querySelect = document.querySelector('#shippingFirstNamedefault')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.value, \" \").concat((_document$querySelect2 = document.querySelector('#shippingLastNamedefault')) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value),\n addressLine1: (_document$querySelect3 = document.querySelector('#shippingAddressOnedefault')) === null || _document$querySelect3 === void 0 ? void 0 : _document$querySelect3.value,\n city: (_document$querySelect4 = document.querySelector('#shippingAddressCitydefault')) === null || _document$querySelect4 === void 0 ? void 0 : _document$querySelect4.value,\n stateOrRegion: (_document$querySelect5 = document.querySelector('#shippingAddressCitydefault')) === null || _document$querySelect5 === void 0 ? void 0 : _document$querySelect5.value,\n postalCode: (_document$querySelect6 = document.querySelector('#shippingZipCodedefault')) === null || _document$querySelect6 === void 0 ? void 0 : _document$querySelect6.value,\n countryCode: (_document$querySelect7 = document.querySelector('#shippingCountrydefault')) === null || _document$querySelect7 === void 0 ? void 0 : _document$querySelect7.value,\n phoneNumber: (_document$querySelect8 = document.querySelector('#shippingPhoneNumberdefault')) === null || _document$querySelect8 === void 0 ? void 0 : _document$querySelect8.value\n };\n }\n}\nfunction setInstallments(amount) {\n try {\n var _window$installments;\n if (installmentLocales.indexOf(window.Configuration.locale) < 0) {\n return;\n }\n var _window$installments$ = (_window$installments = window.installments) === null || _window$installments === void 0 ? void 0 : _window$installments.replace(/\\[|]/g, '').split(','),\n _window$installments$2 = _slicedToArray(_window$installments$, 2),\n minAmount = _window$installments$2[0],\n numOfInstallments = _window$installments$2[1];\n if (minAmount <= amount.value) {\n store.checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions = {\n card: {}\n }; // eslint-disable-next-line max-len\n store.checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions.card.values = helpers.getInstallmentValues(numOfInstallments);\n store.checkoutConfiguration.paymentMethodsConfiguration.card.showInstallmentAmounts = true;\n }\n } catch (e) {} // eslint-disable-line no-empty\n}\n\nfunction setGiftCardContainerVisibility() {\n var availableGiftCards = giftCardBrands();\n if (availableGiftCards.length === 0) {\n var giftCardContainer = document.querySelector('.gift-card-selection');\n giftCardContainer.style.display = 'none';\n var giftCardSeparator = document.querySelector('.gift-card-separator');\n giftCardSeparator.style.display = 'none';\n }\n}\nfunction initializeCheckout() {\n return _initializeCheckout.apply(this, arguments);\n}\nfunction _initializeCheckout() {\n _initializeCheckout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var session, giftCardsData, totalDiscountedAmount, giftCards, lastGiftCard, paymentMethodsWithoutGiftCards, firstPaymentMethod;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return createSession();\n case 2:\n session = _context.sent;\n _context.next = 5;\n return fetchGiftCards();\n case 5:\n giftCardsData = _context.sent;\n store.checkoutConfiguration.session = {\n id: session.id,\n sessionData: session.sessionData,\n imagePath: session.imagePath,\n adyenDescriptions: session.adyenDescriptions\n };\n _context.next = 9;\n return AdyenCheckout(store.checkoutConfiguration);\n case 9:\n store.checkout = _context.sent;\n setGiftCardContainerVisibility();\n totalDiscountedAmount = giftCardsData.totalDiscountedAmount, giftCards = giftCardsData.giftCards;\n if (giftCards !== null && giftCards !== void 0 && giftCards.length) {\n store.addedGiftCards = giftCards;\n lastGiftCard = store.addedGiftCards[store.addedGiftCards.length - 1];\n store.partialPaymentsOrderObj = _objectSpread(_objectSpread({}, lastGiftCard), {}, {\n totalDiscountedAmount: totalDiscountedAmount\n });\n }\n setCheckoutConfiguration(store.checkout.options);\n setInstallments(store.checkout.options.amount);\n setAmazonPayConfig(store.checkout.paymentMethodsResponse);\n document.querySelector('#paymentMethodsList').innerHTML = '';\n paymentMethodsWithoutGiftCards = store.checkout.paymentMethodsResponse.paymentMethods.filter(function (pm) {\n return pm.type !== constants.GIFTCARD;\n });\n renderStoredPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath);\n _context.next = 21;\n return renderPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath, session.adyenDescriptions);\n case 21:\n renderPosTerminals(session.adyenConnectedTerminals);\n renderGiftCardLogo(session.imagePath);\n firstPaymentMethod = document.querySelector('input[type=radio][name=brandCode]');\n if (firstPaymentMethod) {\n firstPaymentMethod.checked = true;\n helpers.displaySelectedMethod(firstPaymentMethod.value);\n }\n helpers.createShowConfirmationForm(window.ShowConfirmationPaymentFromComponent);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _initializeCheckout.apply(this, arguments);\n}\n(_document$getElementB = document.getElementById('email')) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.addEventListener('change', function (e) {\n var emailPattern = /^[\\w.%+-]+@[\\w.-]+\\.[\\w]{2,6}$/;\n if (emailPattern.test(e.target.value)) {\n var paymentMethodsConfiguration = store.checkoutConfiguration.paymentMethodsConfiguration;\n paymentMethodsConfiguration.card.clickToPayConfiguration.shopperEmail = e.target.value;\n var event = new Event(INIT_CHECKOUT_EVENT);\n document.dispatchEvent(event);\n }\n});\n\n// used by renderGiftCardComponent.js\ndocument.addEventListener(INIT_CHECKOUT_EVENT, function () {\n initializeCheckout();\n});\n\n/**\n * Calls createSession and then renders the retrieved payment methods (including card component)\n */\nfunction renderGenericComponent() {\n return _renderGenericComponent.apply(this, arguments);\n}\nfunction _renderGenericComponent() {\n _renderGenericComponent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _store$addedGiftCards2;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(Object.keys(store.componentsObj).length !== 0)) {\n _context2.next = 3;\n break;\n }\n _context2.next = 3;\n return unmountComponents();\n case 3:\n _context2.next = 5;\n return initializeCheckout();\n case 5:\n if ((_store$addedGiftCards2 = store.addedGiftCards) !== null && _store$addedGiftCards2 !== void 0 && _store$addedGiftCards2.length) {\n applyGiftCards();\n }\n attachGiftCardAddButtonListener();\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _renderGenericComponent.apply(this, arguments);\n}\nmodule.exports = {\n renderGenericComponent: renderGenericComponent,\n initializeCheckout: initializeCheckout,\n INIT_CHECKOUT_EVENT: INIT_CHECKOUT_EVENT\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js?"); +eval("\n\nvar _document$getElementB;\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable no-unsafe-optional-chaining */\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar _require = __webpack_require__(/*! ./renderPaymentMethod */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderPaymentMethod.js\"),\n renderPaymentMethod = _require.renderPaymentMethod;\nvar helpers = __webpack_require__(/*! ./helpers */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js\");\nvar _require2 = __webpack_require__(/*! ./localesUsingInstallments */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/localesUsingInstallments.js\"),\n installmentLocales = _require2.installmentLocales;\nvar _require3 = __webpack_require__(/*! ../commons */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/commons/index.js\"),\n createSession = _require3.createSession,\n fetchGiftCards = _require3.fetchGiftCards;\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require4 = __webpack_require__(/*! ./renderGiftcardComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js\"),\n createElementsToShowRemainingGiftCardAmount = _require4.createElementsToShowRemainingGiftCardAmount,\n removeGiftCards = _require4.removeGiftCards,\n renderAddedGiftCard = _require4.renderAddedGiftCard,\n showGiftCardWarningMessage = _require4.showGiftCardWarningMessage,\n attachGiftCardAddButtonListener = _require4.attachGiftCardAddButtonListener,\n showGiftCardInfoMessage = _require4.showGiftCardInfoMessage,\n giftCardBrands = _require4.giftCardBrands,\n clearGiftCardsContainer = _require4.clearGiftCardsContainer,\n attachGiftCardCancelListener = _require4.attachGiftCardCancelListener,\n showGiftCardCancelButton = _require4.showGiftCardCancelButton;\nvar INIT_CHECKOUT_EVENT = 'INIT_CHECKOUT_EVENT';\nfunction addPosTerminals(terminals) {\n var ddTerminals = document.createElement('select');\n ddTerminals.id = 'terminalList';\n Object.keys(terminals).forEach(function (t) {\n var option = document.createElement('option');\n option.value = terminals[t];\n option.text = terminals[t];\n ddTerminals.appendChild(option);\n });\n document.querySelector('#adyenPosTerminals').append(ddTerminals);\n}\nfunction setCheckoutConfiguration(checkoutOptions) {\n var setField = function setField(key, val) {\n return val && _defineProperty({}, key, val);\n };\n store.checkoutConfiguration = _objectSpread(_objectSpread(_objectSpread({}, store.checkoutConfiguration), setField('amount', checkoutOptions.amount)), setField('countryCode', checkoutOptions.countryCode));\n}\nfunction resolveUnmount(key, val) {\n try {\n return Promise.resolve(val.node.unmount(\"component_\".concat(key)));\n } catch (e) {\n // try/catch block for val.unmount\n return Promise.resolve(false);\n }\n}\n\n/**\n * To avoid re-rendering components twice, unmounts existing components from payment methods list\n */\nfunction unmountComponents() {\n var promises = Object.entries(store.componentsObj).map(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n val = _ref3[1];\n delete store.componentsObj[key];\n return resolveUnmount(key, val);\n });\n return Promise.all(promises);\n}\nfunction isCartModified(amount, orderAmount) {\n return amount.currency !== orderAmount.currency || amount.value !== orderAmount.value;\n}\nfunction renderGiftCardLogo(imagePath) {\n var headingImg = document.querySelector('#headingImg');\n if (headingImg) {\n headingImg.src = \"\".concat(imagePath, \"genericgiftcard.png\");\n }\n}\nfunction applyGiftCards() {\n var now = new Date().toISOString();\n var amount = store.checkoutConfiguration.amount;\n var orderAmount = store.partialPaymentsOrderObj.orderAmount;\n var isPartialPaymentExpired = store.addedGiftCards.some(function (cart) {\n return now > cart.expiresAt;\n });\n var cartModified = isCartModified(amount, orderAmount);\n if (isPartialPaymentExpired) {\n removeGiftCards();\n } else if (cartModified) {\n removeGiftCards();\n showGiftCardWarningMessage();\n } else {\n var _store$addedGiftCards;\n clearGiftCardsContainer();\n store.addedGiftCards.forEach(function (card) {\n renderAddedGiftCard(card);\n });\n if ((_store$addedGiftCards = store.addedGiftCards) !== null && _store$addedGiftCards !== void 0 && _store$addedGiftCards.length) {\n showGiftCardInfoMessage();\n }\n store.checkout.options.amount = store.addedGiftCards[store.addedGiftCards.length - 1].remainingAmount;\n showGiftCardCancelButton(true);\n attachGiftCardCancelListener();\n createElementsToShowRemainingGiftCardAmount();\n }\n}\nfunction renderStoredPaymentMethod(imagePath) {\n return function (pm) {\n if (pm.supportedShopperInteractions.includes('Ecommerce')) {\n renderPaymentMethod(pm, true, imagePath);\n }\n };\n}\nfunction renderStoredPaymentMethods(data, imagePath) {\n if (data.storedPaymentMethods) {\n var storedPaymentMethods = data.storedPaymentMethods;\n storedPaymentMethods.forEach(renderStoredPaymentMethod(imagePath));\n }\n}\nfunction renderPaymentMethods(paymentMethods, imagePath, adyenDescriptions) {\n var promises = [];\n for (var i = 0; i < paymentMethods.length; i += 1) {\n var pm = paymentMethods[i];\n promises.push(renderPaymentMethod(pm, false, imagePath, adyenDescriptions[pm.type]));\n }\n return Promise.all(promises);\n}\nfunction renderPosTerminals(adyenConnectedTerminals) {\n var _adyenConnectedTermin;\n var removeChilds = function removeChilds() {\n var posTerminals = document.querySelector('#adyenPosTerminals');\n while (posTerminals.firstChild) {\n posTerminals.removeChild(posTerminals.firstChild);\n }\n };\n if (adyenConnectedTerminals !== null && adyenConnectedTerminals !== void 0 && (_adyenConnectedTermin = adyenConnectedTerminals.uniqueTerminalIds) !== null && _adyenConnectedTermin !== void 0 && _adyenConnectedTermin.length) {\n removeChilds();\n addPosTerminals(adyenConnectedTerminals.uniqueTerminalIds);\n }\n}\nfunction setAmazonPayConfig(adyenPaymentMethods) {\n var amazonpay = adyenPaymentMethods.paymentMethods.find(function (paymentMethod) {\n return paymentMethod.type === 'amazonpay';\n });\n if (amazonpay) {\n var _document$querySelect, _document$querySelect2, _document$querySelect3, _document$querySelect4, _document$querySelect5, _document$querySelect6, _document$querySelect7, _document$querySelect8;\n store.checkoutConfiguration.paymentMethodsConfiguration.amazonpay.configuration = amazonpay.configuration;\n store.checkoutConfiguration.paymentMethodsConfiguration.amazonpay.addressDetails = {\n name: \"\".concat((_document$querySelect = document.querySelector('#shippingFirstNamedefault')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.value, \" \").concat((_document$querySelect2 = document.querySelector('#shippingLastNamedefault')) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.value),\n addressLine1: (_document$querySelect3 = document.querySelector('#shippingAddressOnedefault')) === null || _document$querySelect3 === void 0 ? void 0 : _document$querySelect3.value,\n city: (_document$querySelect4 = document.querySelector('#shippingAddressCitydefault')) === null || _document$querySelect4 === void 0 ? void 0 : _document$querySelect4.value,\n stateOrRegion: (_document$querySelect5 = document.querySelector('#shippingAddressCitydefault')) === null || _document$querySelect5 === void 0 ? void 0 : _document$querySelect5.value,\n postalCode: (_document$querySelect6 = document.querySelector('#shippingZipCodedefault')) === null || _document$querySelect6 === void 0 ? void 0 : _document$querySelect6.value,\n countryCode: (_document$querySelect7 = document.querySelector('#shippingCountrydefault')) === null || _document$querySelect7 === void 0 ? void 0 : _document$querySelect7.value,\n phoneNumber: (_document$querySelect8 = document.querySelector('#shippingPhoneNumberdefault')) === null || _document$querySelect8 === void 0 ? void 0 : _document$querySelect8.value\n };\n }\n}\nfunction setInstallments(amount) {\n try {\n var _window$installments;\n if (installmentLocales.indexOf(window.Configuration.locale) < 0) {\n return;\n }\n var _window$installments$ = (_window$installments = window.installments) === null || _window$installments === void 0 ? void 0 : _window$installments.replace(/\\[|]/g, '').split(','),\n _window$installments$2 = _slicedToArray(_window$installments$, 2),\n minAmount = _window$installments$2[0],\n numOfInstallments = _window$installments$2[1];\n if (minAmount <= amount.value) {\n store.checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions = {\n card: {}\n }; // eslint-disable-next-line max-len\n store.checkoutConfiguration.paymentMethodsConfiguration.card.installmentOptions.card.values = helpers.getInstallmentValues(numOfInstallments);\n store.checkoutConfiguration.paymentMethodsConfiguration.card.showInstallmentAmounts = true;\n }\n } catch (e) {} // eslint-disable-line no-empty\n}\n\nfunction setGiftCardContainerVisibility() {\n var availableGiftCards = giftCardBrands();\n if (availableGiftCards.length === 0) {\n var giftCardContainer = document.querySelector('.gift-card-selection');\n giftCardContainer.style.display = 'none';\n var giftCardSeparator = document.querySelector('.gift-card-separator');\n giftCardSeparator.style.display = 'none';\n }\n}\nfunction initializeCheckout() {\n return _initializeCheckout.apply(this, arguments);\n}\nfunction _initializeCheckout() {\n _initializeCheckout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var session, giftCardsData, totalDiscountedAmount, giftCards, lastGiftCard, paymentMethodsWithoutGiftCards, firstPaymentMethod;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return createSession();\n case 2:\n session = _context2.sent;\n _context2.next = 5;\n return fetchGiftCards();\n case 5:\n giftCardsData = _context2.sent;\n store.checkoutConfiguration.session = {\n id: session.id,\n sessionData: session.sessionData,\n imagePath: session.imagePath,\n adyenDescriptions: session.adyenDescriptions\n };\n _context2.next = 9;\n return AdyenCheckout(store.checkoutConfiguration);\n case 9:\n store.checkout = _context2.sent;\n setGiftCardContainerVisibility();\n totalDiscountedAmount = giftCardsData.totalDiscountedAmount, giftCards = giftCardsData.giftCards;\n if (giftCards !== null && giftCards !== void 0 && giftCards.length) {\n store.addedGiftCards = giftCards;\n lastGiftCard = store.addedGiftCards[store.addedGiftCards.length - 1];\n store.partialPaymentsOrderObj = _objectSpread(_objectSpread({}, lastGiftCard), {}, {\n totalDiscountedAmount: totalDiscountedAmount\n });\n }\n setCheckoutConfiguration(store.checkout.options);\n setInstallments(store.checkout.options.amount);\n setAmazonPayConfig(store.checkout.paymentMethodsResponse);\n document.querySelector('#paymentMethodsList').innerHTML = '';\n paymentMethodsWithoutGiftCards = store.checkout.paymentMethodsResponse.paymentMethods.filter(function (pm) {\n return pm.type !== constants.GIFTCARD;\n });\n renderStoredPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath);\n _context2.next = 21;\n return renderPaymentMethods(paymentMethodsWithoutGiftCards, session.imagePath, session.adyenDescriptions);\n case 21:\n renderPosTerminals(session.adyenConnectedTerminals);\n renderGiftCardLogo(session.imagePath);\n firstPaymentMethod = document.querySelector('input[type=radio][name=brandCode]');\n if (firstPaymentMethod) {\n firstPaymentMethod.checked = true;\n helpers.displaySelectedMethod(firstPaymentMethod.value);\n }\n helpers.createShowConfirmationForm(window.ShowConfirmationPaymentFromComponent);\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _initializeCheckout.apply(this, arguments);\n}\n(_document$getElementB = document.getElementById('email')) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.addEventListener('change', function (e) {\n var emailPattern = /^[\\w.%+-]+@[\\w.-]+\\.[\\w]{2,6}$/;\n if (emailPattern.test(e.target.value)) {\n var paymentMethodsConfiguration = store.checkoutConfiguration.paymentMethodsConfiguration;\n paymentMethodsConfiguration.card.clickToPayConfiguration.shopperEmail = e.target.value;\n var event = new Event(INIT_CHECKOUT_EVENT);\n document.dispatchEvent(event);\n }\n});\n\n// used by renderGiftCardComponent.js\ndocument.addEventListener(INIT_CHECKOUT_EVENT, function () {\n var handleCheckoutEvent = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(Object.keys(store.componentsObj).length !== 0)) {\n _context.next = 3;\n break;\n }\n _context.next = 3;\n return unmountComponents();\n case 3:\n _context.next = 5;\n return initializeCheckout();\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function handleCheckoutEvent() {\n return _ref4.apply(this, arguments);\n };\n }();\n handleCheckoutEvent();\n});\n\n/**\n * Calls createSession and then renders the retrieved payment methods (including card component)\n */\nfunction renderGenericComponent() {\n return _renderGenericComponent.apply(this, arguments);\n}\nfunction _renderGenericComponent() {\n _renderGenericComponent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n var _store$addedGiftCards2;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (!(Object.keys(store.componentsObj).length !== 0)) {\n _context3.next = 3;\n break;\n }\n _context3.next = 3;\n return unmountComponents();\n case 3:\n _context3.next = 5;\n return initializeCheckout();\n case 5:\n if ((_store$addedGiftCards2 = store.addedGiftCards) !== null && _store$addedGiftCards2 !== void 0 && _store$addedGiftCards2.length) {\n applyGiftCards();\n }\n attachGiftCardAddButtonListener();\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _renderGenericComponent.apply(this, arguments);\n}\nmodule.exports = {\n renderGenericComponent: renderGenericComponent,\n initializeCheckout: initializeCheckout,\n INIT_CHECKOUT_EVENT: INIT_CHECKOUT_EVENT\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js?"); /***/ }), @@ -310,7 +310,7 @@ eval("\n\nvar _document$getElementB;\nfunction _regeneratorRuntime() { \"use str /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require = __webpack_require__(/*! ./renderGenericComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js\"),\n INIT_CHECKOUT_EVENT = _require.INIT_CHECKOUT_EVENT;\nfunction getGiftCardElements() {\n var giftCardSelect = document.querySelector('#giftCardSelect');\n var giftCardUl = document.querySelector('#giftCardUl');\n var giftCardContainer = document.querySelector('#giftCardContainer');\n var giftCardAddButton = document.querySelector('#giftCardAddButton');\n var giftCardCancelContainer = document.querySelector('#giftCardsCancelContainer');\n var giftCardCancelButton = document.querySelector('#giftCardCancelButton');\n var giftCardSelectContainer = document.querySelector('#giftCardSelectContainer');\n var giftCardSelectWrapper = document.querySelector('#giftCardSelectWrapper');\n var giftCardsList = document.querySelector('#giftCardsList');\n var giftCardsInfoMessageContainer = document.querySelector('#giftCardsInfoMessage');\n var cancelMainPaymentGiftCard = document.querySelector('#cancelGiftCardButton');\n var giftCardInformation = document.querySelector('#giftCardInformation');\n return {\n giftCardSelect: giftCardSelect,\n giftCardUl: giftCardUl,\n giftCardContainer: giftCardContainer,\n giftCardAddButton: giftCardAddButton,\n giftCardSelectContainer: giftCardSelectContainer,\n giftCardsList: giftCardsList,\n giftCardsInfoMessageContainer: giftCardsInfoMessageContainer,\n giftCardSelectWrapper: giftCardSelectWrapper,\n giftCardCancelContainer: giftCardCancelContainer,\n giftCardCancelButton: giftCardCancelButton,\n cancelMainPaymentGiftCard: cancelMainPaymentGiftCard,\n giftCardInformation: giftCardInformation\n };\n}\nfunction showGiftCardCancelButton(show) {\n var _getGiftCardElements = getGiftCardElements(),\n giftCardCancelContainer = _getGiftCardElements.giftCardCancelContainer;\n if (show) {\n giftCardCancelContainer.classList.remove('invisible');\n } else {\n giftCardCancelContainer.classList.add('invisible');\n }\n}\nfunction removeGiftCards() {\n var _store$addedGiftCards;\n (_store$addedGiftCards = store.addedGiftCards) === null || _store$addedGiftCards === void 0 ? void 0 : _store$addedGiftCards.forEach(function (card) {\n $.ajax({\n type: 'POST',\n url: window.cancelPartialPaymentOrderUrl,\n data: JSON.stringify(card),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(res) {\n var adyenPartialPaymentsOrder = document.querySelector('#adyenPartialPaymentsOrder');\n var _getGiftCardElements2 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements2.giftCardsList,\n giftCardAddButton = _getGiftCardElements2.giftCardAddButton,\n giftCardSelect = _getGiftCardElements2.giftCardSelect,\n giftCardUl = _getGiftCardElements2.giftCardUl,\n giftCardsInfoMessageContainer = _getGiftCardElements2.giftCardsInfoMessageContainer,\n giftCardSelectContainer = _getGiftCardElements2.giftCardSelectContainer,\n cancelMainPaymentGiftCard = _getGiftCardElements2.cancelMainPaymentGiftCard,\n giftCardInformation = _getGiftCardElements2.giftCardInformation;\n adyenPartialPaymentsOrder.value = null;\n giftCardsList.innerHTML = '';\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = null;\n giftCardSelectContainer.classList.add('invisible');\n giftCardSelect.classList.remove('invisible');\n giftCardUl.innerHTML = '';\n cancelMainPaymentGiftCard.classList.add('invisible');\n showGiftCardCancelButton(false);\n giftCardInformation === null || giftCardInformation === void 0 ? void 0 : giftCardInformation.remove();\n store.checkout.options.amount = res.amount;\n store.partialPaymentsOrderObj = null;\n store.addedGiftCards = null;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n if (res.resultCode === constants.RECEIVED) {\n var _document$querySelect, _store$componentsObj, _store$componentsObj$;\n (_document$querySelect = document.querySelector('#cancelGiftCardContainer')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.parentNode.remove();\n (_store$componentsObj = store.componentsObj) === null || _store$componentsObj === void 0 ? void 0 : (_store$componentsObj$ = _store$componentsObj.giftcard) === null || _store$componentsObj$ === void 0 ? void 0 : _store$componentsObj$.node.unmount('component_giftcard');\n }\n var event = new Event(INIT_CHECKOUT_EVENT);\n document.dispatchEvent(event);\n }\n });\n });\n}\nfunction giftCardBrands() {\n var paymentMethodsResponse = store.checkout.paymentMethodsResponse;\n return paymentMethodsResponse.paymentMethods.filter(function (pm) {\n return pm.type === constants.GIFTCARD;\n });\n}\nfunction renderGiftCardSelectForm() {\n var _getGiftCardElements3 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements3.giftCardUl,\n giftCardSelect = _getGiftCardElements3.giftCardSelect;\n if (giftCardUl !== null && giftCardUl !== void 0 && giftCardUl.innerHTML) {\n giftCardSelect.classList.remove('invisible');\n return;\n }\n var imagePath = store.checkoutConfiguration.session.imagePath;\n giftCardBrands().forEach(function (giftCard) {\n var newListItem = document.createElement('li');\n newListItem.setAttribute('data-brand', giftCard.brand);\n newListItem.setAttribute('data-name', giftCard.name);\n newListItem.setAttribute('data-type', giftCard.type);\n var span = document.createElement('span');\n span.textContent = giftCard.name;\n var img = document.createElement('img');\n img.src = \"\".concat(imagePath).concat(giftCard.brand, \".png\");\n img.width = 40;\n img.height = 26;\n newListItem.appendChild(span);\n newListItem.appendChild(img);\n giftCardUl.appendChild(newListItem);\n });\n}\nfunction attachGiftCardFormListeners() {\n if (store.giftCardComponentListenersAdded) {\n return;\n }\n var _getGiftCardElements4 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements4.giftCardUl,\n giftCardSelect = _getGiftCardElements4.giftCardSelect,\n giftCardContainer = _getGiftCardElements4.giftCardContainer,\n giftCardSelectWrapper = _getGiftCardElements4.giftCardSelectWrapper;\n if (giftCardUl) {\n giftCardUl.addEventListener('click', function (event) {\n var _store$componentsObj2;\n giftCardUl.classList.toggle('invisible');\n var selectedGiftCard = {\n name: event.target.dataset.name,\n brand: event.target.dataset.brand,\n type: event.target.dataset.type\n };\n if ((_store$componentsObj2 = store.componentsObj) !== null && _store$componentsObj2 !== void 0 && _store$componentsObj2.giftcard) {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n }\n if (!store.partialPaymentsOrderObj) {\n store.partialPaymentsOrderObj = {};\n }\n var newOption = document.createElement('option');\n newOption.textContent = selectedGiftCard.name;\n newOption.value = selectedGiftCard.brand;\n newOption.style.visibility = 'hidden';\n giftCardSelect.appendChild(newOption);\n giftCardSelect.value = selectedGiftCard.brand;\n giftCardContainer.innerHTML = '';\n var giftCardNode = store.checkout.create(constants.GIFTCARD, _objectSpread(_objectSpread({}, store.checkoutConfiguration.giftcard), {}, {\n brand: selectedGiftCard.brand,\n name: selectedGiftCard.name\n })).mount(giftCardContainer);\n store.componentsObj.giftcard = {\n node: giftCardNode\n };\n });\n }\n if (giftCardSelect) {\n giftCardSelectWrapper.addEventListener('mousedown', function () {\n giftCardUl.classList.toggle('invisible');\n });\n }\n store.giftCardComponentListenersAdded = true;\n}\nfunction showGiftCardWarningMessage() {\n var alertContainer = document.createElement('div');\n alertContainer.setAttribute('id', 'giftCardWarningMessage');\n alertContainer.classList.add('alert', 'alert-warning', 'error-message', 'gift-card-warning-msg');\n alertContainer.setAttribute('role', 'alert');\n var alertContainerP = document.createElement('p');\n alertContainerP.classList.add('error-message-text');\n alertContainerP.textContent = window.giftCardWarningMessage;\n alertContainer.appendChild(alertContainerP);\n var orderTotalSummaryEl = document.querySelector('.card-body.order-total-summary');\n orderTotalSummaryEl === null || orderTotalSummaryEl === void 0 ? void 0 : orderTotalSummaryEl.appendChild(alertContainer);\n}\nfunction attachGiftCardAddButtonListener() {\n var _getGiftCardElements5 = getGiftCardElements(),\n giftCardAddButton = _getGiftCardElements5.giftCardAddButton,\n giftCardSelectContainer = _getGiftCardElements5.giftCardSelectContainer,\n giftCardSelectWrapper = _getGiftCardElements5.giftCardSelectWrapper,\n giftCardSelect = _getGiftCardElements5.giftCardSelect;\n if (giftCardAddButton) {\n giftCardAddButton.addEventListener('click', function () {\n renderGiftCardSelectForm();\n attachGiftCardFormListeners();\n var giftCardWarningMessageEl = document.querySelector('#giftCardWarningMessage');\n if (giftCardWarningMessageEl) {\n giftCardWarningMessageEl.style.display = 'none';\n }\n giftCardSelect.value = 'null';\n giftCardAddButton.style.display = 'none';\n giftCardSelectContainer.classList.remove('invisible');\n giftCardSelectWrapper.classList.remove('invisible');\n });\n }\n}\nfunction attachGiftCardCancelListener() {\n var _getGiftCardElements6 = getGiftCardElements(),\n giftCardCancelButton = _getGiftCardElements6.giftCardCancelButton;\n giftCardCancelButton === null || giftCardCancelButton === void 0 ? void 0 : giftCardCancelButton.addEventListener('click', function () {\n removeGiftCards();\n });\n}\nfunction removeGiftCardFormListeners() {\n var _getGiftCardElements7 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements7.giftCardUl,\n giftCardSelect = _getGiftCardElements7.giftCardSelect;\n giftCardUl.replaceWith(giftCardUl.cloneNode(true));\n giftCardSelect.replaceWith(giftCardSelect.cloneNode(true));\n store.giftCardComponentListenersAdded = false;\n}\nfunction clearGiftCardsContainer() {\n var _getGiftCardElements8 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements8.giftCardsList;\n giftCardsList.innerHTML = '';\n}\nfunction renderAddedGiftCard(card) {\n var giftCardData = card.giftCard;\n var imagePath = store.checkoutConfiguration.session.imagePath;\n var _getGiftCardElements9 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements9.giftCardsList,\n giftCardAddButton = _getGiftCardElements9.giftCardAddButton;\n var giftCardDiv = document.createElement('div');\n giftCardDiv.classList.add('gift-card');\n var brandContainer = document.createElement('div');\n brandContainer.classList.add('brand-container');\n var giftCardImg = document.createElement('img');\n var giftCardImgSrc = \"\".concat(imagePath).concat(giftCardData.brand, \".png\");\n giftCardImg.setAttribute('src', giftCardImgSrc);\n giftCardImg.classList.add('gift-card-logo');\n var giftCardNameP = document.createElement('p');\n giftCardNameP.textContent = giftCardData.name;\n brandContainer.appendChild(giftCardImg);\n brandContainer.appendChild(giftCardNameP);\n var giftCardAction = document.createElement('div');\n giftCardAction.classList.add('gift-card-action');\n var brandAndRemoveActionWrapper = document.createElement('div');\n brandAndRemoveActionWrapper.classList.add('wrapper');\n brandAndRemoveActionWrapper.appendChild(brandContainer);\n brandAndRemoveActionWrapper.appendChild(giftCardAction);\n var giftCardAmountDiv = document.createElement('div');\n giftCardAmountDiv.classList.add('wrapper');\n var amountLabel = document.createElement('p');\n amountLabel.textContent = window.deductedBalanceGiftCardResource;\n var amountValue = document.createElement('strong');\n amountValue.textContent = card.discountedAmount ? \"-\".concat(card.discountedAmount) : '';\n giftCardAmountDiv.appendChild(amountLabel);\n giftCardAmountDiv.appendChild(amountValue);\n giftCardDiv.appendChild(brandAndRemoveActionWrapper);\n giftCardDiv.appendChild(giftCardAmountDiv);\n giftCardsList.appendChild(giftCardDiv);\n giftCardAddButton.style.display = 'block';\n removeGiftCardFormListeners();\n}\nfunction createElementsToShowRemainingGiftCardAmount() {\n var renderedRemainingAmountEndSpan = document.getElementById('remainingAmountEndSpan');\n var renderedDiscountedAmountEndSpan = document.getElementById('discountedAmountEndSpan');\n if (renderedRemainingAmountEndSpan && renderedDiscountedAmountEndSpan) {\n renderedRemainingAmountEndSpan.innerText = store.partialPaymentsOrderObj.remainingAmountFormatted;\n renderedDiscountedAmountEndSpan.innerText = store.partialPaymentsOrderObj.totalDiscountedAmount;\n return;\n }\n var mainContainer = document.createElement('div');\n var remainingAmountContainer = document.createElement('div');\n var remainingAmountStart = document.createElement('div');\n var remainingAmountEnd = document.createElement('div');\n var discountedAmountContainer = document.createElement('div');\n var discountedAmountStart = document.createElement('div');\n var discountedAmountEnd = document.createElement('div');\n var remainingAmountStartP = document.createElement('p');\n var remainingAmountEndP = document.createElement('p');\n var discountedAmountStartP = document.createElement('p');\n var discountedAmountEndP = document.createElement('p');\n var remainingAmountStartSpan = document.createElement('span');\n var discountedAmountStartSpan = document.createElement('span');\n var remainingAmountEndSpan = document.createElement('span');\n remainingAmountEndSpan.id = 'remainingAmountEndSpan';\n var discountedAmountEndSpan = document.createElement('span');\n discountedAmountEndSpan.id = 'discountedAmountEndSpan';\n remainingAmountContainer.classList.add('row', 'grand-total', 'leading-lines');\n remainingAmountStart.classList.add('col-6', 'start-lines');\n remainingAmountEnd.classList.add('col-6', 'end-lines');\n remainingAmountStartP.classList.add('order-receipt-label');\n discountedAmountContainer.classList.add('row', 'grand-total', 'leading-lines');\n discountedAmountStart.classList.add('col-6', 'start-lines');\n discountedAmountEnd.classList.add('col-6', 'end-lines');\n discountedAmountStartP.classList.add('order-receipt-label');\n remainingAmountEndP.classList.add('text-right');\n discountedAmountEndP.classList.add('text-right');\n discountedAmountContainer.id = 'discountedAmountContainer';\n remainingAmountContainer.id = 'remainingAmountContainer';\n remainingAmountStartSpan.innerText = window.remainingAmountGiftCardResource;\n discountedAmountStartSpan.innerText = window.discountedAmountGiftCardResource;\n remainingAmountEndSpan.innerText = store.partialPaymentsOrderObj.remainingAmountFormatted;\n discountedAmountEndSpan.innerText = store.partialPaymentsOrderObj.totalDiscountedAmount;\n remainingAmountContainer.appendChild(remainingAmountStart);\n remainingAmountContainer.appendChild(remainingAmountEnd);\n remainingAmountStart.appendChild(remainingAmountStartP);\n discountedAmountContainer.appendChild(discountedAmountStart);\n discountedAmountContainer.appendChild(discountedAmountEnd);\n discountedAmountStart.appendChild(discountedAmountStartP);\n remainingAmountEnd.appendChild(remainingAmountEndP);\n remainingAmountStartP.appendChild(remainingAmountStartSpan);\n discountedAmountEnd.appendChild(discountedAmountEndP);\n discountedAmountStartP.appendChild(discountedAmountStartSpan);\n remainingAmountEndP.appendChild(remainingAmountEndSpan);\n discountedAmountEndP.appendChild(discountedAmountEndSpan);\n var pricingContainer = document.querySelector('.card-body.order-total-summary');\n mainContainer.id = 'giftCardInformation';\n mainContainer.appendChild(discountedAmountContainer);\n mainContainer.appendChild(remainingAmountContainer);\n pricingContainer.appendChild(mainContainer);\n}\nfunction showGiftCardInfoMessage() {\n var messageText = store.partialPaymentsOrderObj.message;\n var _getGiftCardElements10 = getGiftCardElements(),\n giftCardsInfoMessageContainer = _getGiftCardElements10.giftCardsInfoMessageContainer;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n if (!messageText) return;\n var giftCardsInfoMessage = document.createElement('div');\n giftCardsInfoMessage.classList.add('adyen-checkout__alert-message', 'adyen-checkout__alert-message--warning');\n giftCardsInfoMessage.setAttribute('role', 'alert');\n var infoMessage = document.createElement('span');\n infoMessage.textContent = messageText;\n giftCardsInfoMessage.appendChild(infoMessage);\n giftCardsInfoMessageContainer.appendChild(giftCardsInfoMessage);\n giftCardsInfoMessageContainer.classList.add('gift-cards-info-message-container');\n}\nmodule.exports = {\n removeGiftCards: removeGiftCards,\n renderAddedGiftCard: renderAddedGiftCard,\n attachGiftCardAddButtonListener: attachGiftCardAddButtonListener,\n getGiftCardElements: getGiftCardElements,\n showGiftCardWarningMessage: showGiftCardWarningMessage,\n createElementsToShowRemainingGiftCardAmount: createElementsToShowRemainingGiftCardAmount,\n renderGiftCardSelectForm: renderGiftCardSelectForm,\n showGiftCardInfoMessage: showGiftCardInfoMessage,\n giftCardBrands: giftCardBrands,\n clearGiftCardsContainer: clearGiftCardsContainer,\n attachGiftCardCancelListener: attachGiftCardCancelListener,\n showGiftCardCancelButton: showGiftCardCancelButton\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js?"); +eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar store = __webpack_require__(/*! ../../../../store */ \"./cartridges/int_adyen_SFRA/cartridge/store/index.js\");\nvar constants = __webpack_require__(/*! ../constants */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js\");\nvar _require = __webpack_require__(/*! ./renderGenericComponent */ \"./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js\"),\n INIT_CHECKOUT_EVENT = _require.INIT_CHECKOUT_EVENT;\nfunction getGiftCardElements() {\n var giftCardSelect = document.querySelector('#giftCardSelect');\n var giftCardUl = document.querySelector('#giftCardUl');\n var giftCardContainer = document.querySelector('#giftCardContainer');\n var giftCardAddButton = document.querySelector('#giftCardAddButton');\n var giftCardCancelContainer = document.querySelector('#giftCardsCancelContainer');\n var giftCardCancelButton = document.querySelector('#giftCardCancelButton');\n var giftCardSelectContainer = document.querySelector('#giftCardSelectContainer');\n var giftCardSelectWrapper = document.querySelector('#giftCardSelectWrapper');\n var giftCardsList = document.querySelector('#giftCardsList');\n var giftCardsInfoMessageContainer = document.querySelector('#giftCardsInfoMessage');\n var cancelMainPaymentGiftCard = document.querySelector('#cancelGiftCardButton');\n var giftCardInformation = document.querySelector('#giftCardInformation');\n return {\n giftCardSelect: giftCardSelect,\n giftCardUl: giftCardUl,\n giftCardContainer: giftCardContainer,\n giftCardAddButton: giftCardAddButton,\n giftCardSelectContainer: giftCardSelectContainer,\n giftCardsList: giftCardsList,\n giftCardsInfoMessageContainer: giftCardsInfoMessageContainer,\n giftCardSelectWrapper: giftCardSelectWrapper,\n giftCardCancelContainer: giftCardCancelContainer,\n giftCardCancelButton: giftCardCancelButton,\n cancelMainPaymentGiftCard: cancelMainPaymentGiftCard,\n giftCardInformation: giftCardInformation\n };\n}\nfunction showGiftCardCancelButton(show) {\n var _getGiftCardElements = getGiftCardElements(),\n giftCardCancelContainer = _getGiftCardElements.giftCardCancelContainer;\n if (show) {\n giftCardCancelContainer.classList.remove('invisible');\n } else {\n giftCardCancelContainer.classList.add('invisible');\n }\n}\nfunction removeGiftCards() {\n var _store$addedGiftCards;\n (_store$addedGiftCards = store.addedGiftCards) === null || _store$addedGiftCards === void 0 ? void 0 : _store$addedGiftCards.forEach(function (card) {\n $.ajax({\n type: 'POST',\n url: window.cancelPartialPaymentOrderUrl,\n data: JSON.stringify(card),\n contentType: 'application/json; charset=utf-8',\n async: false,\n success: function success(res) {\n var adyenPartialPaymentsOrder = document.querySelector('#adyenPartialPaymentsOrder');\n var _getGiftCardElements2 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements2.giftCardsList,\n giftCardAddButton = _getGiftCardElements2.giftCardAddButton,\n giftCardSelect = _getGiftCardElements2.giftCardSelect,\n giftCardUl = _getGiftCardElements2.giftCardUl,\n giftCardsInfoMessageContainer = _getGiftCardElements2.giftCardsInfoMessageContainer,\n giftCardSelectContainer = _getGiftCardElements2.giftCardSelectContainer,\n cancelMainPaymentGiftCard = _getGiftCardElements2.cancelMainPaymentGiftCard,\n giftCardInformation = _getGiftCardElements2.giftCardInformation;\n adyenPartialPaymentsOrder.value = null;\n giftCardsList.innerHTML = '';\n giftCardAddButton.style.display = 'block';\n giftCardSelect.value = null;\n giftCardSelectContainer.classList.add('invisible');\n giftCardSelect.classList.remove('invisible');\n giftCardUl.innerHTML = '';\n cancelMainPaymentGiftCard.classList.add('invisible');\n showGiftCardCancelButton(false);\n giftCardInformation === null || giftCardInformation === void 0 ? void 0 : giftCardInformation.remove();\n store.checkout.options.amount = res.amount;\n store.partialPaymentsOrderObj = null;\n store.addedGiftCards = null;\n store.adyenOrderData = null;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n document.querySelector('button[value=\"submit-payment\"]').disabled = false;\n if (res.resultCode === constants.RECEIVED) {\n var _document$querySelect, _store$componentsObj, _store$componentsObj$;\n (_document$querySelect = document.querySelector('#cancelGiftCardContainer')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.parentNode.remove();\n (_store$componentsObj = store.componentsObj) === null || _store$componentsObj === void 0 ? void 0 : (_store$componentsObj$ = _store$componentsObj.giftcard) === null || _store$componentsObj$ === void 0 ? void 0 : _store$componentsObj$.node.unmount('component_giftcard');\n }\n var event = new Event(INIT_CHECKOUT_EVENT);\n document.dispatchEvent(event);\n }\n });\n });\n}\nfunction giftCardBrands() {\n var paymentMethodsResponse = store.checkout.paymentMethodsResponse;\n return paymentMethodsResponse.paymentMethods.filter(function (pm) {\n return pm.type === constants.GIFTCARD;\n });\n}\nfunction renderGiftCardSelectForm() {\n var _getGiftCardElements3 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements3.giftCardUl,\n giftCardSelect = _getGiftCardElements3.giftCardSelect;\n if (giftCardUl !== null && giftCardUl !== void 0 && giftCardUl.innerHTML) {\n giftCardSelect.classList.remove('invisible');\n return;\n }\n var imagePath = store.checkoutConfiguration.session.imagePath;\n giftCardBrands().forEach(function (giftCard) {\n var newListItem = document.createElement('li');\n newListItem.setAttribute('data-brand', giftCard.brand);\n newListItem.setAttribute('data-name', giftCard.name);\n newListItem.setAttribute('data-type', giftCard.type);\n var span = document.createElement('span');\n span.textContent = giftCard.name;\n var img = document.createElement('img');\n img.src = \"\".concat(imagePath).concat(giftCard.brand, \".png\");\n img.width = 40;\n img.height = 26;\n newListItem.appendChild(span);\n newListItem.appendChild(img);\n giftCardUl.appendChild(newListItem);\n });\n}\nfunction attachGiftCardFormListeners() {\n if (store.giftCardComponentListenersAdded) {\n return;\n }\n var _getGiftCardElements4 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements4.giftCardUl,\n giftCardSelect = _getGiftCardElements4.giftCardSelect,\n giftCardContainer = _getGiftCardElements4.giftCardContainer,\n giftCardSelectWrapper = _getGiftCardElements4.giftCardSelectWrapper;\n if (giftCardUl) {\n giftCardUl.addEventListener('click', function (event) {\n var _store$componentsObj2;\n giftCardUl.classList.toggle('invisible');\n var selectedGiftCard = {\n name: event.target.dataset.name,\n brand: event.target.dataset.brand,\n type: event.target.dataset.type\n };\n if ((_store$componentsObj2 = store.componentsObj) !== null && _store$componentsObj2 !== void 0 && _store$componentsObj2.giftcard) {\n store.componentsObj.giftcard.node.unmount('component_giftcard');\n }\n if (!store.partialPaymentsOrderObj) {\n store.partialPaymentsOrderObj = {};\n }\n var newOption = document.createElement('option');\n newOption.textContent = selectedGiftCard.name;\n newOption.value = selectedGiftCard.brand;\n newOption.style.visibility = 'hidden';\n giftCardSelect.appendChild(newOption);\n giftCardSelect.value = selectedGiftCard.brand;\n giftCardContainer.innerHTML = '';\n var giftCardNode = store.checkout.create(constants.GIFTCARD, _objectSpread(_objectSpread({}, store.checkoutConfiguration.giftcard), {}, {\n brand: selectedGiftCard.brand,\n name: selectedGiftCard.name\n })).mount(giftCardContainer);\n store.componentsObj.giftcard = {\n node: giftCardNode\n };\n });\n }\n if (giftCardSelect) {\n giftCardSelectWrapper.addEventListener('mousedown', function () {\n giftCardUl.classList.toggle('invisible');\n });\n }\n store.giftCardComponentListenersAdded = true;\n}\nfunction showGiftCardWarningMessage() {\n var alertContainer = document.createElement('div');\n alertContainer.setAttribute('id', 'giftCardWarningMessage');\n alertContainer.classList.add('alert', 'alert-warning', 'error-message', 'gift-card-warning-msg');\n alertContainer.setAttribute('role', 'alert');\n var alertContainerP = document.createElement('p');\n alertContainerP.classList.add('error-message-text');\n alertContainerP.textContent = window.giftCardWarningMessage;\n alertContainer.appendChild(alertContainerP);\n var orderTotalSummaryEl = document.querySelector('.card-body.order-total-summary');\n orderTotalSummaryEl === null || orderTotalSummaryEl === void 0 ? void 0 : orderTotalSummaryEl.appendChild(alertContainer);\n}\nfunction attachGiftCardAddButtonListener() {\n var _getGiftCardElements5 = getGiftCardElements(),\n giftCardAddButton = _getGiftCardElements5.giftCardAddButton,\n giftCardSelectContainer = _getGiftCardElements5.giftCardSelectContainer,\n giftCardSelectWrapper = _getGiftCardElements5.giftCardSelectWrapper,\n giftCardSelect = _getGiftCardElements5.giftCardSelect;\n if (giftCardAddButton) {\n giftCardAddButton.addEventListener('click', function () {\n renderGiftCardSelectForm();\n attachGiftCardFormListeners();\n var giftCardWarningMessageEl = document.querySelector('#giftCardWarningMessage');\n if (giftCardWarningMessageEl) {\n giftCardWarningMessageEl.style.display = 'none';\n }\n giftCardSelect.value = 'null';\n giftCardAddButton.style.display = 'none';\n giftCardSelectContainer.classList.remove('invisible');\n giftCardSelectWrapper.classList.remove('invisible');\n });\n }\n}\nfunction attachGiftCardCancelListener() {\n var _getGiftCardElements6 = getGiftCardElements(),\n giftCardCancelButton = _getGiftCardElements6.giftCardCancelButton;\n giftCardCancelButton === null || giftCardCancelButton === void 0 ? void 0 : giftCardCancelButton.addEventListener('click', function () {\n removeGiftCards();\n });\n}\nfunction removeGiftCardFormListeners() {\n var _getGiftCardElements7 = getGiftCardElements(),\n giftCardUl = _getGiftCardElements7.giftCardUl,\n giftCardSelect = _getGiftCardElements7.giftCardSelect;\n giftCardUl.replaceWith(giftCardUl.cloneNode(true));\n giftCardSelect.replaceWith(giftCardSelect.cloneNode(true));\n store.giftCardComponentListenersAdded = false;\n}\nfunction clearGiftCardsContainer() {\n var _getGiftCardElements8 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements8.giftCardsList;\n giftCardsList.innerHTML = '';\n}\nfunction renderAddedGiftCard(card) {\n var giftCardData = card.giftCard;\n var imagePath = store.checkoutConfiguration.session.imagePath;\n var _getGiftCardElements9 = getGiftCardElements(),\n giftCardsList = _getGiftCardElements9.giftCardsList,\n giftCardAddButton = _getGiftCardElements9.giftCardAddButton;\n var giftCardDiv = document.createElement('div');\n giftCardDiv.classList.add('gift-card');\n var brandContainer = document.createElement('div');\n brandContainer.classList.add('brand-container');\n var giftCardImg = document.createElement('img');\n var giftCardImgSrc = \"\".concat(imagePath).concat(giftCardData.brand, \".png\");\n giftCardImg.setAttribute('src', giftCardImgSrc);\n giftCardImg.classList.add('gift-card-logo');\n var giftCardNameP = document.createElement('p');\n giftCardNameP.textContent = giftCardData.name;\n brandContainer.appendChild(giftCardImg);\n brandContainer.appendChild(giftCardNameP);\n var giftCardAction = document.createElement('div');\n giftCardAction.classList.add('gift-card-action');\n var brandAndRemoveActionWrapper = document.createElement('div');\n brandAndRemoveActionWrapper.classList.add('wrapper');\n brandAndRemoveActionWrapper.appendChild(brandContainer);\n brandAndRemoveActionWrapper.appendChild(giftCardAction);\n var giftCardAmountDiv = document.createElement('div');\n giftCardAmountDiv.classList.add('wrapper');\n var amountLabel = document.createElement('p');\n amountLabel.textContent = window.deductedBalanceGiftCardResource;\n var amountValue = document.createElement('strong');\n amountValue.textContent = card.discountedAmount ? \"-\".concat(card.discountedAmount) : '';\n giftCardAmountDiv.appendChild(amountLabel);\n giftCardAmountDiv.appendChild(amountValue);\n giftCardDiv.appendChild(brandAndRemoveActionWrapper);\n giftCardDiv.appendChild(giftCardAmountDiv);\n giftCardsList.appendChild(giftCardDiv);\n giftCardAddButton.style.display = 'block';\n removeGiftCardFormListeners();\n}\nfunction createElementsToShowRemainingGiftCardAmount() {\n var renderedRemainingAmountEndSpan = document.getElementById('remainingAmountEndSpan');\n var renderedDiscountedAmountEndSpan = document.getElementById('discountedAmountEndSpan');\n if (renderedRemainingAmountEndSpan && renderedDiscountedAmountEndSpan) {\n renderedRemainingAmountEndSpan.innerText = store.partialPaymentsOrderObj.remainingAmountFormatted;\n renderedDiscountedAmountEndSpan.innerText = store.partialPaymentsOrderObj.totalDiscountedAmount;\n return;\n }\n var mainContainer = document.createElement('div');\n var remainingAmountContainer = document.createElement('div');\n var remainingAmountStart = document.createElement('div');\n var remainingAmountEnd = document.createElement('div');\n var discountedAmountContainer = document.createElement('div');\n var discountedAmountStart = document.createElement('div');\n var discountedAmountEnd = document.createElement('div');\n var remainingAmountStartP = document.createElement('p');\n var remainingAmountEndP = document.createElement('p');\n var discountedAmountStartP = document.createElement('p');\n var discountedAmountEndP = document.createElement('p');\n var remainingAmountStartSpan = document.createElement('span');\n var discountedAmountStartSpan = document.createElement('span');\n var remainingAmountEndSpan = document.createElement('span');\n remainingAmountEndSpan.id = 'remainingAmountEndSpan';\n var discountedAmountEndSpan = document.createElement('span');\n discountedAmountEndSpan.id = 'discountedAmountEndSpan';\n remainingAmountContainer.classList.add('row', 'grand-total', 'leading-lines');\n remainingAmountStart.classList.add('col-6', 'start-lines');\n remainingAmountEnd.classList.add('col-6', 'end-lines');\n remainingAmountStartP.classList.add('order-receipt-label');\n discountedAmountContainer.classList.add('row', 'grand-total', 'leading-lines');\n discountedAmountStart.classList.add('col-6', 'start-lines');\n discountedAmountEnd.classList.add('col-6', 'end-lines');\n discountedAmountStartP.classList.add('order-receipt-label');\n remainingAmountEndP.classList.add('text-right');\n discountedAmountEndP.classList.add('text-right');\n discountedAmountContainer.id = 'discountedAmountContainer';\n remainingAmountContainer.id = 'remainingAmountContainer';\n remainingAmountStartSpan.innerText = window.remainingAmountGiftCardResource;\n discountedAmountStartSpan.innerText = window.discountedAmountGiftCardResource;\n remainingAmountEndSpan.innerText = store.partialPaymentsOrderObj.remainingAmountFormatted;\n discountedAmountEndSpan.innerText = store.partialPaymentsOrderObj.totalDiscountedAmount;\n remainingAmountContainer.appendChild(remainingAmountStart);\n remainingAmountContainer.appendChild(remainingAmountEnd);\n remainingAmountStart.appendChild(remainingAmountStartP);\n discountedAmountContainer.appendChild(discountedAmountStart);\n discountedAmountContainer.appendChild(discountedAmountEnd);\n discountedAmountStart.appendChild(discountedAmountStartP);\n remainingAmountEnd.appendChild(remainingAmountEndP);\n remainingAmountStartP.appendChild(remainingAmountStartSpan);\n discountedAmountEnd.appendChild(discountedAmountEndP);\n discountedAmountStartP.appendChild(discountedAmountStartSpan);\n remainingAmountEndP.appendChild(remainingAmountEndSpan);\n discountedAmountEndP.appendChild(discountedAmountEndSpan);\n var pricingContainer = document.querySelector('.card-body.order-total-summary');\n mainContainer.id = 'giftCardInformation';\n mainContainer.appendChild(discountedAmountContainer);\n mainContainer.appendChild(remainingAmountContainer);\n pricingContainer.appendChild(mainContainer);\n}\nfunction showGiftCardInfoMessage() {\n var messageText = store.partialPaymentsOrderObj.message;\n var _getGiftCardElements10 = getGiftCardElements(),\n giftCardsInfoMessageContainer = _getGiftCardElements10.giftCardsInfoMessageContainer;\n giftCardsInfoMessageContainer.innerHTML = '';\n giftCardsInfoMessageContainer.classList.remove('gift-cards-info-message-container');\n if (!messageText) return;\n var giftCardsInfoMessage = document.createElement('div');\n giftCardsInfoMessage.classList.add('adyen-checkout__alert-message', 'adyen-checkout__alert-message--warning');\n giftCardsInfoMessage.setAttribute('role', 'alert');\n var infoMessage = document.createElement('span');\n infoMessage.textContent = messageText;\n giftCardsInfoMessage.appendChild(infoMessage);\n giftCardsInfoMessageContainer.appendChild(giftCardsInfoMessage);\n giftCardsInfoMessageContainer.classList.add('gift-cards-info-message-container');\n}\nmodule.exports = {\n removeGiftCards: removeGiftCards,\n renderAddedGiftCard: renderAddedGiftCard,\n attachGiftCardAddButtonListener: attachGiftCardAddButtonListener,\n getGiftCardElements: getGiftCardElements,\n showGiftCardWarningMessage: showGiftCardWarningMessage,\n createElementsToShowRemainingGiftCardAmount: createElementsToShowRemainingGiftCardAmount,\n renderGiftCardSelectForm: renderGiftCardSelectForm,\n showGiftCardInfoMessage: showGiftCardInfoMessage,\n giftCardBrands: giftCardBrands,\n clearGiftCardsContainer: clearGiftCardsContainer,\n attachGiftCardCancelListener: attachGiftCardCancelListener,\n showGiftCardCancelButton: showGiftCardCancelButton\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js?"); /***/ }), @@ -406,7 +406,7 @@ eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); +eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n DISABLED_SUBMIT_BUTTON_METHODS: ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay', 'cashapp'],\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); /***/ }), diff --git a/cartridges/int_adyen_SFRA/cartridge/static/default/js/constants.js b/cartridges/int_adyen_SFRA/cartridge/static/default/js/constants.js index 75f6bf21c..0bcb15de2 100644 --- a/cartridges/int_adyen_SFRA/cartridge/static/default/js/constants.js +++ b/cartridges/int_adyen_SFRA/cartridge/static/default/js/constants.js @@ -94,7 +94,7 @@ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); +eval("\n\n// Adyen constants\n\nmodule.exports = {\n METHOD_ADYEN: 'Adyen',\n METHOD_ADYEN_POS: 'AdyenPOS',\n METHOD_ADYEN_COMPONENT: 'AdyenComponent',\n RECEIVED: 'Received',\n NOTENOUGHBALANCE: 'NotEnoughBalance',\n SUCCESS: 'Success',\n GIFTCARD: 'giftcard',\n GIROPAY: 'giropay',\n APPLE_PAY: 'applepay',\n ACTIONTYPE: {\n QRCODE: 'qrCode'\n },\n DISABLED_SUBMIT_BUTTON_METHODS: ['paypal', 'paywithgoogle', 'googlepay', 'amazonpay', 'applepay', 'cashapp'],\n APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association'\n};\n\n//# sourceURL=webpack:///./cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js?"); /***/ }) diff --git a/cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml b/cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml index 241389da7..99319e43f 100644 --- a/cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml +++ b/cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml @@ -59,7 +59,7 @@ window.googleMerchantID = '${pdict.adyen.googleMerchantID}'; window.cardholderNameBool = '${pdict.adyen.cardholderNameBool}'; window.merchantAccount = '${pdict.adyen.merchantAccount}'; - window.customerEmail = '${customer?.profile?.email}'; + window.customerEmail = '${customer && customer.profile && customer.profile.email ? customer.profile.email : ''}'; var showStoreDetails = ${customer.authenticated && adyenRecurringPaymentsEnabled}; diff --git a/cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js b/cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js index a2e6c66ad..4aef4e43c 100644 --- a/cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js +++ b/cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js @@ -32,6 +32,7 @@ module.exports = { APPLEPAY: 'applepay', AMAZONPAY: 'amazonpay' }, + CAN_SKIP_SUMMARY_PAGE: ['applepay', 'cashapp'], PLATFORMS: { SFRA: 'SFRA', SG: 'SG' @@ -77,14 +78,15 @@ module.exports = { MAX_API_RETRIES: 3, GIFTCARD_EXPIRATION_MINUTES: 30, OMS_NAMESPACE: 'adyen_payment', + NOTIFICATION_PAYLOAD_DATA_SEPARATOR: ':', CHECKOUT_ENVIRONMENT_TEST: 'test', CHECKOUT_ENVIRONMENT_LIVE_EU: 'live', CHECKOUT_ENVIRONMENT_LIVE_US: 'live-us', CHECKOUT_ENVIRONMENT_LIVE_AU: 'live-au', CHECKOUT_ENVIRONMENT_LIVE_IN: 'live-in', CHECKOUT_COMPONENT_VERSION: { - SFRA: '5.40.0', + SFRA: '5.44.0', SG: '5.28.0' }, - VERSION: '23.2.1' + VERSION: '23.3.0' }; \ No newline at end of file diff --git a/cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js b/cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js index 752a9c525..605dd172c 100644 --- a/cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js +++ b/cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js @@ -139,10 +139,10 @@ function createPaymentRequest(args) { } } - //Set Apple Pay tokenisation - if (AdyenConfigs.getAdyenApplePayTokenisationEnabled() && AdyenHelper.isApplePay(paymentRequest.paymentMethod.type)) { + //Set tokenisation + if (AdyenConfigs.getAdyenTokenisationEnabled()) { paymentRequest.storePaymentMethod = true; - paymentRequest.recurringProcessingModel = 'CardOnFile'; + paymentRequest.recurringProcessingModel = constants.RECURRING_PROCESSING_MODEL.CARD_ON_FILE; } setPaymentTransactionType(paymentInstrument, paymentRequest.paymentMethod); diff --git a/cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js b/cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js index 770fa790f..88404169f 100644 --- a/cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js +++ b/cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js @@ -22,6 +22,7 @@ */ var Site = require('dw/system/Site'); var AuthenticationUtils = require('*/cartridge/scripts/libs/libAuthenticationUtils'); +var AdyenLogs = require('*/cartridge/scripts/adyenCustomLogs'); function check(request) { var baUser = Site.getCurrent().getCustomPreferenceValue('Adyen_notification_user'); var baPassword = Site.getCurrent().getCustomPreferenceValue('Adyen_notification_password'); @@ -31,6 +32,31 @@ function check(request) { } return AuthenticationUtils.checkGivenCredentials(baHeader, baUser, baPassword); } +function compareHmac(hmacSignature, merchantSignature) { + var bitwiseComparison; + if (hmacSignature.length !== merchantSignature.length) { + return false; + } + for (var i = 0; i < hmacSignature.length; i++) { + bitwiseComparison |= hmacSignature.charCodeAt(i) ^ merchantSignature.charCodeAt(i); + } + return bitwiseComparison === 0; +} +; +function validateHmacSignature(request) { + var notificationData = request.form; + var hmacSignature = notificationData['additionalData.hmacSignature']; + var merchantSignature = AuthenticationUtils.calculateHmacSignature(request); + // Checking for timing attacks + if (compareHmac(hmacSignature, merchantSignature)) { + return true; + } + ; + AdyenLogs.error_log("HMAC signatures mismatch, the notification request is not valid"); + return false; +} +; module.exports = { - check: check + check: check, + validateHmacSignature: validateHmacSignature }; \ No newline at end of file diff --git a/cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js b/cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js index 32d74aea0..d04bf68b7 100644 --- a/cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js +++ b/cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js @@ -121,6 +121,7 @@ function handle(customObj) { AdyenLogs.info_log("Order ".concat(order.orderNo, " updated to status PAID.")); result.SubmitOrder = true; } + order.custom.Adyen_eventCode = customObj.custom.eventCode; order.custom.Adyen_value = amountPaid.toString(); } else { AdyenLogs.info_log("Authorization for order ".concat(order.orderNo, " was not successful - no update.")); @@ -215,7 +216,6 @@ function handle(customObj) { if (empty(order.custom.Adyen_pspReference) && !empty(customObj.custom.pspReference)) { order.custom.Adyen_pspReference = customObj.custom.pspReference; } - order.custom.Adyen_eventCode = customObj.custom.eventCode; // Add a note with all details order.addNote('Adyen Payment Notification', createLogMessage(customObj)); diff --git a/cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js b/cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js index 5719ea139..0541e12c7 100644 --- a/cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js +++ b/cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js @@ -60,7 +60,7 @@ function processNotifications( /* pdict */ order = handlerResult.Order; if (!handlerResult.status || handlerResult.status === PIPELET_ERROR) { // Only CREATED orders can be failed - if (order === null || order.status !== dw.order.Order.ORDER_STATUS_CREATED || handlerResult.RefusedHpp) { + if (order === null || order.status.value !== dw.order.Order.ORDER_STATUS_CREATED || handlerResult.RefusedHpp) { continue; } // Refused payments which are made with using Adyen payment method are diff --git a/cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js b/cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js index 361187aa2..0c27e074f 100644 --- a/cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js +++ b/cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js @@ -22,6 +22,12 @@ */ var StringUtils = require('dw/util/StringUtils'); +var Encoding = require('dw/crypto/Encoding'); +var Mac = require('dw/crypto/Mac'); +var Bytes = require('dw/util/Bytes'); +var constants = require('*/cartridge/adyenConstants/constants'); +var AdyenLogs = require('*/cartridge/scripts/adyenCustomLogs'); +var AdyenConfigs = require('*/cartridge/scripts/util/adyenConfigs'); /** * @@ -42,6 +48,33 @@ function checkGivenCredentials(baHeader, baUser, baPassword) { } return false; } +function constructPayload(notificationData) { + var signedDataList = []; + signedDataList.push(notificationData.pspReference); + signedDataList.push(notificationData.originalReference); + signedDataList.push(notificationData.merchantAccountCode); + signedDataList.push(notificationData.merchantReference); + signedDataList.push(notificationData.value); + signedDataList.push(notificationData.currency); + signedDataList.push(notificationData.eventCode); + signedDataList.push(notificationData.success); + return signedDataList.join(constants.NOTIFICATION_PAYLOAD_DATA_SEPARATOR); +} +; +function calculateHmacSignature(request) { + try { + var hmacKey = Encoding.fromHex(new Bytes(AdyenConfigs.getAdyenHmacKey(), 'UTF-8')); + var payload = constructPayload(request.form); + var macSHA256 = new Mac(Mac.HMAC_SHA_256); + var merchantSignature = Encoding.toBase64(macSHA256.digest(payload, hmacKey)); + return merchantSignature; + } catch (e) { + AdyenLogs.fatal_log("Cannot calculate HMAC signature: ".concat(e.toString(), " in ").concat(e.fileName, ":").concat(e.lineNumber)); + } + ; +} +; module.exports = { - checkGivenCredentials: checkGivenCredentials + checkGivenCredentials: checkGivenCredentials, + calculateHmacSignature: calculateHmacSignature }; \ No newline at end of file diff --git a/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js b/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js index 1afa7611a..e60cf0d66 100644 --- a/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js +++ b/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js @@ -45,6 +45,9 @@ var adyenConfigsObj = (_adyenConfigsObj = { getAdyenNotificationPassword: function getAdyenNotificationPassword() { return getCustomPreference('Adyen_notification_password'); }, + getAdyenHmacKey: function getAdyenHmacKey() { + return getCustomPreference('Adyen_Hmac_Key'); + }, getAdyenRecurringPaymentsEnabled: function getAdyenRecurringPaymentsEnabled() { return getCustomPreference('AdyenOneClickEnabled'); }, @@ -78,24 +81,25 @@ var adyenConfigsObj = (_adyenConfigsObj = { getAdyenFrontendRegion: function getAdyenFrontendRegion() { return getCustomPreference('Adyen_Frontend_Region').value; }, - getAdyenApplePayTokenisationEnabled: function getAdyenApplePayTokenisationEnabled() { - return getCustomPreference('AdyenApplePayTokenisationEnabled'); + getAdyenTokenisationEnabled: function getAdyenTokenisationEnabled() { + return getCustomPreference('AdyenTokenisationEnabled'); }, getAdyenSalePaymentMethods: function getAdyenSalePaymentMethods() { return getCustomPreference('AdyenSalePaymentMethods') ? getCustomPreference('AdyenSalePaymentMethods').toString().split(',') : ''; }, getAdyenBasketFieldsEnabled: function getAdyenBasketFieldsEnabled() { return getCustomPreference('AdyenBasketFieldsEnabled'); + }, + getAdyenCardholderNameEnabled: function getAdyenCardholderNameEnabled() { + return getCustomPreference('AdyenCardHolderName_enabled'); + }, + getAdyenLevel23DataEnabled: function getAdyenLevel23DataEnabled() { + return getCustomPreference('AdyenLevel23DataEnabled'); + }, + getAdyenLevel23CommodityCode: function getAdyenLevel23CommodityCode() { + return getCustomPreference('AdyenLevel23_CommodityCode'); } -}, _defineProperty(_adyenConfigsObj, "getAdyenApplePayTokenisationEnabled", function getAdyenApplePayTokenisationEnabled() { - return getCustomPreference('AdyenApplePayTokenisationEnabled'); -}), _defineProperty(_adyenConfigsObj, "getAdyenCardholderNameEnabled", function getAdyenCardholderNameEnabled() { - return getCustomPreference('AdyenCardHolderName_enabled'); -}), _defineProperty(_adyenConfigsObj, "getAdyenLevel23DataEnabled", function getAdyenLevel23DataEnabled() { - return getCustomPreference('AdyenLevel23DataEnabled'); -}), _defineProperty(_adyenConfigsObj, "getAdyenLevel23CommodityCode", function getAdyenLevel23CommodityCode() { - return getCustomPreference('AdyenLevel23_CommodityCode'); -}), _defineProperty(_adyenConfigsObj, "getAdyenSalePaymentMethods", function getAdyenSalePaymentMethods() { +}, _defineProperty(_adyenConfigsObj, "getAdyenSalePaymentMethods", function getAdyenSalePaymentMethods() { return getCustomPreference('AdyenSalePaymentMethods') ? getCustomPreference('AdyenSalePaymentMethods').toString().split(',') : []; }), _defineProperty(_adyenConfigsObj, "getAdyenGivingEnabled", function getAdyenGivingEnabled() { return getCustomPreference('AdyenGiving_enabled'); diff --git a/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js b/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js index 2f31174e7..fc4147cf5 100644 --- a/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js +++ b/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js @@ -538,6 +538,13 @@ var adyenHelperObj = { } else if (result.paymentMethod) { paymentInstrument.paymentTransaction.custom.Adyen_paymentMethod = JSON.stringify(result.paymentMethod.type); } + + // For authenticated shoppers we are setting the token on other place already + // SFRA throws an error if you try to set token again that's why this check is added + var tokenAlreadyExists = paymentInstrument.getCreditCardToken(); + if (!tokenAlreadyExists && result.additionalData && result.additionalData['recurring.recurringDetailReference']) { + paymentInstrument.setCreditCardToken(result.additionalData['recurring.recurringDetailReference']); + } paymentInstrument.paymentTransaction.custom.authCode = result.resultCode ? result.resultCode : ''; order.custom.Adyen_value = '0'; if (result.donationToken) { @@ -547,6 +554,9 @@ var adyenHelperObj = { paymentInstrument.paymentTransaction.custom.Adyen_log = JSON.stringify(result); return true; }, + getFirstTwoNumbersFromYear: function getFirstTwoNumbersFromYear() { + return Math.floor(new Date().getFullYear() / 100); + }, // converts the currency value for the Adyen Checkout API getCurrencyValueForApi: function getCurrencyValueForApi(amount) { var currencyCode = dwutil.Currency.getCurrency(amount.currencyCode); diff --git a/jest/sfccCartridgeMocks.js b/jest/sfccCartridgeMocks.js index 603e13930..bceeec2cc 100644 --- a/jest/sfccCartridgeMocks.js +++ b/jest/sfccCartridgeMocks.js @@ -92,7 +92,10 @@ jest.mock('*/cartridge/scripts/adyenZeroAuth', () => { }, {virtual: true}); jest.mock('*/cartridge/scripts/checkNotificationAuth', () => { - return { check: jest.fn(() => true) }; + return { + check: jest.fn(() => true), + validateHmacSignature: jest.fn(() => true), + }; }, {virtual: true}); jest.mock('*/cartridge/scripts/handleNotify', () => { @@ -226,6 +229,7 @@ jest.mock('*/cartridge/scripts/util/adyenHelper', () => ({ getDonationAmounts: jest.fn(() => [10, 20, 30]), getCardToken: jest.fn(() => 'mocked_token'), getSFCCCardType: jest.fn(() => 'mocked_cardType'), + getFirstTwoNumbersFromYear: jest.fn(() => 20), createAdyenCheckoutResponse: jest.fn(() => ({isFinal: true, isSuccessful: false})), getCustomer: jest.fn(() => {}), createSignature: jest.fn( () => 'mocked_signature'), @@ -253,25 +257,26 @@ jest.mock('*/cartridge/scripts/util/adyenConfigs', () => { return { getAdyenEnvironment: jest.fn(() => 'TEST'), getCreditCardInstallments: jest.fn(() => true), - getAdyenApplePayTokenisationEnabled: jest.fn(() => true), + getAdyenTokenisationEnabled: jest.fn(() => true), getAdyenClientKey: jest.fn(() => 'mocked_client_key'), getGoogleMerchantID: jest.fn(() => 'mocked_google_merchant_id'), getAdyenCardholderNameEnabled: jest.fn(() => true), getAdyenPayPalIntent: jest.fn(() => 'mocked_intent'), getAdyenMerchantAccount: jest.fn(() => 'mocked_merchant_account'), getAdyenGivingEnabled: jest.fn(() => true), - getAdyenGivingCharityName: jest.fn(() => 'mocked_charity_name'), + getAdyenGivingCharityName: jest.fn(() => '%mocked_charity_name%'), getAdyenGivingCharityWebsite: jest.fn( () => 'mocked_charity_website', ), getAdyenGivingCharityDescription: jest.fn( - () => 'mocked_charity_description', + () => '%mocked_charity_description%', ), getAdyenGivingBackgroundUrl: jest.fn( () => 'mocked_background_url', ), getAdyenGivingLogoUrl: jest.fn(() => 'mocked_logo_url'), getAdyenSFRA6Compatibility: jest.fn(() => false), + getAdyenHmacKey : jest.fn(() => 'mocked_hmacKey'), getAdyenBasketFieldsEnabled: jest.fn(() => false), getAdyen3DS2Enabled: jest.fn(() => false), getAdyenLevel23DataEnabled: jest.fn(() => false), diff --git a/metadata/site_import/meta/system-objecttype-extensions.xml b/metadata/site_import/meta/system-objecttype-extensions.xml index 353d3a80f..9b78574cb 100644 --- a/metadata/site_import/meta/system-objecttype-extensions.xml +++ b/metadata/site_import/meta/system-objecttype-extensions.xml @@ -36,14 +36,6 @@ false 0 - - Adyen Customer email - Confirmation email to shopper - text - false - false - 0 - Adyen donation amount Amount donated via Adyen Giving @@ -384,9 +376,9 @@ false false - - Tokenize Apple Pay payments - Tokenize payment details for Apple Pay + + Tokenize payments + Tokenize payment details for all payment methods boolean false false @@ -487,6 +479,15 @@ 0 0 + + Adyen HMAC Key + Adyen HMAC Key used optionally for notification validation + string + false + false + 0 + 0 + Payment methods with SALE flow Only applicable for Salesforce OMS. List the txvariants with Authorisation type SALE comma separated (e.g. ideal,sepadirectdebit,paypal). @@ -661,7 +662,7 @@ - + diff --git a/package-lock.json b/package-lock.json index d46499019..fc6d5cb50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "int_adyen_SFRA", - "version": "23.2.1", + "version": "23.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a6529a876..a2354e0e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "int_adyen_SFRA", - "version": "23.2.1", + "version": "23.3.0", "description": "Adyen's official cartridge for SFRA and controllers-based SiteGenesis", "main": "index.js", "paths": { @@ -17,7 +17,7 @@ "uploadCartridgeSG": "sgmf-scripts --uploadCartridge [YOUR_WORKING_DIRECTORY]/adyen-salesforce-commerce-cloud/src/cartridges/adyen_controllers_changes/app_storefront_controllers_changes && sgmf-scripts --uploadCartridge [YOUR_WORKING_DIRECTORY]/adyen-salesforce-commerce-cloud/src/cartridges/adyen_controllers_changes/app_storefront_core_changes", "watch": "sgmf-scripts --watch", "compile:js": "sgmf-scripts --compile js", - "transpile": "babel ./src/cartridges -d ./cartridges --copy-files --no-copy-ignored --extensions '.js,.test.js,.snap'", + "transpile": "babel ./src/cartridges -d ./cartridges --copy-files --no-copy-ignored --extensions .js,.test.js,.snap", "build": "npm run transpile && npm run compile:js && npm run uploadCartridge", "test": "jest ./src", "test:watch": "jest ./src --watch", diff --git a/src/cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css b/src/cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css index 90898a672..156893734 100644 --- a/src/cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css +++ b/src/cartridges/bm_adyen/cartridge/static/default/css/configurationSettings.css @@ -168,6 +168,10 @@ padding-left: 30px; } +#hmacKey{ + padding-left: 30px; +} + .line-divider{ padding-left: 48px; padding-right: 51px; @@ -405,6 +409,28 @@ ul{ margin-right: 48px; } +.log-list{ + margin-left: 17px; + margin-right: 48px; +} + +.log-list > li { + border: 1px solid #ced4da; + color: #34444f; + height: 95px; + border-bottom: none; + padding-bottom: 110px; +} + +.log-list > li .form-check-input{ + margin-left: 23px; +} + +.log-list .log-checkbox-fatal { + border-bottom: 1px solid #ced4da; + padding-bottom: 95px; +} + .draggable-list li { background-color: #fff; display: flex; diff --git a/src/cartridges/bm_adyen/cartridge/static/default/icons/tools.svg b/src/cartridges/bm_adyen/cartridge/static/default/icons/tools.svg new file mode 100644 index 000000000..999e4da9c --- /dev/null +++ b/src/cartridges/bm_adyen/cartridge/static/default/icons/tools.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js b/src/cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js index 0fd878624..6e5415edc 100644 --- a/src/cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js +++ b/src/cartridges/bm_adyen/cartridge/static/default/js/adyenSettings.js @@ -17,16 +17,30 @@ const expressPaymentMethods = [ document.addEventListener('DOMContentLoaded', () => { const form = document.querySelector('#settingsForm'); + const troubleshootingForm = document.querySelector('#troubleshootingForm'); const submitButton = document.querySelector('#settingsFormSubmitButton'); const cancelButton = document.querySelector('#settingsFormCancelButton'); const formButtons = Array.from(document.getElementsByClassName('formButton')); const testConnectionButton = document.querySelector('#testConnectionButton'); const togglePassword = document.querySelector('#togglePassword'); + const toggleHmacKey = document.querySelector('#toggleHmacKey'); const toggleApi = document.querySelector('#toggleApi'); const formBody = document.querySelector('#formBody'); const password = document.querySelector('#notificationsPassword'); + const hmacKey = document.querySelector('#hmacKey'); const merchAccount = document.getElementById('merchantAccount'); const classicPageButton = document.querySelector('#classicButton'); + const debugLogCheckbox = document.getElementById('debugLogs'); + const infoLogCheckbox = document.getElementById('infoLogs'); + const errorLogCheckbox = document.getElementById('errorLogs'); + const fatalLogCheckbox = document.getElementById('fatalLogs'); + const troubleshootingCheckboxes = [ + debugLogCheckbox, + infoLogCheckbox, + errorLogCheckbox, + fatalLogCheckbox, + ]; + const downloadLogsButton = document.getElementById('downloadLogsButton'); const apiKeyVal = document.getElementById('apiKey'); const changedSettings = []; const isValid = 'is-valid'; @@ -169,6 +183,13 @@ document.addEventListener('DOMContentLoaded', () => { window.open(window.classicConfigPageUrl); } + function downloadFile(filePath) { + const link = document.createElement('a'); + link.href = filePath; + link.download = filePath.substr(filePath.lastIndexOf('/') + 1); + link.click(); + } + function enableformButtons() { formButtons.forEach((button) => { button.classList.remove('disabled'); @@ -217,6 +238,13 @@ document.addEventListener('DOMContentLoaded', () => { this.classList.toggle('bi-eye'); } + function showHmacKey() { + const type = + hmacKey.getAttribute('type') === 'password' ? 'text' : 'password'; + hmacKey.setAttribute('type', type); + this.classList.toggle('bi-eye'); + } + // open Adyen Giving Background upload page function uploadAdyenGivingBackground() { const openedWindow = window.open( @@ -289,6 +317,8 @@ document.addEventListener('DOMContentLoaded', () => { togglePassword.addEventListener('click', showPassword); + toggleHmacKey.addEventListener('click', showHmacKey); + toggleApi.addEventListener('click', showApiKey); adyenGivingBackground.addEventListener('click', uploadAdyenGivingBackground); @@ -303,6 +333,40 @@ document.addEventListener('DOMContentLoaded', () => { adyenGivingLogo.addEventListener('click', saveAndHideAlerts); + troubleshootingForm.addEventListener('input', () => { + downloadLogsButton.classList.add('disabled'); + troubleshootingCheckboxes.forEach((checkbox) => { + if (checkbox.checked) { + downloadLogsButton.classList.remove('disabled'); + downloadLogsButton.classList.add('enabled'); + } + }); + }); + + downloadLogsButton.addEventListener('click', () => { + (async () => { + const htmlContent = await (await fetch(window.logCenterUrl)).text(); + const doc = new DOMParser().parseFromString(htmlContent, 'text/html'); + const logLocations = Array.from(doc.body.getElementsByTagName('a')).map( + (log) => log.href, + ); + const logsToDownload = []; + + troubleshootingCheckboxes.forEach((checkbox) => { + if (checkbox.checked) { + // eslint-disable-next-line + logsToDownload.push(logLocations.filter((name) =>name.includes(`custom-Adyen_${checkbox.value}`)),); + } + }); + const selectedLogs = Array.prototype.concat.apply([], logsToDownload); + selectedLogs.forEach((item) => downloadFile(item)); + downloadLogsButton.classList.add('disabled'); + troubleshootingCheckboxes.forEach((checkbox) => { + checkbox.checked = false; + }); + })(); + }); + // add event listener to maintain form updates form.addEventListener('change', (event) => { const { name } = event.target; diff --git a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml index 211f9f51c..345074b60 100644 --- a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml +++ b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/navigationCard.isml @@ -34,5 +34,9 @@ Additional settings + + + Troubleshooting + diff --git a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml index f66005ac7..16cced87e 100644 --- a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml +++ b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/optionalSettings.isml @@ -51,18 +51,18 @@
- + - To tokenize payment details for Apple Pay, make sure you have enabled Apple Pay in Adyen Customer Area. + To tokenize payment details for all payment methods, make sure you have this feature enabled.
- - + +
- - + +
diff --git a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/troubleshooting.isml b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/troubleshooting.isml new file mode 100644 index 000000000..45094c7ad --- /dev/null +++ b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/troubleshooting.isml @@ -0,0 +1,57 @@ + + +
+
+
+ Troubleshooting +
+ +
You can download Adyen Logs from here.
+
+
+
+ + + The logs are generated from the last 14 days. The downloaded files don’t include visuals, just text. + +
+
+
    +
  • + + + + For checking order data, order create date delay, current date, and service config calls to Adyen Checkout API. + +
  • +
  • + + + + For informational messages about payment results, webhooks processing, authorization, and order updates. + +
  • +
  • + + + + For errors related to configuration, payment, order processing, card details, and components. + +
  • +
  • + + + + For severe errors preventing the cartridge from functioning properly. + +
  • +
+
+
+
+ +
+
+
+
+
diff --git a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml index 013e045ea..cc70b092d 100644 --- a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml +++ b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settingCards/webhookSettings.isml @@ -34,6 +34,18 @@ placeholder="•••••••••••••••" value="${AdyenConfigs.getAdyenNotificationPassword()}"> +
+ + This is the HMAC key you created under the Developers section in the Customer Area. + + + +
+ +
+
diff --git a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml index 53fc08fb4..38d1d3e48 100644 --- a/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml +++ b/src/cartridges/bm_adyen/cartridge/templates/default/adyenSettings/settings.isml @@ -16,6 +16,7 @@ const backgroundImageStorage = "!id!c_AdyenGiving_backgroundUrl!instance_type!sandbox!group_id!Adyen"; const logoImageStorage = "!id!c_AdyenGiving_logoUrl!instance_type!sandbox!group_id!Adyen"; window.classicConfigPageUrl = token +"#" + commonPath + classicPagePath + classicPageSubpath; + window.logCenterUrl = "/on/demandware.servlet/webdav/Sites/Logs";
@@ -60,6 +61,9 @@ +
+ + diff --git a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js index 4cd927610..6ab787e9c 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyenGiving.js @@ -40,9 +40,9 @@ function getAmounts() { const donationConfig = { amounts: getAmounts(), backgroundUrl: adyenGivingBackgroundUrl, - description: charityDescription, + description: decodeURI(charityDescription), logoUrl: adyenGivingLogoUrl, - name: charityName, + name: decodeURI(charityName), url: charityWebsite, showCancelButton: true, onDonate: handleOnDonate, diff --git a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js index 2c6d371eb..af1c5aa99 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/checkoutConfiguration.js @@ -142,6 +142,27 @@ function handlePartialPaymentSuccess() { createElementsToShowRemainingGiftCardAmount(); } +function makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject) { + const brandSelect = document.getElementById('giftCardSelect'); + const selectedBrandIndex = brandSelect.selectedIndex; + const giftcardBrand = brandSelect.options[selectedBrandIndex].text; + const partialPaymentRequest = { + paymentMethod: giftCardData, + amount: giftcardBalance, + partialPaymentsOrder: { + pspReference: store.adyenOrderData.pspReference, + orderData: store.adyenOrderData.orderData, + }, + giftcardBrand, + }; + const partialPaymentResponse = makePartialPayment(partialPaymentRequest); + if (partialPaymentResponse?.error) { + reject(); + } else { + handlePartialPaymentSuccess(); + } +} + function getGiftCardConfig() { let giftcardBalance; return { @@ -214,38 +235,24 @@ function getGiftCardConfig() { // Make a POST /orders request // Create an order for the total transaction amount const giftCardData = requestData.paymentMethod; - $.ajax({ - type: 'POST', - url: window.partialPaymentsOrderUrl, - data: JSON.stringify(requestData), - contentType: 'application/json; charset=utf-8', - async: false, - success: (data) => { - if (data.resultCode === 'Success') { - // make payments call including giftcard data and order data - const brandSelect = document.getElementById('giftCardSelect'); - const selectedBrandIndex = brandSelect.selectedIndex; - const giftcardBrand = brandSelect.options[selectedBrandIndex].text; - const partialPaymentRequest = { - paymentMethod: giftCardData, - amount: giftcardBalance, - partialPaymentsOrder: { - pspReference: data.pspReference, - orderData: data.orderData, - }, - giftcardBrand, - }; - const partialPaymentResponse = makePartialPayment( - partialPaymentRequest, - ); - if (partialPaymentResponse?.error) { - reject(); - } else { - handlePartialPaymentSuccess(); + if (store.adyenOrderData) { + makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject); + } else { + $.ajax({ + type: 'POST', + url: window.partialPaymentsOrderUrl, + data: JSON.stringify(requestData), + contentType: 'application/json; charset=utf-8', + async: false, + success: (data) => { + if (data.resultCode === 'Success') { + store.adyenOrderData = data; + // make payments call including giftcard data and order data + makeGiftcardPaymentRequest(giftCardData, giftcardBalance, reject); } - } - }, - }); + }, + }); + } }, onSubmit(state, component) { store.selectedMethod = state.data.paymentMethod.type; @@ -327,6 +334,17 @@ function getApplePayConfig() { }; } +function getCashAppConfig() { + return { + showPayButton: true, + onSubmit: (state, component) => { + $('#dwfrm_billing').trigger('submit'); + helpers.assignPaymentMethodValue(); + helpers.paymentFromComponent(state.data, component); + }, + }; +} + function getKlarnaConfig() { const { klarnaWidgetEnabled } = window; if (klarnaWidgetEnabled) { @@ -371,6 +389,7 @@ function setCheckoutConfiguration() { klarna: getKlarnaConfig(), klarna_account: getKlarnaConfig(), klarna_paynow: getKlarnaConfig(), + cashapp: getCashAppConfig(), }; } diff --git a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js index effa495ba..7851666a5 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/helpers.js @@ -1,4 +1,5 @@ const store = require('../../../../store'); +const constants = require('../constants'); function assignPaymentMethodValue() { const adyenPaymentMethod = document.querySelector('#adyenPaymentMethodName'); @@ -39,7 +40,7 @@ function paymentFromComponent(data, component = {}) { setOrderFormData(response); if (response.fullResponse?.action) { component.handleAction(response.fullResponse.action); - } else if (response.isApplePay) { + } else if (response.skipSummaryPage) { document.querySelector('#result').value = JSON.stringify(response); document.querySelector('#showConfirmationForm').submit(); } else if (response.paymentError || response.error) { @@ -72,13 +73,7 @@ function displaySelectedMethod(type) { : type; resetPaymentMethod(); - const disabledSubmitButtonMethods = [ - 'paypal', - 'paywithgoogle', - 'googlepay', - 'amazonpay', - 'applepay', - ]; + const disabledSubmitButtonMethods = constants.DISABLED_SUBMIT_BUTTON_METHODS; if (window.klarnaWidgetEnabled) { disabledSubmitButtonMethods.push('klarna'); } diff --git a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js index 6a2a329c5..2ee79acdc 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/makePartialPayment.js @@ -18,6 +18,7 @@ function makePartialPayment(requestData) { } else { const { giftCards, ...rest } = response; store.checkout.options.amount = rest.remainingAmount; + store.adyenOrderData = rest.partialPaymentsOrder; store.partialPaymentsOrderObj = rest; sessionStorage.setItem('partialPaymentsObj', JSON.stringify(rest)); store.addedGiftCards = giftCards; diff --git a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js index 153ff5bc2..57764c654 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGenericComponent.js @@ -268,7 +268,15 @@ document.getElementById('email')?.addEventListener('change', (e) => { // used by renderGiftCardComponent.js document.addEventListener(INIT_CHECKOUT_EVENT, () => { - initializeCheckout(); + const handleCheckoutEvent = async () => { + if (Object.keys(store.componentsObj).length !== 0) { + await unmountComponents(); + } + + await initializeCheckout(); + }; + + handleCheckoutEvent(); }); /** diff --git a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js index 0a8ed173c..37a35b292 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/adyen_checkout/renderGiftcardComponent.js @@ -90,6 +90,7 @@ function removeGiftCards() { store.checkout.options.amount = res.amount; store.partialPaymentsOrderObj = null; store.addedGiftCards = null; + store.adyenOrderData = null; giftCardsInfoMessageContainer.innerHTML = ''; giftCardsInfoMessageContainer.classList.remove( diff --git a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js index 6f5d121fc..ac00b82e5 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/client/default/js/constants.js @@ -13,6 +13,14 @@ module.exports = { ACTIONTYPE: { QRCODE: 'qrCode', }, + DISABLED_SUBMIT_BUTTON_METHODS: [ + 'paypal', + 'paywithgoogle', + 'googlepay', + 'amazonpay', + 'applepay', + 'cashapp', + ], APPLE_DOMAIN_URL: '/.well-known/apple-developer-merchantid-domain-association', }; diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/__tests__/__snapshots__/paymentFromComponent.test.js.snap b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/__tests__/__snapshots__/paymentFromComponent.test.js.snap index b5c672435..0af9414fe 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/__tests__/__snapshots__/paymentFromComponent.test.js.snap +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/__tests__/__snapshots__/paymentFromComponent.test.js.snap @@ -1,13 +1,13 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Payment from Component should authorize express payment 1`] = ` +exports[`Payment from Component should authorize express payment with skipping summary page 1`] = ` [ [ { - "isApplePay": true, "orderNo": "mocked_orderNo", "orderToken": "mocked_orderToken", "resultCode": "Authorised", + "skipSummaryPage": true, }, ], ] @@ -27,10 +27,10 @@ exports[`Payment from Component should return json response 1`] = ` [ [ { - "isApplePay": true, "orderNo": "mocked_orderNo", "orderToken": "mocked_orderToken", "resultCode": "Authorised", + "skipSummaryPage": false, }, ], ] diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/__tests__/paymentFromComponent.test.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/__tests__/paymentFromComponent.test.js index 32d72e52d..c5b3f44bf 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/__tests__/paymentFromComponent.test.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/__tests__/paymentFromComponent.test.js @@ -40,7 +40,8 @@ describe('Payment from Component', () => { paymentFromComponent(req, res, jest.fn()); expect(res.json.mock.calls).toMatchSnapshot(); }); - it('should authorize express payment', () => { + it('should authorize express payment with skipping summary page', () => { + req.form.data.paymentMethod.type = 'applepay'; req.form.data.paymentMethod.paymentType = 'express'; req.form.data = JSON.stringify(req.form.data); paymentFromComponent(req, res, jest.fn()); diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js index bf2410bac..2e3c1dcb9 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/notify.js @@ -1,19 +1,29 @@ const Transaction = require('dw/system/Transaction'); const checkAuth = require('*/cartridge/scripts/checkNotificationAuth'); const handleNotify = require('*/cartridge/scripts/handleNotify'); +const AdyenConfigs = require('*/cartridge/scripts/util/adyenConfigs'); /** * Called by Adyen to update status of payments. It should always display [accepted] when finished. */ + +function handleHmacVerification(hmacKey, req) { + if (hmacKey) { + return checkAuth.validateHmacSignature(req); + } + return true; +} + function notify(req, res, next) { const status = checkAuth.check(req); - if (!status) { + const hmacKey = AdyenConfigs.getAdyenHmacKey(); + const isHmacValid = handleHmacVerification(hmacKey, req); + if (!status || !isHmacValid) { res.render('/adyen/error'); return {}; } Transaction.begin(); const notificationResult = handleNotify.notify(req.form); - if (notificationResult.success) { Transaction.commit(); res.render('/notify'); diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js index be64ff013..e26220306 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/partialPayment.js @@ -64,6 +64,10 @@ function makePartialPayment(req, res, next) { const partialPaymentsOrderData = JSON.parse( session.privacy.partialPaymentData, ); + partialPaymentsOrderData.order = { + orderData: response?.order?.orderData, + pspReference: response?.order?.pspReference, + }; partialPaymentsOrderData.remainingAmount = response?.order?.remainingAmount; session.privacy.partialPaymentData = JSON.stringify( partialPaymentsOrderData, diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js index 8a59cdf77..500fb1fa5 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/paymentFromComponent.js @@ -144,6 +144,16 @@ function handleExpressPayment(reqDataObj, currentBasket) { } } +function canSkipSummaryPage(reqDataObj) { + if ( + constants.CAN_SKIP_SUMMARY_PAGE.indexOf(reqDataObj.paymentMethod?.type) >= 0 + ) { + return true; + } + + return false; +} + /** * Make a payment from inside a component, skipping the summary page. (paypal, QRcodes, MBWay) */ @@ -213,9 +223,8 @@ function paymentFromComponent(req, res, next) { handleRefusedResultCode(result, reqDataObj, order); } - if (AdyenHelper.isApplePay(reqDataObj.paymentMethod?.type)) { - result.isApplePay = true; - } + // Check if summary page can be skipped in case payment is already authorized + result.skipSummaryPage = canSkipSummaryPage(reqDataObj); result.orderNo = order.orderNo; result.orderToken = order.orderToken; diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js index 1fc0a08ff..f6f2e2654 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation.js @@ -1,6 +1,7 @@ const URLUtils = require('dw/web/URLUtils'); const OrderMgr = require('dw/order/OrderMgr'); const Order = require('dw/order/Order'); +const Transaction = require('dw/system/Transaction'); const adyenCheckout = require('*/cartridge/scripts/adyenCheckout'); const constants = require('*/cartridge/adyenConstants/constants'); const payment = require('*/cartridge/controllers/middlewares/adyen/showConfirmation/payment'); @@ -57,6 +58,10 @@ function handlePaymentsDetailsResult( options, ); } + Transaction.wrap(() => { + order.custom.Adyen_pspReference = detailsResult.pspReference; + order.custom.Adyen_eventCode = detailsResult.resultCode; + }); return payment.handlePaymentError(order, 'placeOrder', options); } diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js index 289a0fb2e..5cc7b85b5 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/authorise.js @@ -1,6 +1,4 @@ -const Locale = require('dw/util/Locale'); const COHelpers = require('*/cartridge/scripts/checkout/checkoutHelpers'); -const OrderModel = require('*/cartridge/models/order'); const handleOrderConfirm = require('*/cartridge/controllers/middlewares/adyen/showConfirmation/order'); const payment = require('*/cartridge/controllers/middlewares/adyen/showConfirmation/payment'); @@ -10,8 +8,6 @@ function handleAuthorised( order, options, ) { - const { req } = options; - // custom fraudDetection const fraudDetectionStatus = { status: 'success' }; @@ -20,17 +16,10 @@ function handleAuthorised( if (placeOrderResult.error) { return payment.handlePaymentError(order, 'placeOrder', options); } - const currentLocale = Locale.getLocale(req.locale.id); - const orderModel = new OrderModel(order, { - countryCode: currentLocale.country, - }); - - // Save orderModel to custom object during session return handleOrderConfirm( adyenPaymentInstrument, detailsResult, order, - orderModel, options, ); } diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js index 496bafa25..42b5e9d9f 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmation/order.js @@ -8,11 +8,9 @@ function handleOrderConfirm( adyenPaymentInstrument, result, order, - orderModel, { res, next }, ) { Transaction.wrap(() => { - order.custom.Adyen_CustomerEmail = JSON.stringify(orderModel); AdyenHelper.savePaymentDetails(adyenPaymentInstrument, order, result); }); diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js index 5cea29b39..fd751435b 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/adyen/showConfirmationPaymentFromComponent/payment.js @@ -2,11 +2,9 @@ const OrderMgr = require('dw/order/OrderMgr'); const Order = require('dw/order/Order'); const Transaction = require('dw/system/Transaction'); const URLUtils = require('dw/web/URLUtils'); -const Locale = require('dw/util/Locale'); const Resource = require('dw/web/Resource'); const adyenCheckout = require('*/cartridge/scripts/adyenCheckout'); const COHelpers = require('*/cartridge/scripts/checkout/checkoutHelpers'); -const OrderModel = require('*/cartridge/models/order'); const AdyenHelper = require('*/cartridge/scripts/util/adyenHelper'); const AdyenConfigs = require('*/cartridge/scripts/util/adyenConfigs'); const constants = require('*/cartridge/adyenConstants/constants'); @@ -47,7 +45,7 @@ function handleAuthorisedPayment( order, result, adyenPaymentInstrument, - { req, res, next }, + { res, next }, ) { // custom fraudDetection const fraudDetectionStatus = { status: 'success' }; @@ -58,14 +56,7 @@ function handleAuthorisedPayment( return handlePaymentError(order, adyenPaymentInstrument, { res, next }); } - const currentLocale = Locale.getLocale(req.locale.id); - const orderModel = new OrderModel(order, { - countryCode: currentLocale.country, - }); - - // Save orderModel to custom object during session Transaction.wrap(() => { - order.custom.Adyen_CustomerEmail = JSON.stringify(orderModel); AdyenHelper.savePaymentDetails(adyenPaymentInstrument, order, result); }); @@ -107,6 +98,10 @@ function handlePaymentResult(result, order, adyenPaymentInstrument, options) { options, ); } + Transaction.wrap(() => { + order.custom.Adyen_pspReference = result.pspReference; + order.custom.Adyen_eventCode = result.resultCode; + }); return handlePaymentError(order, adyenPaymentInstrument, options); } @@ -132,7 +127,8 @@ function handlePayment(stateData, order, options) { if ( result && (JSON.stringify(result).indexOf('amazonpay') > -1 || - JSON.stringify(result).indexOf('applepay') > -1) + JSON.stringify(result).indexOf('applepay') > -1 || + JSON.stringify(result).indexOf('cashapp') > -1) ) { finalResult = JSON.parse(result); } else { diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/__tests__/__snapshots__/confirm.test.js.snap b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/__tests__/__snapshots__/confirm.test.js.snap index 5a795fab3..482684250 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/__tests__/__snapshots__/confirm.test.js.snap +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/__tests__/__snapshots__/confirm.test.js.snap @@ -9,8 +9,8 @@ exports[`Confirm should set view data 1`] = ` "adyenGivingAvailable": true, "adyenGivingBackgroundUrl": "mocked_background_url", "adyenGivingLogoUrl": "mocked_logo_url", - "charityDescription": "mocked_charity_description", - "charityName": "mocked_charity_name", + "charityDescription": "%25mocked_charity_description%25", + "charityName": "%25mocked_charity_name%25", "charityWebsite": "mocked_charity_website", "clientKey": "mocked_client_key", "donationAmounts": "{"currency":"EUR","values":[10,20,30]}", diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/__tests__/confirm.test.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/__tests__/confirm.test.js index c2abef2c6..015c0e84b 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/__tests__/confirm.test.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/__tests__/confirm.test.js @@ -2,7 +2,7 @@ let confirm; let req; let res; - +let viewData = {"adyen": {"adyenGivingAvailable": true, "adyenGivingBackgroundUrl": "mocked_background_url", "adyenGivingLogoUrl": "mocked_logo_url", "charityDescription": "%25mocked_charity_description%25", "charityName": "%25mocked_charity_name%25", "charityWebsite": "mocked_charity_website", "clientKey": "mocked_client_key", "donationAmounts": "{\"currency\":\"EUR\",\"values\":[10,20,30]}", "environment": "test", "orderToken": "mocked_token"}} beforeEach(() => { const { order } = require('../../index'); confirm = order.confirm; @@ -29,4 +29,8 @@ describe('Confirm', () => { confirm(req, res, jest.fn()); expect(res.setViewData).toMatchSnapshot(); }); + it('check if encrypted', () => { + confirm(req, res, jest.fn()); + expect(res.setViewData).toBeCalledWith(viewData); + }); }); diff --git a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js index 28bb9c097..4f02339cf 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/controllers/middlewares/order/confirm.js @@ -18,9 +18,11 @@ function handleAdyenGiving(req, res) { const clientKey = AdyenConfigs.getAdyenClientKey(); const environment = AdyenHelper.getCheckoutEnvironment(); const configuredAmounts = AdyenHelper.getDonationAmounts(); - const charityName = AdyenConfigs.getAdyenGivingCharityName(); + const charityName = encodeURI(AdyenConfigs.getAdyenGivingCharityName()); const charityWebsite = AdyenConfigs.getAdyenGivingCharityWebsite(); - const charityDescription = AdyenConfigs.getAdyenGivingCharityDescription(); + const charityDescription = encodeURI( + AdyenConfigs.getAdyenGivingCharityDescription(), + ); const adyenGivingBackgroundUrl = AdyenConfigs.getAdyenGivingBackgroundUrl(); const adyenGivingLogoUrl = AdyenConfigs.getAdyenGivingLogoUrl(); const orderToken = getOrderToken(req); diff --git a/src/cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js b/src/cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js index d3afe8747..a33de81fc 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/scripts/adyenService.js @@ -6,13 +6,14 @@ const Template = require('dw/util/Template'); const Transaction = require('dw/system/Transaction'); const Order = require('dw/order/Order'); const COHelpers = require('*/cartridge/scripts/checkout/checkoutHelpers'); +const OrderModel = require('*/cartridge/models/order'); function sendEmail(order) { const confirmationEmail = new Mail(); const context = new HashMap(); - const savedOrderModel = order.custom.Adyen_CustomerEmail; - const orderObject = { order: JSON.parse(savedOrderModel) }; + const orderModel = new OrderModel(order, { containerView: 'order' }); + const orderObject = { order: orderModel }; confirmationEmail.addTo(order.customerEmail); confirmationEmail.setSubject( @@ -31,15 +32,13 @@ function sendEmail(order) { const content = template.render(context).text; confirmationEmail.setContent(content, 'text/html', 'UTF-8'); confirmationEmail.send(); - - order.custom.Adyen_CustomerEmail = null; } function submit(order) { try { Transaction.begin(); // Places the order if not placed yet - if (order.status === Order.ORDER_STATUS_CREATED) { + if (order.status.value === Order.ORDER_STATUS_CREATED) { // custom fraudDetection const fraudDetectionStatus = { status: 'success' }; const placeOrderResult = COHelpers.placeOrder( diff --git a/src/cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js b/src/cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js index b0b03589a..d284f8d3d 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js +++ b/src/cartridges/int_adyen_SFRA/cartridge/scripts/hooks/payment/processor/middlewares/handle.js @@ -25,12 +25,14 @@ function convertToSfccCardType(paymentInformation, paymentInstrument) { sfccCardType; if (paymentInformation.creditCardToken) { + const firstTwoDigitsFromCurrentYear = + AdyenHelper.getFirstTwoNumbersFromYear(); + const expirationYear = + firstTwoDigitsFromCurrentYear * 100 + paymentInformation.expirationYear; paymentInstrument.setCreditCardExpirationMonth( paymentInformation.expirationMonth, ); - paymentInstrument.setCreditCardExpirationYear( - paymentInformation.expirationYear, - ); + paymentInstrument.setCreditCardExpirationYear(expirationYear); paymentInstrument.setCreditCardToken(paymentInformation.creditCardToken); } } diff --git a/src/cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml b/src/cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml index 241389da7..99319e43f 100644 --- a/src/cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml +++ b/src/cartridges/int_adyen_SFRA/cartridge/templates/default/checkout/billing/adyenComponentForm.isml @@ -59,7 +59,7 @@ window.googleMerchantID = '${pdict.adyen.googleMerchantID}'; window.cardholderNameBool = '${pdict.adyen.cardholderNameBool}'; window.merchantAccount = '${pdict.adyen.merchantAccount}'; - window.customerEmail = '${customer?.profile?.email}'; + window.customerEmail = '${customer && customer.profile && customer.profile.email ? customer.profile.email : ''}'; var showStoreDetails = ${customer.authenticated && adyenRecurringPaymentsEnabled}; diff --git a/src/cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js b/src/cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js index 099c70fe6..a16d9d8f5 100644 --- a/src/cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js +++ b/src/cartridges/int_adyen_overlay/cartridge/adyenConstants/constants.js @@ -34,6 +34,8 @@ module.exports = { AMAZONPAY: 'amazonpay', }, + CAN_SKIP_SUMMARY_PAGE: ['applepay','cashapp',], + PLATFORMS: { SFRA: 'SFRA', SG: 'SG' @@ -87,6 +89,7 @@ module.exports = { GIFTCARD_EXPIRATION_MINUTES: 30, OMS_NAMESPACE: 'adyen_payment', + NOTIFICATION_PAYLOAD_DATA_SEPARATOR : ':', CHECKOUT_ENVIRONMENT_TEST: 'test', CHECKOUT_ENVIRONMENT_LIVE_EU: 'live', @@ -95,8 +98,8 @@ module.exports = { CHECKOUT_ENVIRONMENT_LIVE_IN: 'live-in', CHECKOUT_COMPONENT_VERSION: { - SFRA: '5.40.0', + SFRA: '5.44.0', SG: '5.28.0' }, - VERSION: '23.2.1', + VERSION: '23.3.0', }; diff --git a/src/cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js b/src/cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js index d73caf17c..b7a32eb49 100644 --- a/src/cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js +++ b/src/cartridges/int_adyen_overlay/cartridge/scripts/adyenCheckout.js @@ -155,10 +155,10 @@ function createPaymentRequest(args) { } } - //Set Apple Pay tokenisation - if (AdyenConfigs.getAdyenApplePayTokenisationEnabled() && AdyenHelper.isApplePay(paymentRequest.paymentMethod.type)) { - paymentRequest.storePaymentMethod = true; - paymentRequest.recurringProcessingModel = 'CardOnFile'; + //Set tokenisation + if (AdyenConfigs.getAdyenTokenisationEnabled()) { + paymentRequest.storePaymentMethod = true; + paymentRequest.recurringProcessingModel = constants.RECURRING_PROCESSING_MODEL.CARD_ON_FILE; } setPaymentTransactionType(paymentInstrument, paymentRequest.paymentMethod); diff --git a/src/cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js b/src/cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js index 667e8f9af..34373564b 100644 --- a/src/cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js +++ b/src/cartridges/int_adyen_overlay/cartridge/scripts/checkNotificationAuth.js @@ -20,6 +20,7 @@ */ const Site = require('dw/system/Site'); const AuthenticationUtils = require('*/cartridge/scripts/libs/libAuthenticationUtils'); +const AdyenLogs = require('*/cartridge/scripts/adyenCustomLogs'); function check(request) { const baUser = Site.getCurrent().getCustomPreferenceValue( @@ -40,6 +41,30 @@ function check(request) { ); } +function compareHmac(hmacSignature, merchantSignature){ + let bitwiseComparison; + if (hmacSignature.length !== merchantSignature.length){ + return false; + } + for (let i = 0; i < hmacSignature.length; i++) { + bitwiseComparison |= hmacSignature.charCodeAt(i) ^ merchantSignature.charCodeAt(i); + } + return bitwiseComparison === 0; +}; + +function validateHmacSignature(request){ + const notificationData = request.form; + const hmacSignature = notificationData['additionalData.hmacSignature']; + const merchantSignature = AuthenticationUtils.calculateHmacSignature(request); + // Checking for timing attacks + if (compareHmac(hmacSignature, merchantSignature)){ + return true; + }; + AdyenLogs.error_log(`HMAC signatures mismatch, the notification request is not valid`); + return false; +}; + module.exports = { check, + validateHmacSignature, }; diff --git a/src/cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js b/src/cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js index 6776e6c07..9be20d21b 100644 --- a/src/cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js +++ b/src/cartridges/int_adyen_overlay/cartridge/scripts/handleCustomObject.js @@ -155,6 +155,7 @@ function handle(customObj) { ); result.SubmitOrder = true; } + order.custom.Adyen_eventCode = customObj.custom.eventCode; order.custom.Adyen_value = amountPaid.toString(); } else { AdyenLogs.info_log( @@ -283,8 +284,6 @@ function handle(customObj) { order.custom.Adyen_pspReference = customObj.custom.pspReference; } - order.custom.Adyen_eventCode = customObj.custom.eventCode; - // Add a note with all details order.addNote('Adyen Payment Notification', createLogMessage(customObj)); } diff --git a/src/cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js b/src/cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js index 068d6563e..736a24e1a 100644 --- a/src/cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js +++ b/src/cartridges/int_adyen_overlay/cartridge/scripts/job/notifications.js @@ -67,7 +67,7 @@ function processNotifications(/* pdict */) { // Only CREATED orders can be failed if ( order === null || - order.status !== dw.order.Order.ORDER_STATUS_CREATED || + order.status.value !== dw.order.Order.ORDER_STATUS_CREATED || handlerResult.RefusedHpp ) { continue; diff --git a/src/cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js b/src/cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js index b26b24327..6d7932899 100644 --- a/src/cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js +++ b/src/cartridges/int_adyen_overlay/cartridge/scripts/libs/libAuthenticationUtils.js @@ -20,6 +20,12 @@ */ const StringUtils = require('dw/util/StringUtils'); +const Encoding = require('dw/crypto/Encoding'); +const Mac = require('dw/crypto/Mac'); +const Bytes = require('dw/util/Bytes'); +const constants = require('*/cartridge/adyenConstants/constants'); +const AdyenLogs = require('*/cartridge/scripts/adyenCustomLogs'); +const AdyenConfigs = require('*/cartridge/scripts/util/adyenConfigs'); /** * @@ -42,6 +48,35 @@ function checkGivenCredentials(baHeader, baUser, baPassword) { return false; } +function constructPayload(notificationData){ + const signedDataList = []; + signedDataList.push(notificationData.pspReference); + signedDataList.push(notificationData.originalReference); + signedDataList.push(notificationData.merchantAccountCode); + signedDataList.push(notificationData.merchantReference); + signedDataList.push(notificationData.value); + signedDataList.push(notificationData.currency); + signedDataList.push(notificationData.eventCode); + signedDataList.push(notificationData.success); + return signedDataList.join(constants.NOTIFICATION_PAYLOAD_DATA_SEPARATOR); +}; + +function calculateHmacSignature(request){ + try{ + const hmacKey = Encoding.fromHex(new Bytes(AdyenConfigs.getAdyenHmacKey(), 'UTF-8')); + const payload = constructPayload(request.form); + const macSHA256 = new Mac(Mac.HMAC_SHA_256); + const merchantSignature = Encoding.toBase64(macSHA256.digest(payload, hmacKey)); + return merchantSignature; + } + catch(e) { + AdyenLogs.fatal_log( + `Cannot calculate HMAC signature: ${e.toString()} in ${e.fileName}:${e.lineNumber}`, + ); + }; +}; + module.exports = { checkGivenCredentials, + calculateHmacSignature, }; diff --git a/src/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js b/src/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js index 99c1fe5a7..bd4557b9d 100644 --- a/src/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js +++ b/src/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenConfigs.js @@ -49,6 +49,10 @@ const adyenConfigsObj = { return getCustomPreference('Adyen_notification_password'); }, + getAdyenHmacKey() { + return getCustomPreference('Adyen_Hmac_Key'); + }, + getAdyenRecurringPaymentsEnabled() { return getCustomPreference('AdyenOneClickEnabled'); }, @@ -93,8 +97,8 @@ const adyenConfigsObj = { return getCustomPreference('Adyen_Frontend_Region').value; }, - getAdyenApplePayTokenisationEnabled: function () { - return getCustomPreference('AdyenApplePayTokenisationEnabled'); + getAdyenTokenisationEnabled: function () { + return getCustomPreference('AdyenTokenisationEnabled'); }, getAdyenSalePaymentMethods: function () { @@ -105,10 +109,6 @@ const adyenConfigsObj = { return getCustomPreference('AdyenBasketFieldsEnabled'); }, - getAdyenApplePayTokenisationEnabled: function () { - return getCustomPreference('AdyenApplePayTokenisationEnabled'); - }, - getAdyenCardholderNameEnabled: function () { return getCustomPreference('AdyenCardHolderName_enabled'); }, diff --git a/src/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js b/src/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js index 0bde2e7c9..c1b2e8dbc 100644 --- a/src/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js +++ b/src/cartridges/int_adyen_overlay/cartridge/scripts/util/adyenHelper.js @@ -669,6 +669,13 @@ var adyenHelperObj = { ); } + // For authenticated shoppers we are setting the token on other place already + // SFRA throws an error if you try to set token again that's why this check is added + const tokenAlreadyExists = paymentInstrument.getCreditCardToken(); + if (!tokenAlreadyExists && result.additionalData && result.additionalData['recurring.recurringDetailReference']) { + paymentInstrument.setCreditCardToken(result.additionalData['recurring.recurringDetailReference']); + } + paymentInstrument.paymentTransaction.custom.authCode = result.resultCode ? result.resultCode : ''; @@ -683,6 +690,12 @@ var adyenHelperObj = { return true; }, + getFirstTwoNumbersFromYear() { + return Math.floor( + new Date().getFullYear() / 100, + ); + }, + // converts the currency value for the Adyen Checkout API getCurrencyValueForApi(amount) { const currencyCode = dwutil.Currency.getCurrency(amount.currencyCode);