From 6d47656d1fdb3da44bb0841d4221ea64b8f32f52 Mon Sep 17 00:00:00 2001 From: Emili Castells Guasch Date: Mon, 19 Feb 2024 11:14:42 +0100 Subject: [PATCH 1/2] Ensure `woocommerce_order_actions` callback could accept one single parameter --- .../ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php b/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php index a69aaefef..d0aefecaa 100644 --- a/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php +++ b/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php @@ -196,7 +196,7 @@ class PayPalSubscriptionsModule implements ModuleInterface { * * @psalm-suppress MissingClosureParamType */ - function( $actions, $subscription ): array { + function( $actions, $subscription = null ): array { if ( ! is_array( $actions ) || ! is_a( $subscription, WC_Subscription::class ) ) { return $actions; } From 910337cb2b20e286323b0b73d60b8f0b32cce2c9 Mon Sep 17 00:00:00 2001 From: Emili Castells Guasch Date: Mon, 19 Feb 2024 12:53:50 +0100 Subject: [PATCH 2/2] Do not execute if not a plugin payment method --- .../ppcp-saved-payment-checker/src/PaymentTokenChecker.php | 4 ++++ modules/ppcp-wc-gateway/src/Processor/RefundProcessor.php | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/modules/ppcp-saved-payment-checker/src/PaymentTokenChecker.php b/modules/ppcp-saved-payment-checker/src/PaymentTokenChecker.php index a94fe0d92..df5b3651d 100644 --- a/modules/ppcp-saved-payment-checker/src/PaymentTokenChecker.php +++ b/modules/ppcp-saved-payment-checker/src/PaymentTokenChecker.php @@ -126,6 +126,10 @@ class PaymentTokenChecker { return; } + if ( ! in_array( $wc_order->get_payment_method(), array( PayPalGateway::ID, CreditCardGateway::ID, CardButtonGateway::ID ), true ) ) { + return; + } + if ( $wc_order->get_status() === 'processing' || 'capture' !== $intent ) { return; } diff --git a/modules/ppcp-wc-gateway/src/Processor/RefundProcessor.php b/modules/ppcp-wc-gateway/src/Processor/RefundProcessor.php index b19952ff0..ed653a5bc 100644 --- a/modules/ppcp-wc-gateway/src/Processor/RefundProcessor.php +++ b/modules/ppcp-wc-gateway/src/Processor/RefundProcessor.php @@ -22,6 +22,8 @@ use WooCommerce\PayPalCommerce\ApiClient\Entity\Order; use WooCommerce\PayPalCommerce\ApiClient\Entity\Payments; use WooCommerce\PayPalCommerce\ApiClient\Entity\RefundCapture; use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException; +use WooCommerce\PayPalCommerce\WcGateway\Gateway\CardButtonGateway; +use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway; use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway; use WooCommerce\PayPalCommerce\WcGateway\Helper\RefundFeesUpdater; @@ -107,6 +109,10 @@ class RefundProcessor { */ public function process( WC_Order $wc_order, float $amount = null, string $reason = '' ) : bool { try { + if ( ! in_array( $wc_order->get_payment_method(), array( PayPalGateway::ID, CreditCardGateway::ID, CardButtonGateway::ID ), true ) ) { + return true; + } + $order_id = $wc_order->get_meta( PayPalGateway::ORDER_ID_META_KEY ); if ( ! $order_id ) { throw new RuntimeException( 'PayPal order ID not found in meta.' );