diff --git a/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js b/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js index a85ad68ee..d314553bc 100644 --- a/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js +++ b/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js @@ -211,6 +211,7 @@ class CheckoutBootstap { const isFreeTrial = PayPalCommerceGateway.is_free_trial_cart; const hasVaultedPaypal = PayPalCommerceGateway.vaulted_paypal_email !== ''; + const useSmartButtons = this.renderer.useSmartButtons ?? true; const paypalButtonWrappers = { ...Object.entries( PayPalCommerceGateway.separate_buttons ).reduce( @@ -225,7 +226,8 @@ class CheckoutBootstap { this.standardOrderButtonSelector, ( isPaypal && isFreeTrial && hasVaultedPaypal ) || isNotOurGateway || - isSavedCard, + isSavedCard || + ( isPaypal && ! useSmartButtons ), 'ppcp-hidden' ); setVisible( '.ppcp-vaulted-paypal-details', isPaypal ); diff --git a/modules/ppcp-button/resources/js/modules/Renderer/Renderer.js b/modules/ppcp-button/resources/js/modules/Renderer/Renderer.js index 9fa4708bc..3da3a94e9 100644 --- a/modules/ppcp-button/resources/js/modules/Renderer/Renderer.js +++ b/modules/ppcp-button/resources/js/modules/Renderer/Renderer.js @@ -28,6 +28,18 @@ class Renderer { this.reloadEventName = 'ppcp-reload-buttons'; } + /** + * Determine is PayPal smart buttons are used by inspecting the existing plugin configuration: + * If the url-param "components" contains a "buttons" element, smart buttons are enabled. + * + * @return {boolean} True, if smart buttons are present on the page. + */ + get useSmartButtons() { + const components = this.defaultSettings?.url_params?.components || ''; + + return components.split( ',' ).includes( 'buttons' ); + } + render( contextConfig, settingsOverride = {},