Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- public function xt_compra() {
- global $webpay_table_name;
- global $wpdb;
- global $woocommerce;
- global $webpay_comun_folder;
- $sufijo = "[XT_COMPRA]";
- log_me("Iniciando xt_compra", $sufijo);
- //rescate de datos de POST.
- $TBK_RESPUESTA = $_POST["TBK_RESPUESTA"];
- $TBK_ORDEN_COMPRA = $_POST["TBK_ORDEN_COMPRA"];
- $TBK_MONTO = $_POST["TBK_MONTO"];
- $TBK_ID_SESION = $_POST["TBK_ID_SESION"];
- $TBK_TIPO_TRANSACCION = $_POST['TBK_TIPO_TRANSACCION'];
- $TBK_CODIGO_AUTORIZACION = $_POST['TBK_CODIGO_AUTORIZACION'];
- $TBK_FINAL_NUMERO_TARJETA = $_POST['TBK_FINAL_NUMERO_TARJETA'];
- $TBK_FECHA_CONTABLE = $_POST['TBK_FECHA_CONTABLE'];
- $TBK_FECHA_TRANSACCION = $_POST['TBK_FECHA_TRANSACCION'];
- $TBK_HORA_TRANSACCION = $_POST['TBK_HORA_TRANSACCION'];
- $TBK_ID_TRANSACCION = $_POST['TBK_ID_TRANSACCION'];
- $TBK_TIPO_PAGO = $_POST['TBK_TIPO_PAGO'];
- $TBK_NUMERO_CUOTAS = $_POST['TBK_NUMERO_CUOTAS'];
- //Validación de los datos del post.
- if (!isset($TBK_RESPUESTA) || !is_numeric($TBK_RESPUESTA))
- die('RECHAZADO');
- if (!isset($TBK_ORDEN_COMPRA))
- die('RECHAZADO');
- if (!isset($TBK_MONTO) || !is_numeric($TBK_MONTO))
- die('RECHAZADO');
- if (!isset($TBK_ID_SESION) || !is_numeric($TBK_ID_SESION))
- die('RECHAZADO');
- if (!isset($TBK_TIPO_TRANSACCION))
- die('RECHAZADO');
- if (!isset($TBK_CODIGO_AUTORIZACION) || !is_numeric($TBK_CODIGO_AUTORIZACION))
- die('RECHAZADO');
- if (!isset($TBK_FINAL_NUMERO_TARJETA) || !is_numeric($TBK_FINAL_NUMERO_TARJETA))
- die('RECHAZADO');
- if (!isset($TBK_FECHA_CONTABLE) || !is_numeric($TBK_FECHA_CONTABLE))
- die('RECHAZADO');
- if (!isset($TBK_FECHA_TRANSACCION) || !is_numeric($TBK_FECHA_TRANSACCION))
- die('RECHAZADO');
- if (!isset($TBK_HORA_TRANSACCION) || !is_numeric($TBK_HORA_TRANSACCION))
- die('RECHAZADO');
- if (!isset($TBK_ID_TRANSACCION) || !is_numeric($TBK_ID_TRANSACCION))
- die('RECHAZADO');
- if (!isset($TBK_TIPO_PAGO))
- die('RECHAZADO');
- if (!isset($TBK_NUMERO_CUOTAS) || !is_numeric($TBK_NUMERO_CUOTAS))
- die('RECHAZADO');
- $order_id = explode('_', $TBK_ORDEN_COMPRA);
- $order_id = (int) $order_id[0];
- if (!is_numeric($order_id))
- die('RECHAZADO');
- /**
- * transbank pide que se de "ACEPTADO" si la respuesta está entre -8 y -1
- */
- if ($TBK_RESPUESTA >= -8 && $TBK_RESPUESTA <= -1)
- die("ACEPTADO");
- //Validar que la orden exista
- $order = new WC_Order($order_id);
- log_me($order->status, $sufijo);
- //Si la orden de compra no tiene status es debido a que no existe
- if ($order->status == '') {
- log_me("ORDEN NO EXISTENTE " . $order_id, $sufijo);
- die('RECHAZADO');
- } else {
- log_me("ORDEN EXISTENTE " . $order_id, $sufijo);
- //CUANDO UNA ORDEN ES PAGADA SE VA A PROCESSING.
- if ($order->status == 'completed' || $order->status == 'processing' || $order->status == 'refunded' || $order->status == 'canceled') {
- log_me("ORDEN YA PAGADA (" . $order->status . ") EXISTENTE " . $order_id, "\t" . $sufijo);
- die('RECHAZADO');
- } else {
- if ($order->status == 'pending' || $order->status == 'failed') {
- log_me("ORDEN DE COMPRA NO PAGADA (" . $order->status . "). Se procede con el pago de la orden " . $order_id, $sufijo);
- } else {
- log_me("ORDEN YA PAGADA (" . $order->status . ") EXISTENTE " . $order_id, "\t" . $sufijo);
- die('RECHAZADO');
- }
- }
- }
- /* * **************** CONFIGURAR AQUI ****************** */
- $myPath = $webpay_comun_folder . DIRECTORY_SEPARATOR . "dato$TBK_ID_SESION.log";
- //GENERA ARCHIVO PARA MAC
- $filename_txt = $webpay_comun_folder . DIRECTORY_SEPARATOR . "MAC01Normal$TBK_ID_SESION.txt";
- // Ruta Checkmac
- $cmdline = $this->macpath . "/tbk_check_mac.cgi $filename_txt";
- /* * **************** FIN CONFIGURACION **************** */
- $acepta = false;
- //lectura archivo que guardo pago.
- if ($fic = fopen($myPath, "r")) {
- $linea = fgets($fic);
- fclose($fic);
- }
- $detalle = explode(";", $linea);
- if (count($detalle) >= 1) {
- $monto = $detalle[0];
- $ordenCompra = $detalle[1];
- }
- log_me("INICIANDO GUARDADO EN ARCHIVO", $sufijo);
- //guarda los datos del post uno a uno en archivo para la ejecución del MAC
- $fp = fopen($filename_txt, "wt");
- while (list($key, $val) = each($_POST)) {
- fwrite($fp, "$key=$val&");
- }
- fclose($fp);
- log_me("ARCHIVO CERRADO", $sufijo);
- //Validación de respuesta de Transbank, solo si es 0 continua con la pagina de cierre
- if ($TBK_RESPUESTA == "0") {
- $acepta = true;
- } else {
- $acepta = false;
- }
- //validación de monto y Orden de compra
- //
- //
- if ($TBK_MONTO == $monto && $TBK_ORDEN_COMPRA == $ordenCompra && $acepta == true) {
- /**
- * validamos que la orden de compra no esté repetida preguntando a la base de datos.
- *
- */
- log_me("VERIFICANDO QUE LA ORDEN NO ESTÉ REPETIDA", $sufijo);
- $res = $wpdb->get_row("SELECT count(*) as total FROM " . $webpay_table_name . " WHERE idOrder = " . $TBK_ORDEN_COMPRA, ARRAY_A);
- if ($res['total'] > 0) {
- $acepta = false;
- } else {
- $acepta = true;
- }
- } else {
- log_me("ORDEN REPETIDA O DATOS NO VALIDADOS", $sufijo);
- $acepta = false;
- }
- //Validación MAC
- log_me("INICIANDO VALIDACION MAC", $sufijo);
- if ($acepta == true) {
- exec($cmdline, $result, $retint);
- if ($result [0] == "CORRECTO")
- $acepta = true;
- else
- $acepta = false;
- }
- log_me("FIN VALIDACION MAC", $sufijo);
- ?>
- <html>
- <?php
- if ($acepta == true) {
- /*
- * Agrego la info a la BdD.
- */
- ?>
- ACEPTADO
- <?php } else { ?>
- RECHAZADO
- <?php } exit; ?>
- </html>
- <?php
- log_me("FINALIZANDO XT_COMPRA", $sufijo);
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement