<?php
// --- payWithEcash.php (Updated) ---
// This script now saves transaction details before generating the payment link.

require "../../jwtconnect.php"; // Your existing connection/auth script
require_once "ecash_config.php";   // The ecash config file

// --- Get Input Data ---
$amount = filterRequest("amount", "numeric");
$passengerId = filterRequest("passengerId"); // Get passengerId from the request

if (!$amount || $amount <= 0) {
    printFailure("Invalid or missing amount.");
    exit;
}
if (!$passengerId) {
    printFailure("Passenger ID is required.");
    exit;
}

// The user ID from your JWT authentication in jwtconnect.php
$userId = $decodedToken->user_id ?? null;
if (!$userId) {
    printFailure("Authentication failed.");
    exit;
}

// 1. --- Create a unique order reference ---
$orderRef = 'INTALEQ_' . $userId . '_' . time();

// 2. --- Save the initial transaction to your database ---
// This step is CRITICAL for the webhook to work correctly.
// Create a table named 'ecash_transactions' with columns like:
// id, order_ref, user_id, passenger_id, amount, status, created_at, updated_at
try {
    $stmt = $con->prepare(
        "INSERT INTO ecash_transactions (order_ref, user_id, passenger_id, amount, status) VALUES (?, ?, ?, ?, 'pending')"
    );
    $stmt->execute([$orderRef, $userId, $passengerId, $amount]);
} catch (PDOException $e) {
    // Log the database error
    error_log("ecash_initiate DB Error: " . $e->getMessage());
    printFailure("Failed to initiate payment transaction.");
    exit;
}

// 3. --- Generate the Verification Code (VC) ---
$stringToHash = ECASH_MERCHANT_ID . ECASH_MERCHANT_SECRET . $amount . $orderRef;
$verificationCode = strtoupper(md5($stringToHash));

// 4. --- Construct URLs ---
$redirectUrl = urlencode(APP_REDIRECT_URL_SUCCESS);
$callbackUrl = urlencode(APP_CALLBACK_URL);

// 5. --- Build the Final Checkout URL ---
$checkoutUrl = sprintf(
    "%s/Checkout/CardCheckout?tk=%s&mid=%s&vc=%s&c=%s&a=%s&lang=%s&or=%s&ru=%s&cu=%s",
    ECASH_CHECKOUT_URL,
    ECASH_TERMINAL_KEY,
    ECASH_MERCHANT_ID,
    $verificationCode,
    ECASH_CURRENCY,
    $amount,
    ECASH_LANG,
    $orderRef,
    $redirectUrl,
    $callbackUrl
);

// 6. --- Return the URL to Flutter ---
printSuccess($checkoutUrl);

?>
