Files
intaleq/payment_server/v2/main/connect.php
T

68 lines
2.7 KiB
PHP
Executable File

<?php
// connect.php — نسخة الدوكر
// ─────────────────────────────────────────────────────────────
// • vendor/ مخبوز داخل الصورة في /var/www/v2/vendor (Dockerfile يشغّل composer install)
// • متغيّرات البيئة تصل عبر env_file في docker-compose → getenv() يعمل مباشرةً
// ─────────────────────────────────────────────────────────────
// 1. Autoload — vendor مخبوز داخل الصورة
$autoload = __DIR__ . '/../vendor/autoload.php';
if (file_exists($autoload)) {
require_once $autoload;
} else {
http_response_code(500);
echo json_encode(['status' => '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;
}
?>