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(
$container->get( 'settings.service.features_eligibilities' ),
$container->get( 'settings.data.general' ),
$merchant_capabilities
$merchant_capabilities,
$container->get( 'settings.data.settings' )
);
},
'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;
use WooCommerce\PayPalCommerce\Settings\Data\SettingsModel;
use WooCommerce\PayPalCommerce\Settings\Service\FeaturesEligibilityService;
use WooCommerce\PayPalCommerce\Settings\Data\GeneralSettings;
@ -42,21 +43,31 @@ class FeaturesDefinition {
*/
protected array $merchant_capabilities;
/**
* The plugin settings.
*
* @var SettingsModel
*/
protected SettingsModel $plugin_settings;
/**
* Constructor.
*
* @param FeaturesEligibilityService $eligibilities The features eligibility service.
* @param GeneralSettings $settings The general settings service.
* @param array $merchant_capabilities The merchant capabilities.
* @param SettingsModel $plugin_settings The plugin settings.
*/
public function __construct(
FeaturesEligibilityService $eligibilities,
GeneralSettings $settings,
array $merchant_capabilities
array $merchant_capabilities,
SettingsModel $plugin_settings
) {
$this->eligibilities = $eligibilities;
$this->settings = $settings;
$this->merchant_capabilities = $merchant_capabilities;
$this->plugin_settings = $plugin_settings;
}
/**
@ -82,7 +93,7 @@ class FeaturesDefinition {
* @return array[] The array of all available features.
*/
public function all_available_features(): array {
$paylater_countries = array(
$paylater_countries = array(
'UK',
'ES',
'IT',
@ -91,8 +102,9 @@ class FeaturesDefinition {
'DE',
'AU',
);
$store_country = $this->settings->get_woo_settings()['country'];
$country_location = in_array( $store_country, $paylater_countries, true ) ? strtolower( $store_country ) : 'us';
$store_country = $this->settings->get_woo_settings()['country'];
$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(
'save_paypal_and_venmo' => array(
@ -104,8 +116,8 @@ class FeaturesDefinition {
'type' => 'secondary',
'text' => __( 'Configure', 'woocommerce-paypal-payments' ),
'action' => array(
'type' => 'tab',
'tab' => 'settings',
'type' => 'tab',
'tab' => 'settings',
'section' => 'ppcp-save-paypal-and-venmo',
),
'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.',
'woocommerce-paypal-payments'
),
'enabled' => $this->merchant_capabilities['pay_later'],
'enabled' => $this->merchant_capabilities['pay_later'] && ! $save_paypal_and_venmo,
'buttons' => array(
array(
'type' => 'secondary',