<?php
/**
 * Sınav Koçu - Geliver.io Kargo API Entegrasyonu
 * Konum: /includes/geliver.php
 */

// Geliver Panelinden alacağın API Token (Şimdilik boş kalabilir, test ortamı için)
define('GELIVER_API_KEY', '03bc3c07-23be-4bbd-a6d5-5db2a0c646fe');
define('GELIVER_API_URL', 'https://api.geliver.io/v1'); // API sürümüne göre güncellenebilir

/**
 * Geliver üzerinden yeni bir kargo gönderisi oluşturur.
 * * @param array $order Sipariş ve Müşteri detaylarını içeren dizi
 * @return array ['ok' => true/false, 'tracking' => '...', 'barcode_url' => '...', 'message' => '...']
 */
function geliver_kargo_olustur($order) {
    if (GELIVER_API_KEY == '03bc3c07-23be-4bbd-a6d5-5db2a0c646fe') {
        return ['ok' => false, 'message' => 'API Anahtarı henüz girilmemiş. Lütfen includes/geliver.php dosyasını güncelleyin.'];
    }

    // Geliver'in dökümantasyonuna göre hazırlanmış örnek payload (gönderilecek veri)
    $payload = [
        "orderReference" => $order['order_number'], // Senin sipariş numaran
        "receiver" => [
            "name" => $order['name'],
            "surname" => $order['surname'],
            "phone" => $order['phone'],
            "email" => $order['email']
        ],
        "deliveryAddress" => [
            "fullAddress" => $order['address'],
            "city" => $order['city'],
            "district" => $order['district']
        ],
        // Paket ağırlığı/desisi varsayılan olarak gönderilebilir
        "parcels" => [
            ["weight" => 1, "desi" => 1]
        ]
    ];

    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => GELIVER_API_URL . '/shipments',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS => json_encode($payload),
        CURLOPT_HTTPHEADER => [
            'Authorization: Bearer ' . GELIVER_API_KEY,
            'Content-Type: application/json',
            'Accept: application/json'
        ],
    ]);

    $response = curl_exec($ch);
    $err = curl_error($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($err) {
        return ['ok' => false, 'message' => 'cURL Hatası: ' . $err];
    }

    $result = json_decode($response, true);

    // Başarılı yanıt kontrolü (HTTP 200 veya 201)
    if ($http_code >= 200 && $http_code < 300 && isset($result['trackingNumber'])) {
        return [
            'ok' => true,
            'tracking' => $result['trackingNumber'],
            'shipping_company' => $result['carrier'] ?? 'Geliver', // Atanan kargo firması
            'barcode_url' => $result['barcodeUrl'] ?? '', // Varsa barkod PDF linki
            'message' => 'Kargo başarıyla oluşturuldu.'
        ];
    } else {
        // API'den dönen hata mesajını yakalama
        $error_msg = $result['message'] ?? 'Bilinmeyen bir API hatası oluştu.';
        return ['ok' => false, 'message' => 'API Hatası: ' . $error_msg];
    }
}
?>