Commit f1268e7fd59 for woocommerce

commit f1268e7fd59e013f1324556d2a6a6951ad5ef95c
Author: Francesco <frosso@users.noreply.github.com>
Date:   Tue Jul 14 12:48:37 2026 +0200

    fix: window qualification for wc in classic checkout (#66349)

diff --git a/plugins/woocommerce/changelog/64537-fix-checkout-wc-namespace-shadowing b/plugins/woocommerce/changelog/64537-fix-checkout-wc-namespace-shadowing
new file mode 100644
index 00000000000..a5515f24706
--- /dev/null
+++ b/plugins/woocommerce/changelog/64537-fix-checkout-wc-namespace-shadowing
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+fix: using window.wc instead of wc in classic checkout so they no longer break when a third-party script shadows the global wc binding.
diff --git a/plugins/woocommerce/client/legacy/js/frontend/add-payment-method.js b/plugins/woocommerce/client/legacy/js/frontend/add-payment-method.js
index 014726e9078..e0016fe2fe5 100644
--- a/plugins/woocommerce/client/legacy/js/frontend/add-payment-method.js
+++ b/plugins/woocommerce/client/legacy/js/frontend/add-payment-method.js
@@ -40,7 +40,7 @@ jQuery( function( $ ) {

 	// When a gateway registers after a page load, render its button if it's selected.
 	$( document.body ).on( 'wc_custom_place_order_button_registered', function( e, gatewayId ) {
-		wc.customPlaceOrderButton.__maybeShow( gatewayId, createAddPaymentMethodApi() );
+		window.wc.customPlaceOrderButton.__maybeShow( gatewayId, createAddPaymentMethodApi() );
 	} );

 	/* Payment option selection */
@@ -58,14 +58,14 @@ jQuery( function( $ ) {
 		}

 		// Handle custom place order button for selected gateway
-		wc.customPlaceOrderButton.__maybeShow( $( this ).val(), createAddPaymentMethodApi() );
+		window.wc.customPlaceOrderButton.__maybeShow( $( this ).val(), createAddPaymentMethodApi() );
 	});

 	// Hide default button immediately if initially selected gateway has custom button.
 	// This must happen BEFORE triggering click to prevent flash of the default button.
 	var $initialPaymentMethod = $form.find( 'input[name="payment_method"]:checked' );
 	if ( $initialPaymentMethod.length ) {
-		wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $initialPaymentMethod.val() );
+		window.wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $initialPaymentMethod.val() );
 	}

 	// Trigger initial click
diff --git a/plugins/woocommerce/client/legacy/js/frontend/checkout.js b/plugins/woocommerce/client/legacy/js/frontend/checkout.js
index 8b54c351fca..622f9192afc 100644
--- a/plugins/woocommerce/client/legacy/js/frontend/checkout.js
+++ b/plugins/woocommerce/client/legacy/js/frontend/checkout.js
@@ -14,7 +14,7 @@ jQuery( function ( $ ) {
 	 * @return {Object} API object with validate and submit methods
 	 */
 	function createCheckoutPlaceOrderApi() {
-		var $form = wc.customPlaceOrderButton.__getForm();
+		var $form = window.wc.customPlaceOrderButton.__getForm();

 		return {
 			/**
@@ -114,12 +114,12 @@ jQuery( function ( $ ) {
 	// After the update, init_payment_methods() will trigger payment method selection,
 	// which will call render() again for the active gateway.
 	$( document.body ).on( 'update_checkout', function () {
-		wc.customPlaceOrderButton.__cleanup();
+		window.wc.customPlaceOrderButton.__cleanup();
 	} );

 	// When a gateway registers after a page load, render its button if it's selected.
 	$( document.body ).on( 'wc_custom_place_order_button_registered', function ( e, gatewayId ) {
-		wc.customPlaceOrderButton.__maybeShow( gatewayId, createCheckoutPlaceOrderApi() );
+		window.wc.customPlaceOrderButton.__maybeShow( gatewayId, createCheckoutPlaceOrderApi() );
 	} );

 	var wc_checkout_form = {
@@ -152,7 +152,7 @@ jQuery( function ( $ ) {
 				// Initialize the custom place order button for the "order-pay" page
 				var $orderPayMethod = this.$order_review.find( 'input[name="payment_method"]:checked' );
 				if ( $orderPayMethod.length ) {
-					wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $orderPayMethod.val() );
+					window.wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $orderPayMethod.val() );
 					$orderPayMethod.trigger( 'click' );
 				}
 			}
@@ -266,7 +266,7 @@ jQuery( function ( $ ) {
 			// This hides the default button immediately to prevent flash while the gateway JS loads
 			var $selectedMethod = $payment_methods.filter( ':checked' ).eq( 0 );
 			if ( $selectedMethod.length ) {
-				wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $selectedMethod.val() );
+				window.wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $selectedMethod.val() );
 			}

 			// Trigger click event for selected method
@@ -317,7 +317,7 @@ jQuery( function ( $ ) {

 			// Handle custom place order button
 			var gatewayId = $( this ).val();
-			wc.customPlaceOrderButton.__maybeShow( gatewayId, createCheckoutPlaceOrderApi() );
+			window.wc.customPlaceOrderButton.__maybeShow( gatewayId, createCheckoutPlaceOrderApi() );

 			wc_checkout_form.selectedPaymentMethod = selectedPaymentMethod;
 		},