<?php
// Načtení WordPress prostředí z kořenového adresáře
$wordpress_path = dirname(__FILE__, 4) . '/wp-load.php';

if (file_exists($wordpress_path)) {
    require_once $wordpress_path;
} else {
    exit("Chyba: wp-load.php nebyl nalezen.");
}

require_once "wp-content/plugins/platebni-formular/vendor/autoload.php"; // Načtení Composer autoload

use ThePay\ApiClient\TheConfig;
use ThePay\ApiClient\TheClient;
use ThePay\ApiClient\Model\CreatePaymentParams;
use ThePay\ApiClient\Model\CreatePaymentCustomer;
use GuzzleHttp\Client as GuzzleHttpClient;
use GuzzleHttp\Psr7\HttpFactory;
$api_url = 'https://platebniformular.cz/credentials.php?token=your_secret_token';
$response = file_get_contents($api_url);
if ($response === false) {
    die("Nepodařilo se načíst údaje ze vzdáleného serveru.");
}
$credentials = json_decode($response, true);
if (!isset($credentials['merchant_id'], $credentials['project_id'], $credentials['api_password'], $credentials['environment'])) {
    die("Neplatná odpověď z API.");
}
$merchant_id = $credentials['merchant_id'];
$project_id = $credentials['project_id'];
$api_password = $credentials['api_password'];
$environment = $credentials['environment'];
// Získání údajů z možností WordPressu (fakturační údaje)
$faktury_jmeno = get_option('faktury_jmeno', ''); // Jméno dodavatele
$faktury_adresa = get_option('faktury_adresa', ''); // Adresa dodavatele
$faktury_email = get_option('faktury_email', ''); // E-mail dodavatele

// Kontrola, zda jsou všechny údaje vyplněny
if (empty($faktury_jmeno) || empty($faktury_adresa) || empty($faktury_email)) {
    echo '<div class="notice notice-error"><p>Vyplňte údaje na automaticky generovanou fakturu.</p></div>';
}

// Zkontrolování, zda jsou všechny potřebné údaje zadány
if (empty($merchant_id) || empty($project_id) || empty($api_password)) {
    exit("Chyba: Chybí základní platební údaje. Zkontrolujte nastavení.");
}

// Nastavení parametrů platební brány
$amount = 100; // Částka 1 Kč
$currency = 'CZK';
$payment_uid = uniqid();
$return_url = home_url() . "/call_parent.php"; // URL pro návrat

// Nastavení API URL podle prostředí
$api_url = ($environment === "production") ? "https://api.thepay.cz/" : "https://demo.api.thepay.cz/";
$gate_url = ($environment === "production") ? "https://gate.thepay.cz/" : "https://demo.gate.thepay.cz/";

// Konfigurace klienta The Pay
$config = new TheConfig($merchant_id, $project_id, $api_password, $api_url, $gate_url);
$signatureService = new \ThePay\ApiClient\Service\SignatureService($config);
$httpClient = new GuzzleHttpClient();
$requestFactory = new HttpFactory();
$streamFactory = new HttpFactory();
$apiService = new \ThePay\ApiClient\Service\ApiService($config, $signatureService, $httpClient, $requestFactory, $streamFactory);
$thePayClient = new TheClient($config, $apiService);

// Vytvoření zákazníka (pouze e-mail)
$customer = new CreatePaymentCustomer(
    $faktury_jmeno, // Jméno z faktury
    '', // Příjmení můžete nechat prázdné
    $faktury_email, // E-mail z faktury
    null, // Telefonní číslo se nepoužije
    new \ThePay\ApiClient\Model\Address('CZ', 'Prague', '123 00', $faktury_adresa) // Adresa z faktury
);

// Vytvoření parametrů platby
$createPaymentParams = new CreatePaymentParams($amount, $currency, $payment_uid);
$createPaymentParams->setOrderId('12345');
$createPaymentParams->setDescriptionForCustomer('Platba za služby na example.com');
$createPaymentParams->setCustomer($customer);
$createPaymentParams->setReturnUrl($return_url);

// Uložit autorizaci karty pro budoucí platby
$createPaymentParams->setSaveAuthorization(true);

try {
    // Vytvoření platby a získání URL pro platbu
    $paymentResponse = $thePayClient->createPayment($createPaymentParams);
    $payUrl = $paymentResponse->getPayUrl();
    
    // Uložení UID do WordPress databáze
    update_option('p_payment_uid', $payment_uid);
    
    // Přesměrování zákazníka na platební bránu
    header("Location: " . $payUrl);
    exit();
    
} catch (Exception $e) {
    exit("Chyba při vytváření platby: " . $e->getMessage());
}
?>
