'failure', 'message' => 'Vendor autoload missing. Please run composer install.']); exit; } // 2. لا حاجة لتحميل .env يدوياً: Docker يحقن المتغيّرات عبر env_file // نحتفظ بـ load_env.php فقط لبيئة التطوير خارج الدوكر if (!getenv('DB_PAYMENT_HOST')) { // نحن خارج بيئة الدوكر — جرّب تحميل .env يدوياً if (file_exists(__DIR__ . '/load_env.php')) { require_once 'load_env.php'; $envFile = __DIR__ . '/../.env'; if (file_exists($envFile)) loadEnvironment($envFile); } } // 3. CORS Headers header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); header("Access-Control-Allow-Headers: Content-Type, Authorization"); header('Content-Type: application/json'); if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; } // 4. Database Connection try { $dbname = getenv('DB_PAYMENT_NAME') ?: 'paymentDB'; $dbHost = getenv('DB_PAYMENT_HOST') ?: 'mysql'; $user = getenv('DB_PAYMENT_USER') ?: 'root'; $pass = getenv('DB_PAYMENT_PASS') ?: getenv('MYSQL_ROOT_PASSWORD') ?: ''; $dsn = "mysql:host=$dbHost;dbname=$dbname;charset=utf8mb4"; $options = [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8", ]; $con = new PDO($dsn, $user, $pass, $options); // 5. JWT Authentication include __DIR__ . "/functions.php"; $decodedToken = authenticateJWT(); } catch (PDOException $e) { error_log('[WALLET] DB Error: ' . $e->getMessage()); http_response_code(500); echo json_encode(['error' => 'A database error occurred.']); exit; } ?>