<?php
include "../../../jwtconnect.php"; // تأكد من أن هذا الملف يحتوي على الاتصال بقاعدة البيانات ودوال المساعدة

/*
|--------------------------------------------------------------------------
| ملف بدء الدفع مع eCash
|--------------------------------------------------------------------------
|
| هذا الملف مسؤول عن:
| 1. استقبال طلب الدفع من تطبيق فلاتر (المبلغ ومعرّف المستخدم/السائق).
| 2. إنشاء رابط دفع فريد وخاص ببوابة eCash.
| 3. حساب رمز التحقق (Verification Code) المطلوب من eCash.
| 4. تسجيل محاولة الدفع في قاعدة البيانات بحالة "قيد الانتظار".
| 5. إعادة رابط الدفع إلى التطبيق ليتم عرضه في WebView.
|
*/

// --- الإعدادات الرئيسية - يجب تخزينها كمتغيرات بيئة (Environment Variables) ---
$ecash_merchant_id = getenv('ECASH_MERCHANT_ID');       // معرّف التاجر الخاص بك من eCash
$ecash_merchant_secret = getenv('ECASH_MERCHANT_SECRET'); // المفتاح السري الخاص بك من eCash
$ecash_terminal_key = getenv('ECASH_TERMINAL_KEY');       // مفتاح المحطة الطرفية (Terminal Key) من eCash
$ecash_checkout_url =  'https://checkout.ecash-pay.com/'; // 
$ecash_checkout_url_stage =  'https://checkout.ecash-pay.co/';//رابط بوابة الدفع
$base_app_url = getenv('APP_BASE_URL');                 // الرابط الأساسي لواجهة API الخاصة بك

// --- استقبال البيانات من تطبيق فلاتر ---
$amount = filterRequest("amount");
$passengerId = filterRequest("passengerId"); // معرّف السائق أو المستخدم

// --- التحقق من صحة البيانات المدخلة ---
if (empty($amount) || empty($passengerId) || !is_numeric($amount) || $amount <= 0) {
    printFailure("المبلغ أو معرّف المستخدم غير صالح.");
    exit;
}

// --- إعداد متغيرات الدفع ---
$currency = "SYP"; // العملة حسب متطلبات eCash
$lang = "AR";      // لغة واجهة الدفع (AR أو EN)
//$orderRef = uniqid($passengerId . "_"); // إنشاء رقم مرجعي فريد للطلب لربطه بالمستخدم
$orderRef = "tripz_" . $passengerId . "_" . time();
// --- إنشاء رمز التحقق (Verification Code) ---
// هو عبارة عن MD5 لمجموعة من الحقول ويجب أن يكون بأحرف كبيرة
$verification_string = $ecash_merchant_id . $ecash_merchant_secret . $amount . $orderRef;
$verificationCode = strtoupper(md5($verification_string));

// --- تحديد روابط إعادة التوجيه والاستدعاء (Redirect & Callback) ---
// الرابط الذي يتم توجيه المستخدم إليه بعد إتمام الدفع
$redirectUrl = urlencode($base_app_url . "/passenger/ecash_verify.php?orderRef=" . $orderRef);
// الرابط الذي تستدعيه eCash لإبلاغ سيرفرك بنتيجة العملية (Webhook)
$callbackUrl = urlencode($base_app_url . "/passenger/ecash_webhook.php");

// --- بناء رابط الدفع النهائي الخاص بـ eCash ---
$paymentUrl = "{$ecash_checkout_url}Checkout/CardCheckout" .
    "?tk=" . urlencode($ecash_terminal_key) .
    "&mid=" . urlencode($ecash_merchant_id) .
    "&vc=" . urlencode($verificationCode) .
    "&c=" . urlencode($currency) .
    "&a=" . urlencode($amount) .
    "&lang=" . urlencode($lang) .
    "&or=" . urlencode($orderRef) .
    "&ru=" . $redirectUrl .
    "&cu=" . $callbackUrl;
//error_log("eCash - فشل تسجيل الدفعة المبدئية: " . $paymentUrl);
// --- تسجيل العملية المبدئية في قاعدة البيانات ---
// هذا يساعد على تتبع الطلب وربطه بالـ callback القادم من eCash
// نفترض أن حقل status يقبل القيم: 0=فشل، 1=نجاح، 2=قيد الانتظار
try {
    $stmt = $con->prepare(
        "INSERT INTO `paymentsLogSyria`( `user_id`, `amount`, `status`, `order_ref`, `payment_method`, `created_at`)
        VALUES (:user_id, :amount, 2, :order_ref,'ecash-passenger', NOW())"
    );
    $stmt->execute([
        ':user_id' => $passengerId,
        ':amount' => $amount,
        ':order_ref' => $orderRef
    ]);
} catch (PDOException $e) {
    error_log("eCash - فشل تسجيل الدفعة المبدئية: " . $e->getMessage());
    printFailure("حدث خطأ أثناء بدء عملية الدفع. يرجى المحاولة مرة أخرى.");
    exit;
}

// --- إعادة رابط الدفع إلى تطبيق فلاتر ---
// التطبيق سيستقبل هذا الرابط ويفتحه في WebView
// نرسل الرابط داخل حقل 'message' كما يتوقع كود فلاتر
printSuccess($paymentUrl);

?>
