* 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á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á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ó notificación de pago desde puntopagos.<br>"; echo "Token: " . htmlentities($token) . '<br>'; echo "Por favor comuniquese con la administració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ó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; }