* pay_fail.php -- Manejar fallo de pago
* Parte de modulo de pagos de puntopagos para prestashop
*
* Author: Matias Fernandez <*****@*****.**>
* Copyright (C) 2012  Matias Fernandez
*
*/
require_once dirname(__FILE__) . '/../../config/config.inc.php';
require_once dirname(__FILE__) . '/../../init.php';
require_once dirname(__FILE__) . '/puntopagos_config.php';
require_once dirname(__FILE__) . '/puntopagos.php';
if (!$cookie->isLogged()) {
    Tools::redirect('authentication.php?back=order.php');
}
$token = $_REQUEST['token'];
$token = addslashes($token);
$db = Db::getInstance();
$customer = new Customer((int) $cart->id_customer);
$puntopagos = new puntopagos();
if (trim($token) == '') {
    echo "ERROR: Token no v&aacute;lido";
    die;
}
// verificar que token exista previamente en la BD
$result = $db->ExecuteS('SELECT id FROM `' . _DB_PREFIX_ . 'puntopagos` WHERE `token` ="' . $token . '";');
if ($result[0]['id'] == '') {
    echo "ERROR: Token no v&aacute;lido";
    die;
}
$puntopagos->validateOrder((int) $cart->id, Configuration::get('PS_OS_ERROR'), $total, $puntopagos->displayName, 'Pago rechazado por puntopagos', array(), NULL, false, $customer->secure_key);
Tools::redirectLink(__PS_BASE_URI__ . 'order-confirmation.php?id_cart=' . $cart->id . '&id_module=' . $puntopagos->id . '&id_order=' . $puntopagos->currentOrder . '&key=' . $order->secure_key);
        break;
    }
    sleep(1);
}
$total = floatval(number_format($cart->getOrderTotal(true, 3), 2, '.', ''));
$currency = new Currency(intval(isset($_POST['currency_payement']) ? $_POST['currency_payement'] : $cookie->id_currency));
$customer = new Customer((int) $cart->id_customer);
$puntopagos = new puntopagos();
// pagado o no pagado?
if ($paid == 0) {
    echo "ERROR: No se recibi&oacute; notificaci&oacute;n de pago desde puntopagos.<br>";
    echo "Token: " . htmlentities($token) . '<br>';
    echo "Por favor comuniquese con la administraci&oacute;n del sitio y notifique este error.";
    $query = "UPDATE `" . _DB_PREFIX_ . "puntopagos` SET `status` = 'ERRN', `error` = 'No se recibe notificacion desde puntopagos' WHERE token = '{$token}' AND `status` != 'FAIL'";
    $db->Execute($query);
    $puntopagos->validateOrder((int) $cart->id, Configuration::get('PS_OS_ERROR'), $total, $puntopagos->displayName, 'No se recibio notificacion de pagos desde puntopagos, token: ' . htmlentities($token), array(), NULL, false, $customer->secure_key);
    echo "<hr>";
    $location = __PS_BASE_URI__ . 'order-confirmation.php?id_cart=' . $cart->id . '&id_module=' . $puntopagos->id . '&id_order=' . $puntopagos->currentOrder . '&key=' . $order->secure_key;
    echo '<button type="button" onclick="window.location=\'' . $location . '\';">Continuar</button>';
    die;
} else {
    if ($paid == 2) {
        echo "ERROR: Firma de notificacion de pago invalida.<br>";
        echo "Token: " . htmlentities($token) . '<br>';
        echo "Por favor comuniquese con la administraci&oacute;n del sitio y notifique este error.";
        $puntopagos->validateOrder((int) $cart->id, Configuration::get('PS_OS_ERROR'), $total, $puntopagos->displayName, 'Firma de notificacion de pagos invalida, token: ' . htmlentities($token), array(), NULL, false, $customer->secure_key);
        echo "<hr>";
        $location = __PS_BASE_URI__ . 'order-confirmation.php?id_cart=' . $cart->id . '&id_module=' . $puntopagos->id . '&id_order=' . $puntopagos->currentOrder . '&key=' . $order->secure_key;
        echo '<button type="button" onclick="window.location=\'' . $location . '\';">Continuar</button>';
        die;
    }