<?php
declare(strict_types=1);

require_once __DIR__ . '/paystack_common.php';

try {
    $pdo = ld_pdo();

    $body = ld_body();
    $reference = trim((string)($_GET['reference'] ?? $body['reference'] ?? ''));

    if ($reference === '') {
        ld_json(['success' => false, 'message' => 'reference is required.'], 400);
    }

    $verify = ld_paystack_request('GET', '/transaction/verify/' . rawurlencode($reference));

    if (!($verify['status'] ?? false)) {
        ld_json([
            'success' => false,
            'message' => $verify['message'] ?? 'Paystack verify failed.',
            'paystack' => $verify,
        ], 400);
    }

    $status = $verify['data']['status'] ?? 'unknown';

    if ($status !== 'success') {
        ld_json([
            'success' => true,
            'paid' => false,
            'status' => $status,
            'message' => 'Payment is not successful yet.',
            'reference' => $reference,
        ]);
    }

    $result = ld_process_successful_deposit($pdo, $reference, $verify);
    ld_json($result);
} catch (Throwable $e) {
    ld_json(['success' => false, 'message' => $e->getMessage()], 500);
}
