<?php
header('Content-Type: text/html; charset=utf-8');

$ZIBAL_MERCHANT = 'YOUR_ZIBAL_MERCHANT';
$BOT_TOKEN = 'YOUR_BOT_TOKEN';
$TRANSACTION_CHANNEL_ID = 'YOUR_TRANSACTION_CHANNEL_ID';

$db_host = 'localhost';
$db_name = 'violexst_bot';
$db_user = 'violexst_botuser';
$db_pass = 'YOUR_DB_PASSWORD';

$trackId = $_GET['trackId'] ?? '';
$success = $_GET['success'] ?? '';
$status = $_GET['status'] ?? '';

if (!$trackId) {
    die('شناسه پرداخت نامعتبر است.');
}

$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);

if ($conn->connect_error) {
    die('خطا در اتصال به دیتابیس.');
}

$conn->set_charset('utf8mb4');

$stmt = $conn->prepare("
    SELECT id, user_id, authority, amount, description, card_id, package_id, status
    FROM payments
    WHERE authority = ?
    LIMIT 1
");
$stmt->bind_param('s', $trackId);
$stmt->execute();

$result = $stmt->get_result();
$payment = $result->fetch_assoc();
$stmt->close();

if (!$payment) {
    $conn->close();
    die('تراکنش پیدا نشد.');
}

if ($payment['status'] === 'verified') {
    $conn->close();
    echo '<h2>این پرداخت قبلاً تأیید شده است.</h2>';
    exit;
}

if ($success != '1' || $status != '2') {
    $update = $conn->prepare("
        UPDATE payments
        SET status = 'failed'
        WHERE id = ?
    ");
    $update->bind_param('i', $payment['id']);
    $update->execute();
    $update->close();
    $conn->close();

    echo '<h2>پرداخت ناموفق یا لغو شد.</h2>';
    exit;
}

$data = [
    'merchant' => $ZIBAL_MERCHANT,
    'trackId' => (int)$trackId
];

$ch = curl_init('https://gateway.zibal.ir/v1/verify');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($data),
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json'
    ],
    CURLOPT_TIMEOUT => 30
]);

$response = curl_exec($ch);
curl_close($ch);

$verify = json_decode($response, true);

if (!isset($verify['result']) || $verify['result'] != 100) {
    $conn->close();
    echo '<h2>تأیید پرداخت توسط زیبال انجام نشد.</h2>';
    exit;
}

$paidAmount = (int)($verify['amount'] ?? 0);

if ($paidAmount !== (int)$payment['amount']) {
    $conn->close();
    echo '<h2>مبلغ پرداخت با مبلغ سفارش مطابقت ندارد.</h2>';
    exit;
}

$refId = (string)($verify['refNumber'] ?? $verify['refId'] ?? '');
$cardPan = (string)($verify['cardNumber'] ?? $verify['card_pan'] ?? '');

$update = $conn->prepare("
    UPDATE payments
    SET status = 'verified',
        ref_id = ?,
        card_pan = ?,
        verified_at = NOW()
    WHERE id = ?
");
$update->bind_param('ssi', $refId, $cardPan, $payment['id']);
$update->execute();
$update->close();

$transaction = $conn->prepare("
    INSERT INTO transactions
    (user_id, payment_id, amount, description, ref_id, created_at)
    VALUES (?, ?, ?, ?, ?, NOW())
");
$transaction->bind_param(
    'siiss',
    $payment['user_id'],
    $payment['id'],
    $payment['amount'],
    $payment['description'],
    $refId
);
$transaction->execute();
$transaction->close();

$conn->close();

$message = "✅ پرداخت با موفقیت تأیید شد\n\n"
         . "👤 کاربر: " . $payment['user_id'] . "\n"
         . "💰 مبلغ: " . number_format((int)$payment['amount']) . "\n"
         . "🧾 کد پیگیری: " . $refId;

$telegramUrl = "https://api.telegram.org/bot" . $BOT_TOKEN . "/sendMessage";

$postData = [
    'chat_id' => $payment['user_id'],
    'text' => $message
];

$ch = curl_init($telegramUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $postData,
    CURLOPT_TIMEOUT => 20
]);
curl_exec($ch);
curl_close($ch);

if ($TRANSACTION_CHANNEL_ID) {
    $postData['chat_id'] = $TRANSACTION_CHANNEL_ID;

    $ch = curl_init($telegramUrl);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $postData,
        CURLOPT_TIMEOUT => 20
    ]);
    curl_exec($ch);
    curl_close($ch);
}

echo '<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<title>پرداخت موفق</title>
</head>
<body>
<h2>✅ پرداخت با موفقیت انجام شد</h2>
<p>کد پیگیری: ' . htmlspecialchars($refId) . '</p>
</body>
</html>';
