From dfbbc190cf58431dce98c4e1b7f1bb11dbe92dca Mon Sep 17 00:00:00 2001 From: Mike Moore Date: Tue, 9 Jul 2024 22:50:48 -0400 Subject: [PATCH] Deprecate Giropay (#9055) Co-authored-by: Guilherme Pressutto --- changelog/9037-giropay-deprecation | 4 + includes/class-wc-payment-gateway-wcpay.php | 1 - includes/class-wc-payments.php | 2 + ...ss-giropay-deprecation-settings-update.php | 89 +++++++++++++++++++ ...s-wc-rest-payments-settings-controller.php | 5 +- 5 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 changelog/9037-giropay-deprecation create mode 100644 includes/migrations/class-giropay-deprecation-settings-update.php diff --git a/changelog/9037-giropay-deprecation b/changelog/9037-giropay-deprecation new file mode 100644 index 00000000000..bcf9e81ece3 --- /dev/null +++ b/changelog/9037-giropay-deprecation @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Deprecate Giropay. diff --git a/includes/class-wc-payment-gateway-wcpay.php b/includes/class-wc-payment-gateway-wcpay.php index 8b38ef31643..c5126c398e0 100644 --- a/includes/class-wc-payment-gateway-wcpay.php +++ b/includes/class-wc-payment-gateway-wcpay.php @@ -4029,7 +4029,6 @@ public function get_upe_available_payment_methods() { $available_methods[] = Becs_Payment_Method::PAYMENT_METHOD_STRIPE_ID; $available_methods[] = Bancontact_Payment_Method::PAYMENT_METHOD_STRIPE_ID; $available_methods[] = Eps_Payment_Method::PAYMENT_METHOD_STRIPE_ID; - $available_methods[] = Giropay_Payment_Method::PAYMENT_METHOD_STRIPE_ID; $available_methods[] = Ideal_Payment_Method::PAYMENT_METHOD_STRIPE_ID; $available_methods[] = Sofort_Payment_Method::PAYMENT_METHOD_STRIPE_ID; $available_methods[] = Sepa_Payment_Method::PAYMENT_METHOD_STRIPE_ID; diff --git a/includes/class-wc-payments.php b/includes/class-wc-payments.php index b48a257ae2f..4f3edb6ad91 100644 --- a/includes/class-wc-payments.php +++ b/includes/class-wc-payments.php @@ -634,6 +634,7 @@ function () { require_once __DIR__ . '/migrations/class-link-woopay-mutual-exclusion-handler.php'; require_once __DIR__ . '/migrations/class-gateway-settings-sync.php'; require_once __DIR__ . '/migrations/class-delete-active-woopay-webhook.php'; + require_once __DIR__ . '/migrations/class-giropay-deprecation-settings-update.php'; add_action( 'woocommerce_woocommerce_payments_updated', [ new Allowed_Payment_Request_Button_Types_Update( self::get_gateway() ), 'maybe_migrate' ] ); add_action( 'woocommerce_woocommerce_payments_updated', [ new \WCPay\Migrations\Allowed_Payment_Request_Button_Sizes_Update( self::get_gateway() ), 'maybe_migrate' ] ); add_action( 'woocommerce_woocommerce_payments_updated', [ new \WCPay\Migrations\Update_Service_Data_From_Server( self::get_account_service() ), 'maybe_migrate' ] ); @@ -641,6 +642,7 @@ function () { add_action( 'woocommerce_woocommerce_payments_updated', [ new \WCPay\Migrations\Link_WooPay_Mutual_Exclusion_Handler( self::get_gateway() ), 'maybe_migrate' ] ); add_action( 'woocommerce_woocommerce_payments_updated', [ new \WCPay\Migrations\Gateway_Settings_Sync( self::get_gateway(), self::get_payment_gateway_map() ), 'maybe_sync' ] ); add_action( 'woocommerce_woocommerce_payments_updated', [ '\WCPay\Migrations\Delete_Active_WooPay_Webhook', 'maybe_delete' ] ); + add_action( 'woocommerce_woocommerce_payments_updated', [ new \WCPay\Migrations\Giropay_Deprecation_Settings_Update( self::get_gateway(), self::get_payment_gateway_map() ), 'maybe_migrate' ] ); include_once WCPAY_ABSPATH . '/includes/class-wc-payments-explicit-price-formatter.php'; WC_Payments_Explicit_Price_Formatter::init(); diff --git a/includes/migrations/class-giropay-deprecation-settings-update.php b/includes/migrations/class-giropay-deprecation-settings-update.php new file mode 100644 index 00000000000..b5b2568eb97 --- /dev/null +++ b/includes/migrations/class-giropay-deprecation-settings-update.php @@ -0,0 +1,89 @@ +main_gateway = $main_gateway; + $this->all_registered_gateways = $all_registered_gateways; + } + + /** + * Checks whether we should trigger the event. + */ + public function maybe_migrate() { + $previous_version = get_option( 'woocommerce_woocommerce_payments_version' ); + if ( version_compare( self::VERSION_SINCE, $previous_version, '>' ) ) { + $this->migrate(); + } + } + + /** + * Syncs gateway setting objects. + */ + private function migrate() { + $enabled_payment_methods = $this->main_gateway->get_option( 'upe_enabled_payment_method_ids', [] ); + + $filtered_payment_methods = array_filter( + $enabled_payment_methods, + function ( $method ) { + return 'giropay' !== $method; + } + ); + + foreach ( $this->all_registered_gateways as $gateway ) { + if ( 'giropay' === $gateway->get_stripe_id() ) { + if ( in_array( $gateway->get_stripe_id(), $enabled_payment_methods, true ) ) { + $gateway->disable(); + $gateway->update_option( 'upe_enabled_payment_method_ids', $filtered_payment_methods ); + } else { + $gateway->update_option( 'upe_enabled_payment_method_ids', $filtered_payment_methods ); + } + } else { + $gateway->update_option( 'upe_enabled_payment_method_ids', $filtered_payment_methods ); + } + } + } +} diff --git a/tests/unit/admin/test-class-wc-rest-payments-settings-controller.php b/tests/unit/admin/test-class-wc-rest-payments-settings-controller.php index 5bf31255461..84c06290b80 100644 --- a/tests/unit/admin/test-class-wc-rest-payments-settings-controller.php +++ b/tests/unit/admin/test-class-wc-rest-payments-settings-controller.php @@ -244,7 +244,6 @@ public function test_get_settings_returns_available_payment_method_ids() { Payment_Method::BECS, Payment_Method::BANCONTACT, Payment_Method::EPS, - Payment_Method::GIROPAY, Payment_Method::IDEAL, Payment_Method::SOFORT, Payment_Method::SEPA, @@ -376,11 +375,11 @@ public function test_update_settings_saves_enabled_payment_methods() { WC_Payments::get_gateway()->update_option( 'upe_enabled_payment_method_ids', [ Payment_Method::CARD ] ); $request = new WP_REST_Request(); - $request->set_param( 'enabled_payment_method_ids', [ Payment_Method::CARD, Payment_Method::GIROPAY ] ); + $request->set_param( 'enabled_payment_method_ids', [ Payment_Method::CARD, Payment_Method::IDEAL ] ); $this->controller->update_settings( $request ); - $this->assertEquals( [ Payment_Method::CARD, Payment_Method::GIROPAY ], WC_Payments::get_gateway()->get_option( 'upe_enabled_payment_method_ids' ) ); + $this->assertEquals( [ Payment_Method::CARD, Payment_Method::IDEAL ], WC_Payments::get_gateway()->get_option( 'upe_enabled_payment_method_ids' ) ); } public function test_update_settings_fails_if_user_cannot_manage_woocommerce() {