diff --git a/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php b/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php index ade2f3ca7..2ebd2b360 100644 --- a/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php +++ b/woocommerce/payment-gateway/integrations/class-sv-wc-payment-gateway-integration-subscriptions.php @@ -260,7 +260,9 @@ public function add_subscriptions_details_to_order( $order, $gateway ) { $order->payment->recurring = true; - $subscriptions = wcs_get_subscriptions_for_order( $order ); + // an order ID might be 0 if it's a mock order we use when adding a payment method + // passing in an order with an ID of 0 to `wcs_get_subscriptions_for_order()` can cause very unexpected results + $subscriptions = $order->get_id() > 0 ? wcs_get_subscriptions_for_order( $order ) : []; if ( ! empty( $subscriptions ) ) { @@ -278,7 +280,9 @@ public function add_subscriptions_details_to_order( $order, $gateway ) { $order->payment->recurring = true; - $subscriptions = wcs_get_subscriptions_for_renewal_order( $order ); + // an order ID might be 0 if it's a mock order we use when adding a payment method + // passing in an order with an ID of 0 to `wcs_get_subscriptions_for_order()` can cause very unexpected results + $subscriptions = $order->get_id() > 0 ? wcs_get_subscriptions_for_renewal_order( $order ) : []; if ( ! empty( $subscriptions ) ) {