'https://dropship.ecomzone.eu/api', 'ECOMZONE_API_TOKEN' => 'klRyAdrXaxL0s6PEUp7LDlH6T8aPSCtBY8NiEHsHiWpc6646K2TZPi5KMxUg' // Actual API token ]; return isset($config[$key]) ? $config[$key] : $default; } public static function updateValue($key, $value) { return true; } } } if (!class_exists('Context')) { class Context { public $shop; public static $instance; public function __construct() { $this->shop = new stdClass(); $this->shop->id = 1; } public static function getContext() { if (!self::$instance) { self::$instance = new Context(); } return self::$instance; } } } if (!class_exists('PrestaShopLogger')) { class PrestaShopLogger { public static function addLog($message, $severity = 1, $error_code = null, $object_type = null, $object_id = null, $allow_duplicate = false, $id_employee = null) { return true; } } } // Disable output buffering if (ob_get_level()) { ob_end_clean(); } // Set headers for plain text output header('Content-Type: text/plain'); header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); echo "EcomZone API Test\n"; echo "================\n\n"; try { // Get API settings $apiUrl = Configuration::get('ECOMZONE_API_URL'); $apiToken = Configuration::get('ECOMZONE_API_TOKEN'); echo "API URL: " . $apiUrl . "\n"; echo "API Token: " . (empty($apiToken) || $apiToken === 'YOUR_API_TOKEN' ? "Not set - Please edit test_api.php and replace YOUR_API_TOKEN with your actual token" : "Set (length: " . strlen($apiToken) . " chars)") . "\n\n"; if (empty($apiToken) || $apiToken === 'YOUR_API_TOKEN') { throw new Exception("API token is not configured. Please edit test_api.php and replace YOUR_API_TOKEN with your actual token."); } echo "Testing API connection...\n\n"; // Create API client $client = new EcomZoneClient(); // Test API connectivity with catalog endpoint echo "Requesting catalog data (page 1, limit 1)...\n"; $start = microtime(true); $result = $client->getCatalog(1, 1); $end = microtime(true); echo "Request completed in " . round(($end - $start) * 1000, 2) . " ms\n"; if (isset($result['data']) && is_array($result['data'])) { echo "Success! Received " . count($result['data']) . " product(s)\n"; echo "Total products available: " . ($result['total'] ?? 'unknown') . "\n\n"; if (!empty($result['data'])) { $sku = $result['data'][0]['sku'] ?? null; if ($sku) { echo "Testing product detail retrieval...\n"; echo "Requesting product with SKU: " . $sku . "\n"; $start = microtime(true); $productDetail = $client->getProduct($sku); $end = microtime(true); echo "Request completed in " . round(($end - $start) * 1000, 2) . " ms\n"; if (isset($productDetail['data']) && !empty($productDetail['data'])) { echo "Success! Retrieved product details\n"; echo "Product name: " . ($productDetail['data']['product_name'] ?? 'unknown') . "\n"; } else { echo "Error: Failed to retrieve product details\n"; echo "Response: " . print_r($productDetail, true) . "\n"; } } } } else { echo "Error: Invalid catalog response\n"; echo "Response: " . print_r($result, true) . "\n"; } echo "\nAPI test completed successfully!\n"; } catch (Exception $e) { echo "ERROR: " . $e->getMessage() . "\n"; if ($e instanceof EcomZoneException) { echo "Error Code: " . $e->getCode() . "\n"; } echo "\nStack Trace:\n" . $e->getTraceAsString() . "\n"; echo "\nCheck the log file for more details: modules/ecomzone/log/ecomzone.log\n"; } echo "\nLog contents (last 10 entries):\n"; echo "==============================\n\n"; try { $logEntries = EcomZoneLogger::getLogContents(10); foreach ($logEntries as $entry) { $context = ''; if (!empty($entry['context'])) { $context = ' - ' . json_encode($entry['context']); } echo $entry['timestamp'] . ' [' . $entry['level'] . '] ' . $entry['message'] . $context . "\n"; } } catch (Exception $e) { echo "Failed to retrieve logs: " . $e->getMessage() . "\n"; }