Do not allow basic redirect gateway for subscriptions

This commit is contained in:
Alex P. 2024-10-18 17:04:41 +03:00
parent 20a627aebb
commit 21e0cf3c1d
No known key found for this signature in database
GPG key ID: 54487A734A204D71
3 changed files with 19 additions and 2 deletions

View file

@ -47,6 +47,7 @@ return array(
$container->get( 'blocks.settings.final_review_enabled' ),
$container->get( 'session.cancellation.view' ),
$container->get( 'session.handler' ),
$container->get( 'wc-subscriptions.helper' ),
$container->get( 'blocks.add-place-order-method' ),
$container->get( 'wcgateway.use-place-order-button' ),
$container->get( 'wcgateway.place-order-button-text' ),

View file

@ -19,6 +19,7 @@ use WooCommerce\PayPalCommerce\Session\SessionHandler;
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
use WooCommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
/**
* Class PayPalPaymentMethod
@ -87,6 +88,13 @@ class PayPalPaymentMethod extends AbstractPaymentMethodType {
*/
private $session_handler;
/**
* The Subscription Helper.
*
* @var SubscriptionHelper
*/
private $subscription_helper;
/**
* Whether to create a non-express method with the standard "Place order" button.
*
@ -141,6 +149,7 @@ class PayPalPaymentMethod extends AbstractPaymentMethodType {
* @param bool $final_review_enabled Whether the final review is enabled.
* @param CancelView $cancellation_view The cancellation view.
* @param SessionHandler $session_handler The Session handler.
* @param SubscriptionHelper $subscription_helper The subscription helper.
* @param bool $add_place_order_method Whether to create a non-express method with the standard "Place order" button.
* @param bool $use_place_order Whether to use the standard "Place order" button instead of PayPal buttons.
* @param string $place_order_button_text The text for the standard "Place order" button.
@ -158,6 +167,7 @@ class PayPalPaymentMethod extends AbstractPaymentMethodType {
bool $final_review_enabled,
CancelView $cancellation_view,
SessionHandler $session_handler,
SubscriptionHelper $subscription_helper,
bool $add_place_order_method,
bool $use_place_order,
string $place_order_button_text,
@ -175,6 +185,7 @@ class PayPalPaymentMethod extends AbstractPaymentMethodType {
$this->final_review_enabled = $final_review_enabled;
$this->cancellation_view = $cancellation_view;
$this->session_handler = $session_handler;
$this->subscription_helper = $subscription_helper;
$this->add_place_order_method = $add_place_order_method;
$this->use_place_order = $use_place_order;
$this->place_order_button_text = $place_order_button_text;
@ -243,8 +254,10 @@ class PayPalPaymentMethod extends AbstractPaymentMethodType {
);
}
$smart_buttons_enabled = ! $this->use_place_order && $this->settings_status->is_smart_button_enabled_for_location( $script_data['context'] ?? 'block-checkout' );
$place_order_enabled = $this->use_place_order || $this->add_place_order_method;
$smart_buttons_enabled = ! $this->use_place_order
&& $this->settings_status->is_smart_button_enabled_for_location( $script_data['context'] ?? 'block-checkout' );
$place_order_enabled = ( $this->use_place_order || $this->add_place_order_method )
&& ! $this->subscription_helper->cart_contains_subscription();
return array(
'id' => $this->gateway->id,