diff --git a/includes/Api/PaymentsController.php b/includes/Api/PaymentsController.php index 951f340..9e9523e 100644 --- a/includes/Api/PaymentsController.php +++ b/includes/Api/PaymentsController.php @@ -220,9 +220,13 @@ class PaymentsController extends WP_REST_Controller { } try { + // Debug: Log what we're trying to do + error_log(sprintf('[WooNooW] Toggling gateway %s to %s', $gateway_id, $enabled ? 'enabled' : 'disabled')); + $result = PaymentGatewaysProvider::toggle_gateway($gateway_id, $enabled); if (is_wp_error($result)) { + error_log(sprintf('[WooNooW] Toggle failed: %s', $result->get_error_message())); return $result; } @@ -232,12 +236,16 @@ class PaymentsController extends WP_REST_Controller { // Return updated gateway data (fresh from DB) $gateway = PaymentGatewaysProvider::get_gateway($gateway_id); + // Debug: Log what we got back + error_log(sprintf('[WooNooW] Gateway %s after toggle: enabled=%s', $gateway_id, $gateway['enabled'] ? 'true' : 'false')); + return rest_ensure_response([ 'success' => true, 'message' => $enabled ? 'Gateway enabled' : 'Gateway disabled', 'gateway' => $gateway, ]); } catch (\Exception $e) { + error_log(sprintf('[WooNooW] Toggle exception: %s', $e->getMessage())); return new WP_Error( 'toggle_gateway_failed', $e->getMessage(), diff --git a/includes/Compat/PaymentGatewaysProvider.php b/includes/Compat/PaymentGatewaysProvider.php index 541d1de..9ad6f00 100644 --- a/includes/Compat/PaymentGatewaysProvider.php +++ b/includes/Compat/PaymentGatewaysProvider.php @@ -360,20 +360,29 @@ class PaymentGatewaysProvider { // Block external HTTP requests (analytics, tracking, etc.) add_filter('pre_http_request', '__return_true', 999); - // Merge with existing settings - $current_settings = get_option($gateway->get_option_key(), []); + // Get current settings and merge with new ones + $gateway->init_settings(); + $current_settings = $gateway->settings; $new_settings = array_merge($current_settings, $settings); - // Use gateway's own validation if available - if (method_exists($gateway, 'validate_settings_fields')) { - $gateway->init_settings(); - foreach ($new_settings as $key => $value) { - $gateway->settings[$key] = $value; - } - $gateway->process_admin_options(); - } else { - // Direct save (faster) - update_option($gateway->get_option_key(), $new_settings, 'yes'); + // Debug logging + error_log(sprintf('[WooNooW] Saving gateway %s settings: %s', $gateway_id, json_encode($settings))); + error_log(sprintf('[WooNooW] Current enabled: %s, New enabled: %s', + isset($current_settings['enabled']) ? $current_settings['enabled'] : 'not set', + isset($new_settings['enabled']) ? $new_settings['enabled'] : 'not set' + )); + + // Update gateway settings directly + $gateway->settings = $new_settings; + + // Save to database using WooCommerce's method + $saved = update_option($gateway->get_option_key(), $gateway->settings, 'yes'); + error_log(sprintf('[WooNooW] update_option returned: %s', $saved ? 'true' : 'false')); + + // Update the enabled property specifically (WooCommerce does this) + if (isset($new_settings['enabled'])) { + $gateway->enabled = $new_settings['enabled']; + error_log(sprintf('[WooNooW] Set gateway->enabled to: %s', $gateway->enabled)); } // Re-enable HTTP requests