Disable Pay Later feature item if save PayPal and Venmo is checked

This commit is contained in:
Emili Castells Guasch 2025-03-17 12:07:51 +01:00
parent f3eedb309b
commit bed05c685e
2 changed files with 21 additions and 8 deletions

View file

@ -556,7 +556,8 @@ return array(
return new FeaturesDefinition( return new FeaturesDefinition(
$container->get( 'settings.service.features_eligibilities' ), $container->get( 'settings.service.features_eligibilities' ),
$container->get( 'settings.data.general' ), $container->get( 'settings.data.general' ),
$merchant_capabilities $merchant_capabilities,
$container->get( 'settings.data.settings' )
); );
}, },
'settings.service.features_eligibilities' => static function( ContainerInterface $container ): FeaturesEligibilityService { 'settings.service.features_eligibilities' => static function( ContainerInterface $container ): FeaturesEligibilityService {

View file

@ -9,6 +9,7 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\Settings\Data\Definition; namespace WooCommerce\PayPalCommerce\Settings\Data\Definition;
use WooCommerce\PayPalCommerce\Settings\Data\SettingsModel;
use WooCommerce\PayPalCommerce\Settings\Service\FeaturesEligibilityService; use WooCommerce\PayPalCommerce\Settings\Service\FeaturesEligibilityService;
use WooCommerce\PayPalCommerce\Settings\Data\GeneralSettings; use WooCommerce\PayPalCommerce\Settings\Data\GeneralSettings;
@ -42,21 +43,31 @@ class FeaturesDefinition {
*/ */
protected array $merchant_capabilities; protected array $merchant_capabilities;
/**
* The plugin settings.
*
* @var SettingsModel
*/
protected SettingsModel $plugin_settings;
/** /**
* Constructor. * Constructor.
* *
* @param FeaturesEligibilityService $eligibilities The features eligibility service. * @param FeaturesEligibilityService $eligibilities The features eligibility service.
* @param GeneralSettings $settings The general settings service. * @param GeneralSettings $settings The general settings service.
* @param array $merchant_capabilities The merchant capabilities. * @param array $merchant_capabilities The merchant capabilities.
* @param SettingsModel $plugin_settings The plugin settings.
*/ */
public function __construct( public function __construct(
FeaturesEligibilityService $eligibilities, FeaturesEligibilityService $eligibilities,
GeneralSettings $settings, GeneralSettings $settings,
array $merchant_capabilities array $merchant_capabilities,
SettingsModel $plugin_settings
) { ) {
$this->eligibilities = $eligibilities; $this->eligibilities = $eligibilities;
$this->settings = $settings; $this->settings = $settings;
$this->merchant_capabilities = $merchant_capabilities; $this->merchant_capabilities = $merchant_capabilities;
$this->plugin_settings = $plugin_settings;
} }
/** /**
@ -82,7 +93,7 @@ class FeaturesDefinition {
* @return array[] The array of all available features. * @return array[] The array of all available features.
*/ */
public function all_available_features(): array { public function all_available_features(): array {
$paylater_countries = array( $paylater_countries = array(
'UK', 'UK',
'ES', 'ES',
'IT', 'IT',
@ -91,8 +102,9 @@ class FeaturesDefinition {
'DE', 'DE',
'AU', 'AU',
); );
$store_country = $this->settings->get_woo_settings()['country']; $store_country = $this->settings->get_woo_settings()['country'];
$country_location = in_array( $store_country, $paylater_countries, true ) ? strtolower( $store_country ) : 'us'; $country_location = in_array( $store_country, $paylater_countries, true ) ? strtolower( $store_country ) : 'us';
$save_paypal_and_venmo = $this->plugin_settings->get_save_paypal_and_venmo();
return array( return array(
'save_paypal_and_venmo' => array( 'save_paypal_and_venmo' => array(
@ -104,8 +116,8 @@ class FeaturesDefinition {
'type' => 'secondary', 'type' => 'secondary',
'text' => __( 'Configure', 'woocommerce-paypal-payments' ), 'text' => __( 'Configure', 'woocommerce-paypal-payments' ),
'action' => array( 'action' => array(
'type' => 'tab', 'type' => 'tab',
'tab' => 'settings', 'tab' => 'settings',
'section' => 'ppcp-save-paypal-and-venmo', 'section' => 'ppcp-save-paypal-and-venmo',
), ),
'showWhen' => 'enabled', 'showWhen' => 'enabled',
@ -288,7 +300,7 @@ class FeaturesDefinition {
'Let customers know they can buy now and pay later with PayPal. Adding this messaging can boost conversion rates and increase cart sizes by 39%¹, with no extra cost to you—plus, you get paid up front.', 'Let customers know they can buy now and pay later with PayPal. Adding this messaging can boost conversion rates and increase cart sizes by 39%¹, with no extra cost to you—plus, you get paid up front.',
'woocommerce-paypal-payments' 'woocommerce-paypal-payments'
), ),
'enabled' => $this->merchant_capabilities['pay_later'], 'enabled' => $this->merchant_capabilities['pay_later'] && ! $save_paypal_and_venmo,
'buttons' => array( 'buttons' => array(
array( array(
'type' => 'secondary', 'type' => 'secondary',