diff --git a/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/googlePayExpress.js b/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/googlePayExpress.js index 82062ff95..1ef44f24c 100644 --- a/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/googlePayExpress.js +++ b/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/googlePayExpress.js @@ -1,61 +1,3 @@ -const { - checkIfExpressMethodsAreReady, - updateLoadedExpressMethods, - getPaymentMethods, -} = require('./commons'); -const { GOOGLE_PAY } = require('./constants'); +const googlePayExpressModule = require('./googlePayExpressCommon'); -let checkout; -let paymentMethodsResponse; - -async function initializeCheckout() { - const paymentMethods = await getPaymentMethods(); - paymentMethodsResponse = await paymentMethods.json(); - const applicationInfo = paymentMethodsResponse?.applicationInfo; - checkout = await AdyenCheckout({ - environment: window.environment, - clientKey: window.clientKey, - locale: window.locale, - analytics: { - analyticsData: { applicationInfo }, - }, - }); -} - -async function init() { - initializeCheckout() - .then(async () => { - const googlePayPaymentMethod = - paymentMethodsResponse?.AdyenPaymentMethods?.paymentMethods.find( - (pm) => pm.type === GOOGLE_PAY, - ); - if (!googlePayPaymentMethod) { - updateLoadedExpressMethods(GOOGLE_PAY); - checkIfExpressMethodsAreReady(); - return; - } - - const googlePayConfig = googlePayPaymentMethod.configuration; - const googlePayButtonConfig = { - showPayButton: true, - buttonType: 'buy', - configuration: googlePayConfig, - returnUrl: window.returnUrl, - isExpress: true, - }; - - const googlePayButton = checkout.create( - GOOGLE_PAY, - googlePayButtonConfig, - ); - googlePayButton.mount('#googlepay-container'); - updateLoadedExpressMethods(GOOGLE_PAY); - checkIfExpressMethodsAreReady(); - }) - .catch(() => { - updateLoadedExpressMethods(GOOGLE_PAY); - checkIfExpressMethodsAreReady(); - }); -} - -init(); +googlePayExpressModule.init(); diff --git a/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/googlePayExpressCommon.js b/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/googlePayExpressCommon.js new file mode 100644 index 000000000..257bae6a8 --- /dev/null +++ b/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/googlePayExpressCommon.js @@ -0,0 +1,63 @@ +const { + checkIfExpressMethodsAreReady, + updateLoadedExpressMethods, + getPaymentMethods, +} = require('./commons'); +const { GOOGLE_PAY } = require('./constants'); + +let checkout; +let paymentMethodsResponse; + +async function initializeCheckout() { + const paymentMethods = await getPaymentMethods(); + paymentMethodsResponse = await paymentMethods.json(); + const applicationInfo = paymentMethodsResponse?.applicationInfo; + checkout = await AdyenCheckout({ + environment: window.environment, + clientKey: window.clientKey, + locale: window.locale, + analytics: { + analyticsData: { applicationInfo }, + }, + }); +} + +async function init() { + initializeCheckout() + .then(async () => { + const googlePayPaymentMethod = + paymentMethodsResponse?.AdyenPaymentMethods?.paymentMethods.find( + (pm) => pm.type === GOOGLE_PAY, + ); + if (!googlePayPaymentMethod) { + updateLoadedExpressMethods(GOOGLE_PAY); + checkIfExpressMethodsAreReady(); + return; + } + + const googlePayConfig = googlePayPaymentMethod.configuration; + const googlePayButtonConfig = { + showPayButton: true, + buttonType: 'buy', + configuration: googlePayConfig, + returnUrl: window.returnUrl, + isExpress: true, + }; + + const googlePayButton = checkout.create( + GOOGLE_PAY, + googlePayButtonConfig, + ); + googlePayButton.mount('.googlepay'); + updateLoadedExpressMethods(GOOGLE_PAY); + checkIfExpressMethodsAreReady(); + }) + .catch(() => { + updateLoadedExpressMethods(GOOGLE_PAY); + checkIfExpressMethodsAreReady(); + }); +} + +module.exports = { + init, +}; diff --git a/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/product/expressPayments.js b/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/product/expressPayments.js index 8b91ec791..f6da25a55 100644 --- a/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/product/expressPayments.js +++ b/src/cartridges/app_adyen_SFRA/cartridge/client/default/js/product/expressPayments.js @@ -1,5 +1,6 @@ const applePayExpressModule = require('../applePayExpressCommon'); -const { APPLE_PAY } = require('../constants'); +const googlePayExpressModule = require('../googlePayExpressCommon'); +const { APPLE_PAY, GOOGLE_PAY } = require('../constants'); function getProductForm(product) { const $productInputEl = document.createElement('input'); @@ -24,6 +25,7 @@ function getValueForCurrency(amount, currency) { function getExpressPaymentButtons(product) { const expressMethodsConfig = { [APPLE_PAY]: window.isApplePayExpressOnPdpEnabled === 'true', + [GOOGLE_PAY]: window.isGooglePayExpressOnPdpEnabled === 'true', }; const enabledExpressPaymentButtons = []; Object.keys(expressMethodsConfig).forEach((key) => { @@ -43,6 +45,10 @@ function renderApplePayButton() { applePayExpressModule.init(); } +function renderGooglePayButton() { + googlePayExpressModule.init(); +} + function renderExpressPaymentButtons() { $('body').on('product:renderExpressPaymentButtons', (e, response) => { const { product = {} } = response; @@ -61,6 +67,7 @@ function renderExpressPaymentButtons() { $productForm, ); renderApplePayButton(); + renderGooglePayButton(); } else { $expressPaymentButtonsContainer.replaceChildren(); } diff --git a/src/cartridges/app_adyen_SFRA/cartridge/templates/default/cart/checkoutButtons.isml b/src/cartridges/app_adyen_SFRA/cartridge/templates/default/cart/checkoutButtons.isml index 6aab532b6..625a4509e 100644 --- a/src/cartridges/app_adyen_SFRA/cartridge/templates/default/cart/checkoutButtons.isml +++ b/src/cartridges/app_adyen_SFRA/cartridge/templates/default/cart/checkoutButtons.isml @@ -86,7 +86,7 @@
-
+
diff --git a/src/cartridges/app_adyen_SFRA/cartridge/templates/default/product/components/addToCartButtonExtension.isml b/src/cartridges/app_adyen_SFRA/cartridge/templates/default/product/components/addToCartButtonExtension.isml index 3cb9604c1..4a10c0077 100644 --- a/src/cartridges/app_adyen_SFRA/cartridge/templates/default/product/components/addToCartButtonExtension.isml +++ b/src/cartridges/app_adyen_SFRA/cartridge/templates/default/product/components/addToCartButtonExtension.isml @@ -17,6 +17,7 @@ window.createTemporaryBasketUrl = "${URLUtils.https('Adyen-CreateTemporaryBasket')}"; window.isExpressPdp = true; window.isApplePayExpressOnPdpEnabled = "${AdyenConfigs.isApplePayExpressOnPdpEnabled()}"; + window.isGooglePayExpressOnPdpEnabled = "${AdyenConfigs.isGooglePayExpressOnPdpEnabled()}"; window.fractionDigits = "${AdyenHelper.getFractionDigits()}"