<?php
declare(strict_types=1);

require_once __DIR__ . "/payment/lib/tripay.php";
require_once __DIR__ . "/order-update.php";

$config = require __DIR__ . "/payment/config.php";

$orderId = trim($_GET['order'] ?? '');

if (!$orderId) {
    die("Order tidak ditemukan.");
}


$orderFile = "/etc/tcc-mikhmon/orders/orders.csv";

$fp = fopen($orderFile, "r");

$header = fgetcsv($fp);

$order = null;


while (($row = fgetcsv($fp)) !== false) {

    $data = array_combine($header, $row);

    if (($data['order_id'] ?? '') === $orderId) {
        $order = $data;
        break;
    }
}

fclose($fp);


if (!$order) {
    die("Order tidak ditemukan.");
}


if (!empty($order['checkout_url'])) {

    header(
        "Location: " . $order['checkout_url']
    );

    exit;
}


$payload = [

    "merchant_ref" => $order['order_id'],

    "amount" => (int)$order['price'],

    "customer_name" => strtoupper($order['client']),

    "customer_email" =>
        strtolower($order['client']) . "@tccnetwork.my.id",

    "customer_phone" =>
        "081000000000",

    "order_items" => [

        [
            "name" => $order['package'],
            "price" => (int)$order['price'],
            "quantity" => 1
        ]

    ],

    "callback_url" =>
        $config['callback_url']

];


try {

    $result = tripayRequest(
        "transaction/create",
        $payload,
        $config
    );


} catch (Throwable $e) {

    die(
        "Tripay Error: " . $e->getMessage()
    );

}



if (empty($result['success'])) {

    echo "<pre>";
    print_r($result);
    echo "</pre>";

    exit;

}


$reference =
$result['data']['reference'] ?? '';

$checkout =
$result['data']['checkout_url'] ?? '';


if (!$reference || !$checkout) {

    die("Response Tripay tidak lengkap.");

}


updateOrderTripay(
    $orderId,
    $reference,
    $checkout
);


header(
    "Location: " . $checkout
);

exit;
