From 5abf489633961868003e90195c068b238e9cbfc5 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Thu, 24 Apr 2025 13:38:59 +0200 Subject: [PATCH 01/15] Add autoloader --- includes/class-wc-stripe-autoloader.php | 204 ++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 includes/class-wc-stripe-autoloader.php diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php new file mode 100644 index 0000000000..6fb33fdfbc --- /dev/null +++ b/includes/class-wc-stripe-autoloader.php @@ -0,0 +1,204 @@ + __DIR__ . '/migrations/class-allowed-payment-request-button-types-update.php', + 'Migrate_Payment_Request_Data_To_Express_Checkout_Data' => __DIR__ . '/migrations/class-migrate-payment-request-data-to-express-checkout-data.php', + 'WC_Gateway_Stripe' => __DIR__ . '/class-wc-gateway-stripe.php', + 'WC_Gateway_Stripe_Alipay' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-alipay.php', + 'WC_Gateway_Stripe_Bancontact' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-bancontact.php', + 'WC_Gateway_Stripe_Boleto' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-boleto.php', + 'WC_Gateway_Stripe_Eps' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-eps.php', + 'WC_Gateway_Stripe_Giropay' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-giropay.php', + 'WC_Gateway_Stripe_Ideal' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-ideal.php', + 'WC_Gateway_Stripe_Multibanco' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-multibanco.php', + 'WC_Gateway_Stripe_Oxxo' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-oxxo.php', + 'WC_Gateway_Stripe_P24' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-p24.php', + 'WC_Gateway_Stripe_Sepa' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-sepa.php', + 'WC_Gateway_Stripe_Sofort' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-sofort.php', + 'WC_Payment_Token_ACH' => __DIR__ . '/payment-tokens/class-wc-stripe-ach-payment-token.php', + 'WC_Payment_Token_ACSS' => __DIR__ . '/payment-tokens/class-wc-stripe-acss-payment-token.php', + 'WC_Payment_Token_Amazon_Pay' => __DIR__ . '/payment-tokens/class-wc-stripe-amazon-pay-payment-token.php', + 'WC_Payment_Token_Bacs_Debit' => __DIR__ . '/payment-tokens/class-wc-stripe-bacs-payment-token.php', + 'WC_Payment_Token_Becs_Debit' => __DIR__ . '/payment-tokens/class-wc-stripe-becs-debit-payment-token.php', + 'WC_Payment_Token_CashApp' => __DIR__ . '/payment-tokens/class-wc-stripe-cash-app-payment-token.php', + 'WC_Payment_Token_Link' => __DIR__ . '/payment-tokens/class-wc-stripe-link-payment-token.php', + 'WC_Payment_Token_SEPA' => __DIR__ . '/payment-tokens/class-wc-stripe-sepa-payment-token.php', + 'WC_Stripe_Account' => __DIR__ . '/class-wc-stripe-account.php', + 'WC_Stripe_Action_Scheduler_Service' => __DIR__ . '/class-wc-stripe-action-scheduler-service.php', + 'WC_Stripe_API' => __DIR__ . '/class-wc-stripe-api.php', + 'WC_Stripe_Apple_Pay_Registration' => __DIR__ . '/class-wc-stripe-apple-pay-registration.php', + 'WC_Stripe_Blocks_Support' => __DIR__ . '/class-wc-stripe-blocks-support.php', + 'WC_Stripe_Co_Branded_CC_Compatibility' => __DIR__ . '/class-wc-stripe-co-branded-cc-compatibility.php', + 'WC_Stripe_Connect' => __DIR__ . '/connect/class-wc-stripe-connect.php', + 'WC_Stripe_Connect_API' => __DIR__ . '/connect/class-wc-stripe-connect-api.php', + 'WC_Stripe_Connect_REST_Controller' => __DIR__ . '/abstracts/abstract-wc-stripe-connect-rest-controller.php', + 'WC_Stripe_Connect_REST_Oauth_Connect_Controller' => __DIR__ . '/connect/class-wc-stripe-connect-rest-oauth-connect-controller.php', + 'WC_Stripe_Connect_REST_Oauth_Init_Controller' => __DIR__ . '/connect/class-wc-stripe-connect-rest-oauth-init-controller.php', + 'WC_Stripe_Currency_Code' => __DIR__ . '/constants/class-wc-stripe-currency-code.php', + 'WC_Stripe_Customer' => __DIR__ . '/class-wc-stripe-customer.php', + 'WC_Stripe_Email_Failed_Authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-authentication.php', + 'WC_Stripe_Email_Failed_Authentication_Retry' => __DIR__ . '/compat/class-wc-stripe-email-failed-authentication-retry.php', + 'WC_Stripe_Email_Failed_Preorder_Authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-preorder-authentication.php', + 'WC_Stripe_Email_Failed_Renewal_Authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-renewal-authentication.php', + 'WC_Stripe_Exception' => __DIR__ . '/class-wc-stripe-exception.php', + 'WC_Stripe_Express_Checkout_Ajax_Handler' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php', + 'WC_Stripe_Express_Checkout_Element' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-element.php', + 'WC_Stripe_Express_Checkout_Helper' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-helper.php', + 'WC_Stripe_Feature_Flags' => __DIR__ . '/class-wc-stripe-feature-flags.php', + 'WC_Stripe_Fingerprint_Trait' => __DIR__ . '/payment-tokens/trait-wc-stripe-fingerprint.php', + 'WC_Stripe_Helper' => __DIR__ . '/class-wc-stripe-helper.php', + 'WC_Stripe_Hong_Kong_States' => __DIR__ . '/constants/class-wc-stripe-hong-kong-states.php', + 'WC_Stripe_Intent_Controller' => __DIR__ . '/class-wc-stripe-intent-controller.php', + 'WC_Stripe_Intent_Status' => __DIR__ . '/constants/class-wc-stripe-intent-status.php', + 'WC_Stripe_Logger' => __DIR__ . '/class-wc-stripe-logger.php', + 'WC_Stripe_Mode' => __DIR__ . '/class-wc-stripe-mode.php', + 'WC_Stripe_Order' => __DIR__ . '/class-wc-stripe-order.php', + 'WC_Stripe_Order_Handler' => __DIR__ . '/class-wc-stripe-order-handler.php', + 'WC_Stripe_Payment_Gateway' => __DIR__ . '/abstracts/abstract-wc-stripe-payment-gateway.php', + 'WC_Stripe_Payment_Gateway_Voucher' => __DIR__ . '/abstracts/abstract-wc-stripe-payment-gateway-voucher.php', + 'WC_Stripe_Payment_Method_Comparison_Interface' => __DIR__ . '/payment-tokens/interface-wc-stripe-payment-method-comparison.php', + 'WC_Stripe_Payment_Method_Configurations' => __DIR__ . '/class-wc-stripe-payment-method-configurations.php', + 'WC_Stripe_Payment_Methods' => __DIR__ . '/constants/class-wc-stripe-payment-methods.php', + 'WC_Stripe_Payment_Request' => __DIR__ . '/payment-methods/class-wc-stripe-payment-request.php', + 'WC_Stripe_Payment_Request_Button_States' => __DIR__ . '/constants/class-wc-stripe-payment-request-button-states.php', + 'WC_Stripe_Payment_Token_CC' => __DIR__ . '/payment-tokens/class-wc-stripe-cc-payment-token.php', + 'WC_Stripe_Payment_Tokens' => __DIR__ . '/payment-tokens/class-wc-stripe-payment-tokens.php', + 'WC_Stripe_Pre_Orders_Trait' => __DIR__ . '/compat/trait-wc-stripe-pre-orders.php', + 'WC_Stripe_UPE_Availability_Note' => __DIR__ . '/notes/class-wc-stripe-upe-availability-note.php', + 'WC_Stripe_UPE_Compatibility' => __DIR__ . '/class-wc-stripe-upe-compatibility.php', + 'WC_Stripe_UPE_Payment_Gateway' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-gateway.php', + 'WC_Stripe_UPE_Payment_Method' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method.php', + 'WC_Stripe_UPE_Payment_Method_ACH' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-ach.php', + 'WC_Stripe_UPE_Payment_Method_ACSS' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-acss.php', + 'WC_Stripe_UPE_Payment_Method_Affirm' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-affirm.php', + 'WC_Stripe_UPE_Payment_Method_Afterpay_Clearpay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-afterpay-clearpay.php', + 'WC_Stripe_UPE_Payment_Method_Alipay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-alipay.php', + 'WC_Stripe_UPE_Payment_Method_Amazon_Pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-amazon-pay.php', + 'WC_Stripe_UPE_Payment_Method_Bacs_Debit' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-bacs-debit.php', + 'WC_Stripe_UPE_Payment_Method_Bancontact' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-bancontact.php', + 'WC_Stripe_UPE_Payment_Method_Becs_Debit' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-becs-debit.php', + 'WC_Stripe_UPE_Payment_Method_BLIK' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-blik.php', + 'WC_Stripe_UPE_Payment_Method_Boleto' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-boleto.php', + 'WC_Stripe_UPE_Payment_Method_Cash_App_Pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-cash-app-pay.php', + 'WC_Stripe_UPE_Payment_Method_CC' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-cc.php', + 'WC_Stripe_UPE_Payment_Method_Eps' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-eps.php', + 'WC_Stripe_UPE_Payment_Method_Giropay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-giropay.php', + 'WC_Stripe_UPE_Payment_Method_Ideal' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-ideal.php', + 'WC_Stripe_UPE_Payment_Method_Klarna' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-klarna.php', + 'WC_Stripe_UPE_Payment_Method_Link' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-link.php', + 'WC_Stripe_UPE_Payment_Method_Multibanco' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-multibanco.php', + 'WC_Stripe_UPE_Payment_Method_Oxxo' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-oxxo.php', + 'WC_Stripe_UPE_Payment_Method_P24' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-p24.php', + 'WC_Stripe_UPE_Payment_Method_Sepa' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-sepa.php', + 'WC_Stripe_UPE_Payment_Method_Sofort' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-sofort.php', + 'WC_Stripe_UPE_Payment_Method_Wechat_Pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-wechat-pay.php', + 'WC_Stripe_UPE_StripeLink_Note' => __DIR__ . '/notes/class-wc-stripe-upe-stripe-link-note.php', + 'WC_Stripe_Status' => __DIR__ . '/class-wc-stripe-status.php', + 'WC_Stripe_Subscriptions_Helper' => __DIR__ . '/compat/class-wc-stripe-subscriptions-helper.php', + 'WC_Stripe_Subscriptions_Legacy_SEPA_Token_Update' => __DIR__ . '/compat/class-wc-stripe-subscriptions-legacy-sepa-token-update.php', + 'WC_Stripe_Subscriptions_Trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions.php', + 'WC_Stripe_Subscriptions_Utilities_Trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions-utilities.php', + 'WC_Stripe_Webhook_Handler' => __DIR__ . '/class-wc-stripe-webhook-handler.php', + 'WC_Stripe_Webhook_State' => __DIR__ . '/class-wc-stripe-webhook-state.php', + 'WC_Stripe_Woo_Compat_Utils' => __DIR__ . '/compat/class-wc-stripe-woo-compat-utils.php', + ]; + } + + /** + * Returns the classmap for admin-specific classes for the plugin. + * + * @return array + */ + private static function get_admin_classmap() { + return [ + 'WC_REST_Stripe_Account_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-controller.php', + 'WC_REST_Stripe_Account_Keys_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-keys-controller.php', + 'WC_REST_Stripe_Connection_Tokens_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-connection-tokens-controller.php', + 'WC_REST_Stripe_Locations_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-locations-controller.php', + 'WC_REST_Stripe_Orders_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-orders-controller.php', + 'WC_REST_Stripe_Settings_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-settings-controller.php', + 'WC_REST_Stripe_Tokens_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-tokens-controller.php', + 'WC_Stripe_Admin_Inbox_Notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', + 'WC_Stripe_Admin_Notices' => __DIR__ . '/admin/class-wc-stripe-admin-notices.php', + 'WC_Stripe_Admin_UPE_Compatibility_Controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', + 'WC_Stripe_Amazon_Pay_Controller' => __DIR__ . '/admin/class-wc-stripe-amazon-pay-controller.php', + // Disabled as this class is used in non-admin contexts, and it instantiates the class as a side effect. + //'WC_Stripe_Inbox_Notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', + 'WC_Stripe_Payment_Gateways_Controller' => __DIR__ . '/admin/class-wc-stripe-payment-gateways-controller.php', + 'WC_Stripe_Payment_Requests_Controller' => __DIR__ . '/admin/class-wc-stripe-payment-requests-controller.php', + 'WC_Stripe_Privacy' => __DIR__ . '/admin/class-wc-stripe-privacy.php', + 'WC_Stripe_REST_Base_Controller' => __DIR__ . '/admin/class-wc-stripe-rest-base-controller.php', + 'WC_Stripe_REST_UPE_Flag_Toggle_Controller' => __DIR__ . '/admin/class-wc-stripe-rest-upe-flag-toggle-controller.php', + 'WC_Stripe_Settings_Controller' => __DIR__ . '/admin/class-wc-stripe-settings-controller.php', + 'WC_Stripe_UPE_Compatibility_Controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', + ]; + } +} + +WC_Stripe_Autoloader::init(); From bcc2cd07c207434fd07019f63633654b51fed180 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Thu, 24 Apr 2025 13:40:00 +0200 Subject: [PATCH 02/15] Remove require_onces; instantiate classes directly instead of implicitly --- .../admin/class-wc-stripe-admin-notices.php | 2 - includes/admin/class-wc-stripe-privacy.php | 2 - .../deprecated/class-wc-stripe-apple-pay.php | 2 - woocommerce-gateway-stripe.php | 112 ++---------------- 4 files changed, 8 insertions(+), 110 deletions(-) diff --git a/includes/admin/class-wc-stripe-admin-notices.php b/includes/admin/class-wc-stripe-admin-notices.php index 0279338d4a..b8841c9323 100644 --- a/includes/admin/class-wc-stripe-admin-notices.php +++ b/includes/admin/class-wc-stripe-admin-notices.php @@ -601,5 +601,3 @@ public function stripe_updated() { } } } - -new WC_Stripe_Admin_Notices(); diff --git a/includes/admin/class-wc-stripe-privacy.php b/includes/admin/class-wc-stripe-privacy.php index ff909f1116..ae894689e1 100644 --- a/includes/admin/class-wc-stripe-privacy.php +++ b/includes/admin/class-wc-stripe-privacy.php @@ -447,5 +447,3 @@ public function is_retention_expired( $created_date ) { return $is_expired; } } - -new WC_Stripe_Privacy(); diff --git a/includes/deprecated/class-wc-stripe-apple-pay.php b/includes/deprecated/class-wc-stripe-apple-pay.php index 2179169211..b5500a4431 100644 --- a/includes/deprecated/class-wc-stripe-apple-pay.php +++ b/includes/deprecated/class-wc-stripe-apple-pay.php @@ -33,5 +33,3 @@ public function __call( $name, $arguments ) { } } } - -new WC_Stripe_Apple_Pay(); diff --git a/woocommerce-gateway-stripe.php b/woocommerce-gateway-stripe.php index 5da8d200ad..2be59c6921 100644 --- a/woocommerce-gateway-stripe.php +++ b/woocommerce-gateway-stripe.php @@ -82,6 +82,8 @@ function woocommerce_gateway_stripe() { if ( ! isset( $plugin ) ) { + require_once __DIR__ . '/includes/class-wc-stripe-autoloader.php'; + class WC_Stripe { /** @@ -188,99 +190,12 @@ public function __construct() { */ public function init() { if ( is_admin() ) { - require_once __DIR__ . '/includes/admin/class-wc-stripe-privacy.php'; + new WC_Stripe_Privacy(); } - require_once __DIR__ . '/includes/class-wc-stripe-order.php'; - require_once __DIR__ . '/includes/class-wc-stripe-feature-flags.php'; - require_once __DIR__ . '/includes/class-wc-stripe-upe-compatibility.php'; - require_once __DIR__ . '/includes/class-wc-stripe-co-branded-cc-compatibility.php'; - require_once __DIR__ . '/includes/class-wc-stripe-exception.php'; - require_once __DIR__ . '/includes/class-wc-stripe-logger.php'; - require_once __DIR__ . '/includes/class-wc-stripe-helper.php'; - require_once __DIR__ . '/includes/class-wc-stripe-payment-method-configurations.php'; - include_once __DIR__ . '/includes/class-wc-stripe-api.php'; - include_once __DIR__ . '/includes/class-wc-stripe-mode.php'; - require_once __DIR__ . '/includes/compat/class-wc-stripe-subscriptions-helper.php'; - require_once __DIR__ . '/includes/compat/trait-wc-stripe-subscriptions-utilities.php'; - require_once __DIR__ . '/includes/compat/trait-wc-stripe-subscriptions.php'; - require_once __DIR__ . '/includes/compat/trait-wc-stripe-pre-orders.php'; - require_once __DIR__ . '/includes/compat/class-wc-stripe-subscriptions-legacy-sepa-token-update.php'; - require_once __DIR__ . '/includes/abstracts/abstract-wc-stripe-payment-gateway.php'; - require_once __DIR__ . '/includes/abstracts/abstract-wc-stripe-payment-gateway-voucher.php'; - require_once __DIR__ . '/includes/class-wc-stripe-action-scheduler-service.php'; - require_once __DIR__ . '/includes/class-wc-stripe-webhook-state.php'; - require_once __DIR__ . '/includes/class-wc-stripe-webhook-handler.php'; - require_once __DIR__ . '/includes/payment-tokens/trait-wc-stripe-fingerprint.php'; - require_once __DIR__ . '/includes/payment-tokens/interface-wc-stripe-payment-method-comparison.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-cc-payment-token.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-ach-payment-token.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-acss-payment-token.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-sepa-payment-token.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-link-payment-token.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-cash-app-payment-token.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-bacs-payment-token.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-becs-debit-payment-token.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-amazon-pay-payment-token.php'; - require_once __DIR__ . '/includes/class-wc-stripe-apple-pay-registration.php'; - require_once __DIR__ . '/includes/class-wc-stripe-status.php'; - require_once __DIR__ . '/includes/class-wc-gateway-stripe.php'; - require_once __DIR__ . '/includes/constants/class-wc-stripe-currency-code.php'; - require_once __DIR__ . '/includes/constants/class-wc-stripe-payment-methods.php'; - require_once __DIR__ . '/includes/constants/class-wc-stripe-intent-status.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-gateway.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-cc.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-ach.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-alipay.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-bacs-debit.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-becs-debit.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-blik.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-giropay.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-ideal.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-klarna.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-affirm.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-afterpay-clearpay.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-bancontact.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-boleto.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-oxxo.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-eps.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-sepa.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-p24.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-sofort.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-multibanco.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-link.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-cash-app-pay.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-wechat-pay.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-acss.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-upe-payment-method-amazon-pay.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-bancontact.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-sofort.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-giropay.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-eps.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-ideal.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-p24.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-alipay.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-sepa.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-multibanco.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-boleto.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-gateway-stripe-oxxo.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-payment-request.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-express-checkout-element.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-express-checkout-helper.php'; - require_once __DIR__ . '/includes/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php'; - require_once __DIR__ . '/includes/compat/class-wc-stripe-woo-compat-utils.php'; - require_once __DIR__ . '/includes/connect/class-wc-stripe-connect.php'; - require_once __DIR__ . '/includes/connect/class-wc-stripe-connect-api.php'; - require_once __DIR__ . '/includes/class-wc-stripe-order-handler.php'; - require_once __DIR__ . '/includes/payment-tokens/class-wc-stripe-payment-tokens.php'; - require_once __DIR__ . '/includes/class-wc-stripe-customer.php'; - require_once __DIR__ . '/includes/class-wc-stripe-intent-controller.php'; require_once __DIR__ . '/includes/admin/class-wc-stripe-inbox-notes.php'; - require_once __DIR__ . '/includes/admin/class-wc-stripe-upe-compatibility-controller.php'; - require_once __DIR__ . '/includes/migrations/class-allowed-payment-request-button-types-update.php'; - require_once __DIR__ . '/includes/migrations/class-migrate-payment-request-data-to-express-checkout-data.php'; - require_once __DIR__ . '/includes/class-wc-stripe-account.php'; + + new WC_Stripe_Apple_Pay_Registration(); new Allowed_Payment_Request_Button_Types_Update(); // TODO: Temporary disabling the migration as it has a conflict with the new UPE checkout. @@ -298,27 +213,23 @@ public function init() { $intent_controller->init_hooks(); if ( is_admin() ) { - require_once __DIR__ . '/includes/admin/class-wc-stripe-admin-notices.php'; - require_once __DIR__ . '/includes/admin/class-wc-stripe-settings-controller.php'; + new WC_Stripe_Admin_Notices(); if ( isset( $_GET['area'] ) && 'payment_requests' === $_GET['area'] ) { - require_once __DIR__ . '/includes/admin/class-wc-stripe-payment-requests-controller.php'; new WC_Stripe_Payment_Requests_Controller(); } elseif ( isset( $_GET['area'] ) && 'amazon_pay' === $_GET['area'] && WC_Stripe_Feature_Flags::is_amazon_pay_available() ) { - require_once __DIR__ . '/includes/admin/class-wc-stripe-amazon-pay-controller.php'; new WC_Stripe_Amazon_Pay_Controller(); } else { new WC_Stripe_Settings_Controller( $this->account ); } if ( WC_Stripe_Feature_Flags::is_upe_checkout_enabled() ) { - require_once __DIR__ . '/includes/admin/class-wc-stripe-payment-gateways-controller.php'; new WC_Stripe_Payment_Gateways_Controller(); } } // REMOVE IN THE FUTURE. - require_once __DIR__ . '/includes/deprecated/class-wc-stripe-apple-pay.php'; + new WC_Stripe_Apple_Pay(); add_filter( 'woocommerce_payment_gateways', [ $this, 'add_gateways' ] ); add_filter( 'pre_update_option_woocommerce_stripe_settings', [ $this, 'gateway_settings_update' ], 10, 2 ); @@ -711,11 +622,6 @@ protected function disable_upe( $settings ) { * @return WC_Email[] */ public function add_emails( $email_classes ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-email-failed-authentication.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-email-failed-renewal-authentication.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-email-failed-preorder-authentication.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-email-failed-authentication-retry.php'; - // Add all emails, generated by the gateway. $email_classes['WC_Stripe_Email_Failed_Renewal_Authentication'] = new WC_Stripe_Email_Failed_Renewal_Authentication( $email_classes ); $email_classes['WC_Stripe_Email_Failed_Preorder_Authentication'] = new WC_Stripe_Email_Failed_Preorder_Authentication( $email_classes ); @@ -731,15 +637,13 @@ public function add_emails( $email_classes ) { */ public function register_routes() { /** API includes */ + // TODO: These are not currently autoloaded when is_admin() is false. require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-rest-base-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/abstracts/abstract-wc-stripe-connect-rest-controller.php'; require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-account-controller.php'; require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-connection-tokens-controller.php'; require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-locations-controller.php'; require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-orders-controller.php'; require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-tokens-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/connect/class-wc-stripe-connect-rest-oauth-init-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/connect/class-wc-stripe-connect-rest-oauth-connect-controller.php'; $connection_tokens_controller = new WC_REST_Stripe_Connection_Tokens_Controller( $this->get_main_stripe_gateway() ); $locations_controller = new WC_REST_Stripe_Locations_Controller(); From 384722b9043cc669ba6545999b6fd091b07b14b0 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Thu, 24 Apr 2025 16:21:17 +0200 Subject: [PATCH 03/15] Add WC_Stripe_Apple_Pay to class map --- includes/class-wc-stripe-autoloader.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php index 6fb33fdfbc..d651369e78 100644 --- a/includes/class-wc-stripe-autoloader.php +++ b/includes/class-wc-stripe-autoloader.php @@ -92,6 +92,7 @@ private static function get_classmap() { 'WC_Stripe_Account' => __DIR__ . '/class-wc-stripe-account.php', 'WC_Stripe_Action_Scheduler_Service' => __DIR__ . '/class-wc-stripe-action-scheduler-service.php', 'WC_Stripe_API' => __DIR__ . '/class-wc-stripe-api.php', + 'WC_Stripe_Apple_Pay' => __DIR__ . '/deprecated/class-wc-stripe-apple-pay.php', 'WC_Stripe_Apple_Pay_Registration' => __DIR__ . '/class-wc-stripe-apple-pay-registration.php', 'WC_Stripe_Blocks_Support' => __DIR__ . '/class-wc-stripe-blocks-support.php', 'WC_Stripe_Co_Branded_CC_Compatibility' => __DIR__ . '/class-wc-stripe-co-branded-cc-compatibility.php', From 3b97a00912f6dddb7d12272553891d6868eb3022 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Thu, 24 Apr 2025 16:22:10 +0200 Subject: [PATCH 04/15] Move REST APIs in includes/admin/ to main class map --- includes/class-wc-stripe-autoloader.php | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php index d651369e78..9bf2570910 100644 --- a/includes/class-wc-stripe-autoloader.php +++ b/includes/class-wc-stripe-autoloader.php @@ -89,8 +89,17 @@ private static function get_classmap() { 'WC_Payment_Token_CashApp' => __DIR__ . '/payment-tokens/class-wc-stripe-cash-app-payment-token.php', 'WC_Payment_Token_Link' => __DIR__ . '/payment-tokens/class-wc-stripe-link-payment-token.php', 'WC_Payment_Token_SEPA' => __DIR__ . '/payment-tokens/class-wc-stripe-sepa-payment-token.php', + 'WC_REST_Stripe_Account_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-controller.php', + 'WC_REST_Stripe_Account_Keys_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-keys-controller.php', + 'WC_REST_Stripe_Connection_Tokens_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-connection-tokens-controller.php', + 'WC_REST_Stripe_Locations_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-locations-controller.php', + 'WC_REST_Stripe_Orders_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-orders-controller.php', + 'WC_REST_Stripe_Settings_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-settings-controller.php', + 'WC_REST_Stripe_Tokens_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-tokens-controller.php', 'WC_Stripe_Account' => __DIR__ . '/class-wc-stripe-account.php', 'WC_Stripe_Action_Scheduler_Service' => __DIR__ . '/class-wc-stripe-action-scheduler-service.php', + 'WC_Stripe_Admin_UPE_Compatibility_Controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', + 'WC_Stripe_Amazon_Pay_Controller' => __DIR__ . '/admin/class-wc-stripe-amazon-pay-controller.php', 'WC_Stripe_API' => __DIR__ . '/class-wc-stripe-api.php', 'WC_Stripe_Apple_Pay' => __DIR__ . '/deprecated/class-wc-stripe-apple-pay.php', 'WC_Stripe_Apple_Pay_Registration' => __DIR__ . '/class-wc-stripe-apple-pay-registration.php', @@ -123,16 +132,22 @@ private static function get_classmap() { 'WC_Stripe_Order_Handler' => __DIR__ . '/class-wc-stripe-order-handler.php', 'WC_Stripe_Payment_Gateway' => __DIR__ . '/abstracts/abstract-wc-stripe-payment-gateway.php', 'WC_Stripe_Payment_Gateway_Voucher' => __DIR__ . '/abstracts/abstract-wc-stripe-payment-gateway-voucher.php', + 'WC_Stripe_Payment_Gateways_Controller' => __DIR__ . '/admin/class-wc-stripe-payment-gateways-controller.php', 'WC_Stripe_Payment_Method_Comparison_Interface' => __DIR__ . '/payment-tokens/interface-wc-stripe-payment-method-comparison.php', 'WC_Stripe_Payment_Method_Configurations' => __DIR__ . '/class-wc-stripe-payment-method-configurations.php', 'WC_Stripe_Payment_Methods' => __DIR__ . '/constants/class-wc-stripe-payment-methods.php', 'WC_Stripe_Payment_Request' => __DIR__ . '/payment-methods/class-wc-stripe-payment-request.php', 'WC_Stripe_Payment_Request_Button_States' => __DIR__ . '/constants/class-wc-stripe-payment-request-button-states.php', + 'WC_Stripe_Payment_Requests_Controller' => __DIR__ . '/admin/class-wc-stripe-payment-requests-controller.php', 'WC_Stripe_Payment_Token_CC' => __DIR__ . '/payment-tokens/class-wc-stripe-cc-payment-token.php', 'WC_Stripe_Payment_Tokens' => __DIR__ . '/payment-tokens/class-wc-stripe-payment-tokens.php', 'WC_Stripe_Pre_Orders_Trait' => __DIR__ . '/compat/trait-wc-stripe-pre-orders.php', + 'WC_Stripe_REST_Base_Controller' => __DIR__ . '/admin/class-wc-stripe-rest-base-controller.php', + 'WC_Stripe_REST_UPE_Flag_Toggle_Controller' => __DIR__ . '/admin/class-wc-stripe-rest-upe-flag-toggle-controller.php', + 'WC_Stripe_Settings_Controller' => __DIR__ . '/admin/class-wc-stripe-settings-controller.php', 'WC_Stripe_UPE_Availability_Note' => __DIR__ . '/notes/class-wc-stripe-upe-availability-note.php', 'WC_Stripe_UPE_Compatibility' => __DIR__ . '/class-wc-stripe-upe-compatibility.php', + 'WC_Stripe_UPE_Compatibility_Controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', 'WC_Stripe_UPE_Payment_Gateway' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-gateway.php', 'WC_Stripe_UPE_Payment_Method' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method.php', 'WC_Stripe_UPE_Payment_Method_ACH' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-ach.php', @@ -178,26 +193,11 @@ private static function get_classmap() { */ private static function get_admin_classmap() { return [ - 'WC_REST_Stripe_Account_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-controller.php', - 'WC_REST_Stripe_Account_Keys_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-keys-controller.php', - 'WC_REST_Stripe_Connection_Tokens_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-connection-tokens-controller.php', - 'WC_REST_Stripe_Locations_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-locations-controller.php', - 'WC_REST_Stripe_Orders_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-orders-controller.php', - 'WC_REST_Stripe_Settings_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-settings-controller.php', - 'WC_REST_Stripe_Tokens_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-tokens-controller.php', 'WC_Stripe_Admin_Inbox_Notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', 'WC_Stripe_Admin_Notices' => __DIR__ . '/admin/class-wc-stripe-admin-notices.php', - 'WC_Stripe_Admin_UPE_Compatibility_Controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', - 'WC_Stripe_Amazon_Pay_Controller' => __DIR__ . '/admin/class-wc-stripe-amazon-pay-controller.php', // Disabled as this class is used in non-admin contexts, and it instantiates the class as a side effect. //'WC_Stripe_Inbox_Notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', - 'WC_Stripe_Payment_Gateways_Controller' => __DIR__ . '/admin/class-wc-stripe-payment-gateways-controller.php', - 'WC_Stripe_Payment_Requests_Controller' => __DIR__ . '/admin/class-wc-stripe-payment-requests-controller.php', 'WC_Stripe_Privacy' => __DIR__ . '/admin/class-wc-stripe-privacy.php', - 'WC_Stripe_REST_Base_Controller' => __DIR__ . '/admin/class-wc-stripe-rest-base-controller.php', - 'WC_Stripe_REST_UPE_Flag_Toggle_Controller' => __DIR__ . '/admin/class-wc-stripe-rest-upe-flag-toggle-controller.php', - 'WC_Stripe_Settings_Controller' => __DIR__ . '/admin/class-wc-stripe-settings-controller.php', - 'WC_Stripe_UPE_Compatibility_Controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', ]; } } From aae0eb3b7e7898573db75bfd13ab7091019ab2ec Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Thu, 24 Apr 2025 16:23:09 +0200 Subject: [PATCH 05/15] Fix case to match case sensitivity of autoloader --- includes/class-wc-stripe-customer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-stripe-customer.php b/includes/class-wc-stripe-customer.php index 12c8f6e05e..536766141c 100644 --- a/includes/class-wc-stripe-customer.php +++ b/includes/class-wc-stripe-customer.php @@ -20,7 +20,7 @@ class WC_Stripe_Customer { */ const STRIPE_PAYMENT_METHODS = [ WC_Stripe_UPE_Payment_Method_CC::STRIPE_ID, - WC_Stripe_UPE_Payment_Method_LINK::STRIPE_ID, + WC_Stripe_UPE_Payment_Method_Link::STRIPE_ID, WC_Stripe_UPE_Payment_Method_Sepa::STRIPE_ID, WC_Stripe_UPE_Payment_Method_Cash_App_Pay::STRIPE_ID, WC_Stripe_UPE_Payment_Method_ACH::STRIPE_ID, From 20f59ed7ef8eb18af749affeb5ea0efb09175eb1 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Thu, 24 Apr 2025 18:00:14 +0200 Subject: [PATCH 06/15] Remove unnecessary requires for REST controllers --- woocommerce-gateway-stripe.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/woocommerce-gateway-stripe.php b/woocommerce-gateway-stripe.php index 2be59c6921..c94e88d059 100644 --- a/woocommerce-gateway-stripe.php +++ b/woocommerce-gateway-stripe.php @@ -636,15 +636,6 @@ public function add_emails( $email_classes ) { * New endpoints/controllers can be added here. */ public function register_routes() { - /** API includes */ - // TODO: These are not currently autoloaded when is_admin() is false. - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-rest-base-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-account-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-connection-tokens-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-locations-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-orders-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-tokens-controller.php'; - $connection_tokens_controller = new WC_REST_Stripe_Connection_Tokens_Controller( $this->get_main_stripe_gateway() ); $locations_controller = new WC_REST_Stripe_Locations_Controller(); $orders_controller = new WC_REST_Stripe_Orders_Controller( $this->get_main_stripe_gateway() ); @@ -662,10 +653,6 @@ public function register_routes() { $stripe_account_controller->register_routes(); if ( WC_Stripe_Feature_Flags::is_upe_preview_enabled() ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-settings-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-rest-upe-flag-toggle-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-account-keys-controller.php'; - $upe_flag_toggle_controller = new WC_Stripe_REST_UPE_Flag_Toggle_Controller(); $upe_flag_toggle_controller->register_routes(); From 0344b7863c1974176376b766df70392f3d3d0ba6 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Wed, 30 Apr 2025 15:50:35 +0200 Subject: [PATCH 07/15] Switch to case-insensitive logic --- includes/class-wc-stripe-autoloader.php | 260 ++++++++++++------------ 1 file changed, 135 insertions(+), 125 deletions(-) diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php index 9bf2570910..fc6265248f 100644 --- a/includes/class-wc-stripe-autoloader.php +++ b/includes/class-wc-stripe-autoloader.php @@ -28,12 +28,22 @@ class WC_Stripe_Autoloader { * @return boolean True if the class was autoloaded, false otherwise. */ public static function autoload( $class ) { + // We're not using namespaces, so skip if the class name contains a namespace. + if ( str_contains( $class, '\\' ) ) { + return false; + } + + // Note that we lowercase the class name as PHP class names are case-insensitive. + // We intentionally avoid prefix matching because that would require multiple prefix checks for every lookup. + // Instead we use key lookups against static classmaps with one-time load costs. + $class_lower = strtolower( $class ); + if ( null === self::$classmap ) { self::$classmap = self::get_classmap(); } - if ( isset( self::$classmap[ $class ] ) ) { - require self::$classmap[ $class ]; + if ( isset( self::$classmap[ $class_lower ] ) ) { + require self::$classmap[ $class_lower ]; return true; } @@ -43,8 +53,8 @@ public static function autoload( $class ) { self::$admin_classmap = self::get_admin_classmap(); } - if ( isset( self::$admin_classmap[ $class ] ) ) { - require self::$admin_classmap[ $class ]; + if ( isset( self::$admin_classmap[ $class_lower ] ) ) { + require self::$admin_classmap[ $class_lower ]; return true; } @@ -61,128 +71,128 @@ public static function init() { } /** - * Returns the classmap for the plugin. + * Returns the main classmap for the plugin. * * @return array */ private static function get_classmap() { return [ - 'Allowed_Payment_Request_Button_Types_Update' => __DIR__ . '/migrations/class-allowed-payment-request-button-types-update.php', - 'Migrate_Payment_Request_Data_To_Express_Checkout_Data' => __DIR__ . '/migrations/class-migrate-payment-request-data-to-express-checkout-data.php', - 'WC_Gateway_Stripe' => __DIR__ . '/class-wc-gateway-stripe.php', - 'WC_Gateway_Stripe_Alipay' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-alipay.php', - 'WC_Gateway_Stripe_Bancontact' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-bancontact.php', - 'WC_Gateway_Stripe_Boleto' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-boleto.php', - 'WC_Gateway_Stripe_Eps' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-eps.php', - 'WC_Gateway_Stripe_Giropay' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-giropay.php', - 'WC_Gateway_Stripe_Ideal' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-ideal.php', - 'WC_Gateway_Stripe_Multibanco' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-multibanco.php', - 'WC_Gateway_Stripe_Oxxo' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-oxxo.php', - 'WC_Gateway_Stripe_P24' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-p24.php', - 'WC_Gateway_Stripe_Sepa' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-sepa.php', - 'WC_Gateway_Stripe_Sofort' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-sofort.php', - 'WC_Payment_Token_ACH' => __DIR__ . '/payment-tokens/class-wc-stripe-ach-payment-token.php', - 'WC_Payment_Token_ACSS' => __DIR__ . '/payment-tokens/class-wc-stripe-acss-payment-token.php', - 'WC_Payment_Token_Amazon_Pay' => __DIR__ . '/payment-tokens/class-wc-stripe-amazon-pay-payment-token.php', - 'WC_Payment_Token_Bacs_Debit' => __DIR__ . '/payment-tokens/class-wc-stripe-bacs-payment-token.php', - 'WC_Payment_Token_Becs_Debit' => __DIR__ . '/payment-tokens/class-wc-stripe-becs-debit-payment-token.php', - 'WC_Payment_Token_CashApp' => __DIR__ . '/payment-tokens/class-wc-stripe-cash-app-payment-token.php', - 'WC_Payment_Token_Link' => __DIR__ . '/payment-tokens/class-wc-stripe-link-payment-token.php', - 'WC_Payment_Token_SEPA' => __DIR__ . '/payment-tokens/class-wc-stripe-sepa-payment-token.php', - 'WC_REST_Stripe_Account_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-controller.php', - 'WC_REST_Stripe_Account_Keys_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-keys-controller.php', - 'WC_REST_Stripe_Connection_Tokens_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-connection-tokens-controller.php', - 'WC_REST_Stripe_Locations_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-locations-controller.php', - 'WC_REST_Stripe_Orders_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-orders-controller.php', - 'WC_REST_Stripe_Settings_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-settings-controller.php', - 'WC_REST_Stripe_Tokens_Controller' => __DIR__ . '/admin/class-wc-rest-stripe-tokens-controller.php', - 'WC_Stripe_Account' => __DIR__ . '/class-wc-stripe-account.php', - 'WC_Stripe_Action_Scheduler_Service' => __DIR__ . '/class-wc-stripe-action-scheduler-service.php', - 'WC_Stripe_Admin_UPE_Compatibility_Controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', - 'WC_Stripe_Amazon_Pay_Controller' => __DIR__ . '/admin/class-wc-stripe-amazon-pay-controller.php', - 'WC_Stripe_API' => __DIR__ . '/class-wc-stripe-api.php', - 'WC_Stripe_Apple_Pay' => __DIR__ . '/deprecated/class-wc-stripe-apple-pay.php', - 'WC_Stripe_Apple_Pay_Registration' => __DIR__ . '/class-wc-stripe-apple-pay-registration.php', - 'WC_Stripe_Blocks_Support' => __DIR__ . '/class-wc-stripe-blocks-support.php', - 'WC_Stripe_Co_Branded_CC_Compatibility' => __DIR__ . '/class-wc-stripe-co-branded-cc-compatibility.php', - 'WC_Stripe_Connect' => __DIR__ . '/connect/class-wc-stripe-connect.php', - 'WC_Stripe_Connect_API' => __DIR__ . '/connect/class-wc-stripe-connect-api.php', - 'WC_Stripe_Connect_REST_Controller' => __DIR__ . '/abstracts/abstract-wc-stripe-connect-rest-controller.php', - 'WC_Stripe_Connect_REST_Oauth_Connect_Controller' => __DIR__ . '/connect/class-wc-stripe-connect-rest-oauth-connect-controller.php', - 'WC_Stripe_Connect_REST_Oauth_Init_Controller' => __DIR__ . '/connect/class-wc-stripe-connect-rest-oauth-init-controller.php', - 'WC_Stripe_Currency_Code' => __DIR__ . '/constants/class-wc-stripe-currency-code.php', - 'WC_Stripe_Customer' => __DIR__ . '/class-wc-stripe-customer.php', - 'WC_Stripe_Email_Failed_Authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-authentication.php', - 'WC_Stripe_Email_Failed_Authentication_Retry' => __DIR__ . '/compat/class-wc-stripe-email-failed-authentication-retry.php', - 'WC_Stripe_Email_Failed_Preorder_Authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-preorder-authentication.php', - 'WC_Stripe_Email_Failed_Renewal_Authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-renewal-authentication.php', - 'WC_Stripe_Exception' => __DIR__ . '/class-wc-stripe-exception.php', - 'WC_Stripe_Express_Checkout_Ajax_Handler' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php', - 'WC_Stripe_Express_Checkout_Element' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-element.php', - 'WC_Stripe_Express_Checkout_Helper' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-helper.php', - 'WC_Stripe_Feature_Flags' => __DIR__ . '/class-wc-stripe-feature-flags.php', - 'WC_Stripe_Fingerprint_Trait' => __DIR__ . '/payment-tokens/trait-wc-stripe-fingerprint.php', - 'WC_Stripe_Helper' => __DIR__ . '/class-wc-stripe-helper.php', - 'WC_Stripe_Hong_Kong_States' => __DIR__ . '/constants/class-wc-stripe-hong-kong-states.php', - 'WC_Stripe_Intent_Controller' => __DIR__ . '/class-wc-stripe-intent-controller.php', - 'WC_Stripe_Intent_Status' => __DIR__ . '/constants/class-wc-stripe-intent-status.php', - 'WC_Stripe_Logger' => __DIR__ . '/class-wc-stripe-logger.php', - 'WC_Stripe_Mode' => __DIR__ . '/class-wc-stripe-mode.php', - 'WC_Stripe_Order' => __DIR__ . '/class-wc-stripe-order.php', - 'WC_Stripe_Order_Handler' => __DIR__ . '/class-wc-stripe-order-handler.php', - 'WC_Stripe_Payment_Gateway' => __DIR__ . '/abstracts/abstract-wc-stripe-payment-gateway.php', - 'WC_Stripe_Payment_Gateway_Voucher' => __DIR__ . '/abstracts/abstract-wc-stripe-payment-gateway-voucher.php', - 'WC_Stripe_Payment_Gateways_Controller' => __DIR__ . '/admin/class-wc-stripe-payment-gateways-controller.php', - 'WC_Stripe_Payment_Method_Comparison_Interface' => __DIR__ . '/payment-tokens/interface-wc-stripe-payment-method-comparison.php', - 'WC_Stripe_Payment_Method_Configurations' => __DIR__ . '/class-wc-stripe-payment-method-configurations.php', - 'WC_Stripe_Payment_Methods' => __DIR__ . '/constants/class-wc-stripe-payment-methods.php', - 'WC_Stripe_Payment_Request' => __DIR__ . '/payment-methods/class-wc-stripe-payment-request.php', - 'WC_Stripe_Payment_Request_Button_States' => __DIR__ . '/constants/class-wc-stripe-payment-request-button-states.php', - 'WC_Stripe_Payment_Requests_Controller' => __DIR__ . '/admin/class-wc-stripe-payment-requests-controller.php', - 'WC_Stripe_Payment_Token_CC' => __DIR__ . '/payment-tokens/class-wc-stripe-cc-payment-token.php', - 'WC_Stripe_Payment_Tokens' => __DIR__ . '/payment-tokens/class-wc-stripe-payment-tokens.php', - 'WC_Stripe_Pre_Orders_Trait' => __DIR__ . '/compat/trait-wc-stripe-pre-orders.php', - 'WC_Stripe_REST_Base_Controller' => __DIR__ . '/admin/class-wc-stripe-rest-base-controller.php', - 'WC_Stripe_REST_UPE_Flag_Toggle_Controller' => __DIR__ . '/admin/class-wc-stripe-rest-upe-flag-toggle-controller.php', - 'WC_Stripe_Settings_Controller' => __DIR__ . '/admin/class-wc-stripe-settings-controller.php', - 'WC_Stripe_UPE_Availability_Note' => __DIR__ . '/notes/class-wc-stripe-upe-availability-note.php', - 'WC_Stripe_UPE_Compatibility' => __DIR__ . '/class-wc-stripe-upe-compatibility.php', - 'WC_Stripe_UPE_Compatibility_Controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', - 'WC_Stripe_UPE_Payment_Gateway' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-gateway.php', - 'WC_Stripe_UPE_Payment_Method' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method.php', - 'WC_Stripe_UPE_Payment_Method_ACH' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-ach.php', - 'WC_Stripe_UPE_Payment_Method_ACSS' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-acss.php', - 'WC_Stripe_UPE_Payment_Method_Affirm' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-affirm.php', - 'WC_Stripe_UPE_Payment_Method_Afterpay_Clearpay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-afterpay-clearpay.php', - 'WC_Stripe_UPE_Payment_Method_Alipay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-alipay.php', - 'WC_Stripe_UPE_Payment_Method_Amazon_Pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-amazon-pay.php', - 'WC_Stripe_UPE_Payment_Method_Bacs_Debit' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-bacs-debit.php', - 'WC_Stripe_UPE_Payment_Method_Bancontact' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-bancontact.php', - 'WC_Stripe_UPE_Payment_Method_Becs_Debit' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-becs-debit.php', - 'WC_Stripe_UPE_Payment_Method_BLIK' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-blik.php', - 'WC_Stripe_UPE_Payment_Method_Boleto' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-boleto.php', - 'WC_Stripe_UPE_Payment_Method_Cash_App_Pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-cash-app-pay.php', - 'WC_Stripe_UPE_Payment_Method_CC' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-cc.php', - 'WC_Stripe_UPE_Payment_Method_Eps' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-eps.php', - 'WC_Stripe_UPE_Payment_Method_Giropay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-giropay.php', - 'WC_Stripe_UPE_Payment_Method_Ideal' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-ideal.php', - 'WC_Stripe_UPE_Payment_Method_Klarna' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-klarna.php', - 'WC_Stripe_UPE_Payment_Method_Link' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-link.php', - 'WC_Stripe_UPE_Payment_Method_Multibanco' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-multibanco.php', - 'WC_Stripe_UPE_Payment_Method_Oxxo' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-oxxo.php', - 'WC_Stripe_UPE_Payment_Method_P24' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-p24.php', - 'WC_Stripe_UPE_Payment_Method_Sepa' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-sepa.php', - 'WC_Stripe_UPE_Payment_Method_Sofort' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-sofort.php', - 'WC_Stripe_UPE_Payment_Method_Wechat_Pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-wechat-pay.php', - 'WC_Stripe_UPE_StripeLink_Note' => __DIR__ . '/notes/class-wc-stripe-upe-stripe-link-note.php', - 'WC_Stripe_Status' => __DIR__ . '/class-wc-stripe-status.php', - 'WC_Stripe_Subscriptions_Helper' => __DIR__ . '/compat/class-wc-stripe-subscriptions-helper.php', - 'WC_Stripe_Subscriptions_Legacy_SEPA_Token_Update' => __DIR__ . '/compat/class-wc-stripe-subscriptions-legacy-sepa-token-update.php', - 'WC_Stripe_Subscriptions_Trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions.php', - 'WC_Stripe_Subscriptions_Utilities_Trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions-utilities.php', - 'WC_Stripe_Webhook_Handler' => __DIR__ . '/class-wc-stripe-webhook-handler.php', - 'WC_Stripe_Webhook_State' => __DIR__ . '/class-wc-stripe-webhook-state.php', - 'WC_Stripe_Woo_Compat_Utils' => __DIR__ . '/compat/class-wc-stripe-woo-compat-utils.php', + 'allowed_payment_request_button_types_update' => __DIR__ . '/migrations/class-allowed-payment-request-button-types-update.php', + 'migrate_payment_request_data_to_express_checkout_data' => __DIR__ . '/migrations/class-migrate-payment-request-data-to-express-checkout-data.php', + 'wc_gateway_stripe' => __DIR__ . '/class-wc-gateway-stripe.php', + 'wc_gateway_stripe_alipay' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-alipay.php', + 'wc_gateway_stripe_bancontact' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-bancontact.php', + 'wc_gateway_stripe_boleto' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-boleto.php', + 'wc_gateway_stripe_eps' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-eps.php', + 'wc_gateway_stripe_giropay' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-giropay.php', + 'wc_gateway_stripe_ideal' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-ideal.php', + 'wc_gateway_stripe_multibanco' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-multibanco.php', + 'wc_gateway_stripe_oxxo' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-oxxo.php', + 'wc_gateway_stripe_p24' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-p24.php', + 'wc_gateway_stripe_sepa' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-sepa.php', + 'wc_gateway_stripe_sofort' => __DIR__ . '/payment-methods/class-wc-gateway-stripe-sofort.php', + 'wc_payment_token_ach' => __DIR__ . '/payment-tokens/class-wc-stripe-ach-payment-token.php', + 'wc_payment_token_acss' => __DIR__ . '/payment-tokens/class-wc-stripe-acss-payment-token.php', + 'wc_payment_token_amazon_pay' => __DIR__ . '/payment-tokens/class-wc-stripe-amazon-pay-payment-token.php', + 'wc_payment_token_bacs_debit' => __DIR__ . '/payment-tokens/class-wc-stripe-bacs-payment-token.php', + 'wc_payment_token_becs_debit' => __DIR__ . '/payment-tokens/class-wc-stripe-becs-debit-payment-token.php', + 'wc_payment_token_cashapp' => __DIR__ . '/payment-tokens/class-wc-stripe-cash-app-payment-token.php', + 'wc_payment_token_link' => __DIR__ . '/payment-tokens/class-wc-stripe-link-payment-token.php', + 'wc_payment_token_sepa' => __DIR__ . '/payment-tokens/class-wc-stripe-sepa-payment-token.php', + 'wc_rest_stripe_account_controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-controller.php', + 'wc_rest_stripe_account_keys_controller' => __DIR__ . '/admin/class-wc-rest-stripe-account-keys-controller.php', + 'wc_rest_stripe_connection_tokens_controller' => __DIR__ . '/admin/class-wc-rest-stripe-connection-tokens-controller.php', + 'wc_rest_stripe_locations_controller' => __DIR__ . '/admin/class-wc-rest-stripe-locations-controller.php', + 'wc_rest_stripe_orders_controller' => __DIR__ . '/admin/class-wc-rest-stripe-orders-controller.php', + 'wc_rest_stripe_settings_controller' => __DIR__ . '/admin/class-wc-rest-stripe-settings-controller.php', + 'wc_rest_stripe_tokens_controller' => __DIR__ . '/admin/class-wc-rest-stripe-tokens-controller.php', + 'wc_stripe_account' => __DIR__ . '/class-wc-stripe-account.php', + 'wc_stripe_action_scheduler_service' => __DIR__ . '/class-wc-stripe-action-scheduler-service.php', + 'wc_stripe_admin_upe_compatibility_controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', + 'wc_stripe_amazon_pay_controller' => __DIR__ . '/admin/class-wc-stripe-amazon-pay-controller.php', + 'wc_stripe_api' => __DIR__ . '/class-wc-stripe-api.php', + 'wc_stripe_apple_pay' => __DIR__ . '/deprecated/class-wc-stripe-apple-pay.php', + 'wc_stripe_apple_pay_registration' => __DIR__ . '/class-wc-stripe-apple-pay-registration.php', + 'wc_stripe_blocks_support' => __DIR__ . '/class-wc-stripe-blocks-support.php', + 'wc_stripe_co_branded_cc_compatibility' => __DIR__ . '/class-wc-stripe-co-branded-cc-compatibility.php', + 'wc_stripe_connect' => __DIR__ . '/connect/class-wc-stripe-connect.php', + 'wc_stripe_connect_api' => __DIR__ . '/connect/class-wc-stripe-connect-api.php', + 'wc_stripe_connect_rest_controller' => __DIR__ . '/abstracts/abstract-wc-stripe-connect-rest-controller.php', + 'wc_stripe_connect_rest_oauth_connect_controller' => __DIR__ . '/connect/class-wc-stripe-connect-rest-oauth-connect-controller.php', + 'wc_stripe_connect_rest_oauth_init_controller' => __DIR__ . '/connect/class-wc-stripe-connect-rest-oauth-init-controller.php', + 'wc_stripe_currency_code' => __DIR__ . '/constants/class-wc-stripe-currency-code.php', + 'wc_stripe_customer' => __DIR__ . '/class-wc-stripe-customer.php', + 'wc_stripe_email_failed_authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-authentication.php', + 'wc_stripe_email_failed_authentication_retry' => __DIR__ . '/compat/class-wc-stripe-email-failed-authentication-retry.php', + 'wc_stripe_email_failed_preorder_authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-preorder-authentication.php', + 'wc_stripe_email_failed_renewal_authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-renewal-authentication.php', + 'wc_stripe_exception' => __DIR__ . '/class-wc-stripe-exception.php', + 'wc_stripe_express_checkout_ajax_handler' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php', + 'wc_stripe_express_checkout_element' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-element.php', + 'wc_stripe_express_checkout_helper' => __DIR__ . '/payment-methods/class-wc-stripe-express-checkout-helper.php', + 'wc_stripe_feature_flags' => __DIR__ . '/class-wc-stripe-feature-flags.php', + 'wc_stripe_fingerprint_trait' => __DIR__ . '/payment-tokens/trait-wc-stripe-fingerprint.php', + 'wc_stripe_helper' => __DIR__ . '/class-wc-stripe-helper.php', + 'wc_stripe_hong_kong_states' => __DIR__ . '/constants/class-wc-stripe-hong-kong-states.php', + 'wc_stripe_intent_controller' => __DIR__ . '/class-wc-stripe-intent-controller.php', + 'wc_stripe_intent_status' => __DIR__ . '/constants/class-wc-stripe-intent-status.php', + 'wc_stripe_logger' => __DIR__ . '/class-wc-stripe-logger.php', + 'wc_stripe_mode' => __DIR__ . '/class-wc-stripe-mode.php', + 'wc_stripe_order' => __DIR__ . '/class-wc-stripe-order.php', + 'wc_stripe_order_handler' => __DIR__ . '/class-wc-stripe-order-handler.php', + 'wc_stripe_payment_gateway' => __DIR__ . '/abstracts/abstract-wc-stripe-payment-gateway.php', + 'wc_stripe_payment_gateway_voucher' => __DIR__ . '/abstracts/abstract-wc-stripe-payment-gateway-voucher.php', + 'wc_stripe_payment_gateways_controller' => __DIR__ . '/admin/class-wc-stripe-payment-gateways-controller.php', + 'wc_stripe_payment_method_comparison_interface' => __DIR__ . '/payment-tokens/interface-wc-stripe-payment-method-comparison.php', + 'wc_stripe_payment_method_configurations' => __DIR__ . '/class-wc-stripe-payment-method-configurations.php', + 'wc_stripe_payment_methods' => __DIR__ . '/constants/class-wc-stripe-payment-methods.php', + 'wc_stripe_payment_request' => __DIR__ . '/payment-methods/class-wc-stripe-payment-request.php', + 'wc_stripe_payment_request_button_states' => __DIR__ . '/constants/class-wc-stripe-payment-request-button-states.php', + 'wc_stripe_payment_requests_controller' => __DIR__ . '/admin/class-wc-stripe-payment-requests-controller.php', + 'wc_stripe_payment_token_cc' => __DIR__ . '/payment-tokens/class-wc-stripe-cc-payment-token.php', + 'wc_stripe_payment_tokens' => __DIR__ . '/payment-tokens/class-wc-stripe-payment-tokens.php', + 'wc_stripe_pre_orders_trait' => __DIR__ . '/compat/trait-wc-stripe-pre-orders.php', + 'wc_stripe_rest_base_controller' => __DIR__ . '/admin/class-wc-stripe-rest-base-controller.php', + 'wc_stripe_rest_upe_flag_toggle_controller' => __DIR__ . '/admin/class-wc-stripe-rest-upe-flag-toggle-controller.php', + 'wc_stripe_settings_controller' => __DIR__ . '/admin/class-wc-stripe-settings-controller.php', + 'wc_stripe_upe_availability_note' => __DIR__ . '/notes/class-wc-stripe-upe-availability-note.php', + 'wc_stripe_upe_compatibility' => __DIR__ . '/class-wc-stripe-upe-compatibility.php', + 'wc_stripe_upe_compatibility_controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', + 'wc_stripe_upe_payment_gateway' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-gateway.php', + 'wc_stripe_upe_payment_method' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method.php', + 'wc_stripe_upe_payment_method_ach' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-ach.php', + 'wc_stripe_upe_payment_method_acss' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-acss.php', + 'wc_stripe_upe_payment_method_affirm' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-affirm.php', + 'wc_stripe_upe_payment_method_afterpay_clearpay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-afterpay-clearpay.php', + 'wc_stripe_upe_payment_method_alipay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-alipay.php', + 'wc_stripe_upe_payment_method_amazon_pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-amazon-pay.php', + 'wc_stripe_upe_payment_method_bacs_debit' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-bacs-debit.php', + 'wc_stripe_upe_payment_method_bancontact' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-bancontact.php', + 'wc_stripe_upe_payment_method_becs_debit' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-becs-debit.php', + 'wc_stripe_upe_payment_method_blik' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-blik.php', + 'wc_stripe_upe_payment_method_boleto' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-boleto.php', + 'wc_stripe_upe_payment_method_cash_app_pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-cash-app-pay.php', + 'wc_stripe_upe_payment_method_cc' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-cc.php', + 'wc_stripe_upe_payment_method_eps' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-eps.php', + 'wc_stripe_upe_payment_method_giropay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-giropay.php', + 'wc_stripe_upe_payment_method_ideal' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-ideal.php', + 'wc_stripe_upe_payment_method_klarna' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-klarna.php', + 'wc_stripe_upe_payment_method_link' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-link.php', + 'wc_stripe_upe_payment_method_multibanco' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-multibanco.php', + 'wc_stripe_upe_payment_method_oxxo' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-oxxo.php', + 'wc_stripe_upe_payment_method_p24' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-p24.php', + 'wc_stripe_upe_payment_method_sepa' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-sepa.php', + 'wc_stripe_upe_payment_method_sofort' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-sofort.php', + 'wc_stripe_upe_payment_method_wechat_pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-wechat-pay.php', + 'wc_stripe_upe_stripelink_note' => __DIR__ . '/notes/class-wc-stripe-upe-stripe-link-note.php', + 'wc_stripe_status' => __DIR__ . '/class-wc-stripe-status.php', + 'wc_stripe_subscriptions_helper' => __DIR__ . '/compat/class-wc-stripe-subscriptions-helper.php', + 'wc_stripe_subscriptions_legacy_sepa_token_update' => __DIR__ . '/compat/class-wc-stripe-subscriptions-legacy-sepa-token-update.php', + 'wc_stripe_subscriptions_trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions.php', + 'wc_stripe_subscriptions_utilities_trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions-utilities.php', + 'wc_stripe_webhook_handler' => __DIR__ . '/class-wc-stripe-webhook-handler.php', + 'wc_stripe_webhook_state' => __DIR__ . '/class-wc-stripe-webhook-state.php', + 'wc_stripe_woo_compat_utils' => __DIR__ . '/compat/class-wc-stripe-woo-compat-utils.php', ]; } @@ -193,11 +203,11 @@ private static function get_classmap() { */ private static function get_admin_classmap() { return [ - 'WC_Stripe_Admin_Inbox_Notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', - 'WC_Stripe_Admin_Notices' => __DIR__ . '/admin/class-wc-stripe-admin-notices.php', + 'wc_stripe_admin_inbox_notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', + 'wc_stripe_admin_notices' => __DIR__ . '/admin/class-wc-stripe-admin-notices.php', // Disabled as this class is used in non-admin contexts, and it instantiates the class as a side effect. - //'WC_Stripe_Inbox_Notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', - 'WC_Stripe_Privacy' => __DIR__ . '/admin/class-wc-stripe-privacy.php', + //'wc_stripe_inbox_notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', + 'wc_stripe_privacy' => __DIR__ . '/admin/class-wc-stripe-privacy.php', ]; } } From 48293ce863622a6374c46c13e6d4085e89205814 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Wed, 30 Apr 2025 15:51:30 +0200 Subject: [PATCH 08/15] Revert "Fix case to match case sensitivity of autoloader" This reverts commit aae0eb3b7e7898573db75bfd13ab7091019ab2ec. Reverting as the autoloader is now case-insensitive. --- includes/class-wc-stripe-customer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-stripe-customer.php b/includes/class-wc-stripe-customer.php index 536766141c..12c8f6e05e 100644 --- a/includes/class-wc-stripe-customer.php +++ b/includes/class-wc-stripe-customer.php @@ -20,7 +20,7 @@ class WC_Stripe_Customer { */ const STRIPE_PAYMENT_METHODS = [ WC_Stripe_UPE_Payment_Method_CC::STRIPE_ID, - WC_Stripe_UPE_Payment_Method_Link::STRIPE_ID, + WC_Stripe_UPE_Payment_Method_LINK::STRIPE_ID, WC_Stripe_UPE_Payment_Method_Sepa::STRIPE_ID, WC_Stripe_UPE_Payment_Method_Cash_App_Pay::STRIPE_ID, WC_Stripe_UPE_Payment_Method_ACH::STRIPE_ID, From 1eeefa5068a1014b27c4dbfbe76492732615e157 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Wed, 30 Apr 2025 15:58:24 +0200 Subject: [PATCH 09/15] Update PHPDoc --- includes/class-wc-stripe-autoloader.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php index fc6265248f..6d2103e898 100644 --- a/includes/class-wc-stripe-autoloader.php +++ b/includes/class-wc-stripe-autoloader.php @@ -13,16 +13,21 @@ class WC_Stripe_Autoloader { /** * Cached in-memory class map. Will be populated from {@see get_classmap()}. + * + * @var string[]|null */ private static $classmap = null; /** * Cached in-memory class map for admin code. Will be populated from {@see get_admin_classmap()}. + * + * @var string[]|null */ private static $admin_classmap = null; /** - * Tries to autoloads a class based on the classmap from {@see get_classmap()}. + * Tries to autoloads a class based on the classmap from {@see get_classmap()} + * and when {@see is_admin()} is true, we access {@see get_admin_classmap()} as well. * * @param string $class The class to autoload. * @return boolean True if the class was autoloaded, false otherwise. From 52dd00d14960856d8b7d261f4321751b528f6f83 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Wed, 30 Apr 2025 16:11:58 +0200 Subject: [PATCH 10/15] Enable autoloader for WC_Stripe_Inbox_Notes() and avoid side-effects in file --- includes/admin/class-wc-stripe-inbox-notes.php | 2 -- includes/class-wc-stripe-autoloader.php | 3 +-- woocommerce-gateway-stripe.php | 3 +-- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/includes/admin/class-wc-stripe-inbox-notes.php b/includes/admin/class-wc-stripe-inbox-notes.php index d4a19f8e86..15b8ef13a7 100644 --- a/includes/admin/class-wc-stripe-inbox-notes.php +++ b/includes/admin/class-wc-stripe-inbox-notes.php @@ -226,5 +226,3 @@ public static function cleanup_campaign_2020() { } } } - -new WC_Stripe_Inbox_Notes(); diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php index 6d2103e898..649623fde3 100644 --- a/includes/class-wc-stripe-autoloader.php +++ b/includes/class-wc-stripe-autoloader.php @@ -139,6 +139,7 @@ private static function get_classmap() { 'wc_stripe_fingerprint_trait' => __DIR__ . '/payment-tokens/trait-wc-stripe-fingerprint.php', 'wc_stripe_helper' => __DIR__ . '/class-wc-stripe-helper.php', 'wc_stripe_hong_kong_states' => __DIR__ . '/constants/class-wc-stripe-hong-kong-states.php', + 'wc_stripe_inbox_notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', 'wc_stripe_intent_controller' => __DIR__ . '/class-wc-stripe-intent-controller.php', 'wc_stripe_intent_status' => __DIR__ . '/constants/class-wc-stripe-intent-status.php', 'wc_stripe_logger' => __DIR__ . '/class-wc-stripe-logger.php', @@ -210,8 +211,6 @@ private static function get_admin_classmap() { return [ 'wc_stripe_admin_inbox_notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', 'wc_stripe_admin_notices' => __DIR__ . '/admin/class-wc-stripe-admin-notices.php', - // Disabled as this class is used in non-admin contexts, and it instantiates the class as a side effect. - //'wc_stripe_inbox_notes' => __DIR__ . '/admin/class-wc-stripe-inbox-notes.php', 'wc_stripe_privacy' => __DIR__ . '/admin/class-wc-stripe-privacy.php', ]; } diff --git a/woocommerce-gateway-stripe.php b/woocommerce-gateway-stripe.php index c94e88d059..4f51729cd4 100644 --- a/woocommerce-gateway-stripe.php +++ b/woocommerce-gateway-stripe.php @@ -193,8 +193,7 @@ public function init() { new WC_Stripe_Privacy(); } - require_once __DIR__ . '/includes/admin/class-wc-stripe-inbox-notes.php'; - + new WC_Stripe_Inbox_Notes(); new WC_Stripe_Apple_Pay_Registration(); new Allowed_Payment_Request_Button_Types_Update(); From 350b3ea5d3027fe93ce4326844b5839d2081378f Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Wed, 30 Apr 2025 16:12:53 +0200 Subject: [PATCH 11/15] Make autoloader initialisation explicit --- includes/class-wc-stripe-autoloader.php | 2 -- woocommerce-gateway-stripe.php | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php index 649623fde3..e4038d245d 100644 --- a/includes/class-wc-stripe-autoloader.php +++ b/includes/class-wc-stripe-autoloader.php @@ -215,5 +215,3 @@ private static function get_admin_classmap() { ]; } } - -WC_Stripe_Autoloader::init(); diff --git a/woocommerce-gateway-stripe.php b/woocommerce-gateway-stripe.php index 4f51729cd4..1b4cfdb6c4 100644 --- a/woocommerce-gateway-stripe.php +++ b/woocommerce-gateway-stripe.php @@ -82,7 +82,9 @@ function woocommerce_gateway_stripe() { if ( ! isset( $plugin ) ) { + // Initialize our autoloader. require_once __DIR__ . '/includes/class-wc-stripe-autoloader.php'; + WC_Stripe_Autoloader::init(); class WC_Stripe { From d2df781c0a72545d5e7e7d4bbabf93420354dd9a Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Wed, 30 Apr 2025 16:29:49 +0200 Subject: [PATCH 12/15] Changelog --- changelog.txt | 1 + readme.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/changelog.txt b/changelog.txt index b6c631fa62..900f0b7a43 100644 --- a/changelog.txt +++ b/changelog.txt @@ -20,6 +20,7 @@ * Fix - Prevents fatal errors for cases where we fail to load product details * Fix - Address an edge case with webhook URL comparisons * Fix - Show correct gateway name in non payments settings pages. +* Dev - Implement a class autoloader for the plugin to reduce unnecessary file loads = 9.4.1 - 2025-04-17 = * Dev - Forces rollback of version 9.4.0. diff --git a/readme.txt b/readme.txt index 3466fe92a5..618c2092eb 100644 --- a/readme.txt +++ b/readme.txt @@ -130,5 +130,6 @@ If you get stuck, you can ask for help in the [Plugin Forum](https://wordpress.o * Fix - Prevents fatal errors for cases where we fail to load product details * Fix - Address an edge case with webhook URL comparisons * Fix - Show correct gateway name in non payments settings pages. +* Dev - Implement a class autoloader for the plugin to reduce unnecessary file loads [See changelog for all versions](https://raw.githubusercontent.com/woocommerce/woocommerce-gateway-stripe/trunk/changelog.txt). From ac6458f993466f16682935bc9b3b03117a7f62f3 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Thu, 29 May 2025 09:49:48 +0200 Subject: [PATCH 13/15] Add entry for WC_Stripe_Database_Cache; fix sort for entries --- includes/class-wc-stripe-autoloader.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php index e4038d245d..365e6b6e7a 100644 --- a/includes/class-wc-stripe-autoloader.php +++ b/includes/class-wc-stripe-autoloader.php @@ -127,6 +127,7 @@ private static function get_classmap() { 'wc_stripe_connect_rest_oauth_init_controller' => __DIR__ . '/connect/class-wc-stripe-connect-rest-oauth-init-controller.php', 'wc_stripe_currency_code' => __DIR__ . '/constants/class-wc-stripe-currency-code.php', 'wc_stripe_customer' => __DIR__ . '/class-wc-stripe-customer.php', + 'wc_stripe_database_cache' => __DIR__ . '/class-wc-stripe-database-cache.php', 'wc_stripe_email_failed_authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-authentication.php', 'wc_stripe_email_failed_authentication_retry' => __DIR__ . '/compat/class-wc-stripe-email-failed-authentication-retry.php', 'wc_stripe_email_failed_preorder_authentication' => __DIR__ . '/compat/class-wc-stripe-email-failed-preorder-authentication.php', @@ -161,6 +162,11 @@ private static function get_classmap() { 'wc_stripe_rest_base_controller' => __DIR__ . '/admin/class-wc-stripe-rest-base-controller.php', 'wc_stripe_rest_upe_flag_toggle_controller' => __DIR__ . '/admin/class-wc-stripe-rest-upe-flag-toggle-controller.php', 'wc_stripe_settings_controller' => __DIR__ . '/admin/class-wc-stripe-settings-controller.php', + 'wc_stripe_status' => __DIR__ . '/class-wc-stripe-status.php', + 'wc_stripe_subscriptions_helper' => __DIR__ . '/compat/class-wc-stripe-subscriptions-helper.php', + 'wc_stripe_subscriptions_legacy_sepa_token_update' => __DIR__ . '/compat/class-wc-stripe-subscriptions-legacy-sepa-token-update.php', + 'wc_stripe_subscriptions_trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions.php', + 'wc_stripe_subscriptions_utilities_trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions-utilities.php', 'wc_stripe_upe_availability_note' => __DIR__ . '/notes/class-wc-stripe-upe-availability-note.php', 'wc_stripe_upe_compatibility' => __DIR__ . '/class-wc-stripe-upe-compatibility.php', 'wc_stripe_upe_compatibility_controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', @@ -191,11 +197,6 @@ private static function get_classmap() { 'wc_stripe_upe_payment_method_sofort' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-sofort.php', 'wc_stripe_upe_payment_method_wechat_pay' => __DIR__ . '/payment-methods/class-wc-stripe-upe-payment-method-wechat-pay.php', 'wc_stripe_upe_stripelink_note' => __DIR__ . '/notes/class-wc-stripe-upe-stripe-link-note.php', - 'wc_stripe_status' => __DIR__ . '/class-wc-stripe-status.php', - 'wc_stripe_subscriptions_helper' => __DIR__ . '/compat/class-wc-stripe-subscriptions-helper.php', - 'wc_stripe_subscriptions_legacy_sepa_token_update' => __DIR__ . '/compat/class-wc-stripe-subscriptions-legacy-sepa-token-update.php', - 'wc_stripe_subscriptions_trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions.php', - 'wc_stripe_subscriptions_utilities_trait' => __DIR__ . '/compat/trait-wc-stripe-subscriptions-utilities.php', 'wc_stripe_webhook_handler' => __DIR__ . '/class-wc-stripe-webhook-handler.php', 'wc_stripe_webhook_state' => __DIR__ . '/class-wc-stripe-webhook-state.php', 'wc_stripe_woo_compat_utils' => __DIR__ . '/compat/class-wc-stripe-woo-compat-utils.php', From a22944d3463d54eca04c60f72397d774e3495af3 Mon Sep 17 00:00:00 2001 From: Dale du Preez Date: Thu, 29 May 2025 09:53:26 +0200 Subject: [PATCH 14/15] Update WC_Stripe after it was moved --- includes/class-wc-stripe-autoloader.php | 1 + includes/class-wc-stripe.php | 125 +----------------------- 2 files changed, 6 insertions(+), 120 deletions(-) diff --git a/includes/class-wc-stripe-autoloader.php b/includes/class-wc-stripe-autoloader.php index 365e6b6e7a..a9523f0337 100644 --- a/includes/class-wc-stripe-autoloader.php +++ b/includes/class-wc-stripe-autoloader.php @@ -111,6 +111,7 @@ private static function get_classmap() { 'wc_rest_stripe_orders_controller' => __DIR__ . '/admin/class-wc-rest-stripe-orders-controller.php', 'wc_rest_stripe_settings_controller' => __DIR__ . '/admin/class-wc-rest-stripe-settings-controller.php', 'wc_rest_stripe_tokens_controller' => __DIR__ . '/admin/class-wc-rest-stripe-tokens-controller.php', + 'wc_stripe' => __DIR__ . '/class-wc-stripe.php', 'wc_stripe_account' => __DIR__ . '/class-wc-stripe-account.php', 'wc_stripe_action_scheduler_service' => __DIR__ . '/class-wc-stripe-action-scheduler-service.php', 'wc_stripe_admin_upe_compatibility_controller' => __DIR__ . '/admin/class-wc-stripe-upe-compatibility-controller.php', diff --git a/includes/class-wc-stripe.php b/includes/class-wc-stripe.php index 36de35667d..c62e895ae1 100644 --- a/includes/class-wc-stripe.php +++ b/includes/class-wc-stripe.php @@ -113,102 +113,11 @@ public function __construct() { */ public function init() { if ( is_admin() ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-privacy.php'; - } - if ( file_exists( WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-feature-flags.php' ) ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-feature-flags.php'; + new WC_Stripe_Privacy(); } - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-order.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-upe-compatibility.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-co-branded-cc-compatibility.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-exception.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-logger.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-helper.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-database-cache.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-payment-method-configurations.php'; - include_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-api.php'; - include_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-mode.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-subscriptions-helper.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/trait-wc-stripe-subscriptions-utilities.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/trait-wc-stripe-subscriptions.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/trait-wc-stripe-pre-orders.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-subscriptions-legacy-sepa-token-update.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/abstracts/abstract-wc-stripe-payment-gateway.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/abstracts/abstract-wc-stripe-payment-gateway-voucher.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-action-scheduler-service.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-webhook-state.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-webhook-handler.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/trait-wc-stripe-fingerprint.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/interface-wc-stripe-payment-method-comparison.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-cc-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-ach-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-acss-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-sepa-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-link-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-cash-app-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-bacs-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-becs-debit-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-amazon-pay-payment-token.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-apple-pay-registration.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-status.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-gateway-stripe.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/constants/class-wc-stripe-currency-code.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/constants/class-wc-stripe-payment-methods.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/constants/class-wc-stripe-intent-status.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-gateway.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-cc.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-ach.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-alipay.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-bacs-debit.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-becs-debit.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-blik.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-giropay.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-ideal.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-klarna.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-affirm.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-afterpay-clearpay.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-bancontact.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-boleto.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-oxxo.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-eps.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-sepa.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-p24.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-sofort.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-multibanco.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-link.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-cash-app-pay.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-wechat-pay.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-acss.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-upe-payment-method-amazon-pay.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-bancontact.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-sofort.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-giropay.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-eps.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-ideal.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-p24.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-alipay.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-sepa.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-multibanco.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-boleto.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-gateway-stripe-oxxo.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-payment-request.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-express-checkout-element.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-express-checkout-helper.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-woo-compat-utils.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/connect/class-wc-stripe-connect.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/connect/class-wc-stripe-connect-api.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-order-handler.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/payment-tokens/class-wc-stripe-payment-tokens.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-customer.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-intent-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-inbox-notes.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-upe-compatibility-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/migrations/class-allowed-payment-request-button-types-update.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/migrations/class-migrate-payment-request-data-to-express-checkout-data.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/class-wc-stripe-account.php'; + new WC_Stripe_Inbox_Notes(); + new WC_Stripe_Apple_Pay_Registration(); new Allowed_Payment_Request_Button_Types_Update(); // TODO: Temporary disabling the migration as it has a conflict with the new UPE checkout. @@ -226,27 +135,23 @@ public function init() { $intent_controller->init_hooks(); if ( is_admin() ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-admin-notices.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-settings-controller.php'; + new WC_Stripe_Admin_Notices(); if ( isset( $_GET['area'] ) && 'payment_requests' === $_GET['area'] ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-payment-requests-controller.php'; new WC_Stripe_Payment_Requests_Controller(); } elseif ( isset( $_GET['area'] ) && 'amazon_pay' === $_GET['area'] && WC_Stripe_Feature_Flags::is_amazon_pay_available() ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-amazon-pay-controller.php'; new WC_Stripe_Amazon_Pay_Controller(); } else { new WC_Stripe_Settings_Controller( $this->account ); } if ( WC_Stripe_Feature_Flags::is_upe_checkout_enabled() ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-payment-gateways-controller.php'; new WC_Stripe_Payment_Gateways_Controller(); } } // REMOVE IN THE FUTURE. - require_once WC_STRIPE_PLUGIN_PATH . '/includes/deprecated/class-wc-stripe-apple-pay.php'; + new WC_Stripe_Apple_Pay(); add_filter( 'woocommerce_payment_gateways', [ $this, 'add_gateways' ] ); add_filter( 'pre_update_option_woocommerce_stripe_settings', [ $this, 'gateway_settings_update' ], 10, 2 ); @@ -674,11 +579,6 @@ protected function disable_upe( $settings ) { * @return WC_Email[] */ public function add_emails( $email_classes ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-email-failed-authentication.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-email-failed-renewal-authentication.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-email-failed-preorder-authentication.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/compat/class-wc-stripe-email-failed-authentication-retry.php'; - // Add all emails, generated by the gateway. $email_classes['WC_Stripe_Email_Failed_Renewal_Authentication'] = new WC_Stripe_Email_Failed_Renewal_Authentication( $email_classes ); $email_classes['WC_Stripe_Email_Failed_Preorder_Authentication'] = new WC_Stripe_Email_Failed_Preorder_Authentication( $email_classes ); @@ -693,17 +593,6 @@ public function add_emails( $email_classes ) { * New endpoints/controllers can be added here. */ public function register_routes() { - /** API includes */ - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-rest-base-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/abstracts/abstract-wc-stripe-connect-rest-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-account-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-connection-tokens-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-locations-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-orders-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-tokens-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/connect/class-wc-stripe-connect-rest-oauth-init-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/connect/class-wc-stripe-connect-rest-oauth-connect-controller.php'; - $connection_tokens_controller = new WC_REST_Stripe_Connection_Tokens_Controller( $this->get_main_stripe_gateway() ); $locations_controller = new WC_REST_Stripe_Locations_Controller(); $orders_controller = new WC_REST_Stripe_Orders_Controller( $this->get_main_stripe_gateway() ); @@ -721,10 +610,6 @@ public function register_routes() { $stripe_account_controller->register_routes(); if ( WC_Stripe_Feature_Flags::is_upe_preview_enabled() ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-settings-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-rest-upe-flag-toggle-controller.php'; - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-rest-stripe-account-keys-controller.php'; - $upe_flag_toggle_controller = new WC_Stripe_REST_UPE_Flag_Toggle_Controller(); $upe_flag_toggle_controller->register_routes(); From e79f5b54f027da423508f17409b2f3c9aec30f42 Mon Sep 17 00:00:00 2001 From: Wesley Rosa Date: Thu, 10 Jul 2025 12:33:57 -0300 Subject: [PATCH 15/15] Implementing composer autoloader without namespaces (#4406) * Autoloader: Implementing composer autoloader with classmap * Updating release task * Fix tests * Adding the custom autoloader as a fallback --- composer.json | 3 +++ includes/class-wc-stripe-customer.php | 2 +- package.json | 3 ++- tasks/release.js | 1 + woocommerce-gateway-stripe.php | 13 +++++++++---- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 1819c6451a..d32d231048 100644 --- a/composer.json +++ b/composer.json @@ -19,6 +19,9 @@ "woocommerce/woocommerce-sniffs": "1.0.0", "wp-cli/wp-cli-bundle": "2.5.0" }, + "autoload": { + "classmap": [ "includes/" ] + }, "autoload-dev": { "psr-4": { "WooCommerce\\Stripe\\Tests\\": "tests/phpunit/" diff --git a/includes/class-wc-stripe-customer.php b/includes/class-wc-stripe-customer.php index 9e18fa74a3..5ef6431379 100644 --- a/includes/class-wc-stripe-customer.php +++ b/includes/class-wc-stripe-customer.php @@ -20,7 +20,7 @@ class WC_Stripe_Customer { */ const STRIPE_PAYMENT_METHODS = [ WC_Stripe_UPE_Payment_Method_CC::STRIPE_ID, - WC_Stripe_UPE_Payment_Method_LINK::STRIPE_ID, + WC_Stripe_UPE_Payment_Method_Link::STRIPE_ID, WC_Stripe_UPE_Payment_Method_Sepa::STRIPE_ID, WC_Stripe_UPE_Payment_Method_Cash_App_Pay::STRIPE_ID, WC_Stripe_UPE_Payment_Method_ACH::STRIPE_ID, diff --git a/package.json b/package.json index c1cc471381..8e776a2126 100644 --- a/package.json +++ b/package.json @@ -119,10 +119,11 @@ "postinstall": "composer install && npx playwright install", "prebuild": "npm install && composer install", "prepare": "is-ci || husky install", - "build": "npm run uglify && npm run sass && rimraf build/* && npm run build:webpack && npm run build:i18n && npm run build:release", + "build": "npm run uglify && npm run sass && rimraf build/* && npm run build:webpack && npm run build:i18n && npm run build:deps && npm run build:release", "build:i18n": "npm run i18n:makepot && npm run i18n:merge", "build:release": "node tasks/release.js && mv release/woocommerce-gateway-stripe.zip .", "build:webpack": "wp-scripts build", + "build:deps": "rm -rf vendor && composer install --no-dev --classmap-authoritative", "i18n:makepot": "./vendor/bin/wp i18n make-pot . languages/woocommerce-gateway-stripe.pot --exclude=assets,bin,build,docker,docs,node_modules,release,tests,vendor", "i18n:merge": "php bin/update-pot-file-references.php languages/woocommerce-gateway-stripe.pot", "start": "npm run start:webpack", diff --git a/tasks/release.js b/tasks/release.js index 9e968abc74..4c4e5cfeba 100644 --- a/tasks/release.js +++ b/tasks/release.js @@ -17,6 +17,7 @@ const filesToCopy = [ 'includes', 'languages', 'templates', + 'vendor', 'woocommerce-gateway-stripe.php', 'changelog.txt', 'readme.txt', diff --git a/woocommerce-gateway-stripe.php b/woocommerce-gateway-stripe.php index 68d2643d7e..82947b892e 100644 --- a/woocommerce-gateway-stripe.php +++ b/woocommerce-gateway-stripe.php @@ -81,10 +81,15 @@ function woocommerce_gateway_stripe() { static $plugin; if ( ! isset( $plugin ) ) { - // Initialize our autoloader. - require_once __DIR__ . '/includes/class-wc-stripe-autoloader.php'; - WC_Stripe_Autoloader::init(); - + // Attempts to include the default composer autoloader. + $autoload_filepath = __DIR__ . '/vendor/autoload.php'; + if ( file_exists( $autoload_filepath ) ) { + require $autoload_filepath; + } elseif ( file_exists( __DIR__ . '/includes/class-wc-stripe-autoloader.php' ) ) { + // Initialize our custom autoloader as a fallback. + require_once __DIR__ . '/includes/class-wc-stripe-autoloader.php'; + WC_Stripe_Autoloader::init(); + } $plugin = WC_Stripe::get_instance(); }