Advertisement
naitus

Página de Cierre WebpayPlus Woocommerce - Cristian Tala

Jun 8th, 2015
554
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.47 KB | None | 0 0
  1. <?php        
  2.  
  3.     public function xt_compra() {
  4.             global $webpay_table_name;
  5.             global $wpdb;
  6.             global $woocommerce;
  7.             global $webpay_comun_folder;
  8.             $sufijo = "[XT_COMPRA]";
  9.             log_me("Iniciando xt_compra", $sufijo);
  10.  
  11.             //rescate de datos de POST.
  12.             $TBK_RESPUESTA = $_POST["TBK_RESPUESTA"];
  13.             $TBK_ORDEN_COMPRA = $_POST["TBK_ORDEN_COMPRA"];
  14.             $TBK_MONTO = $_POST["TBK_MONTO"];
  15.             $TBK_ID_SESION = $_POST["TBK_ID_SESION"];
  16.             $TBK_TIPO_TRANSACCION = $_POST['TBK_TIPO_TRANSACCION'];
  17.             $TBK_CODIGO_AUTORIZACION = $_POST['TBK_CODIGO_AUTORIZACION'];
  18.             $TBK_FINAL_NUMERO_TARJETA = $_POST['TBK_FINAL_NUMERO_TARJETA'];
  19.             $TBK_FECHA_CONTABLE = $_POST['TBK_FECHA_CONTABLE'];
  20.             $TBK_FECHA_TRANSACCION = $_POST['TBK_FECHA_TRANSACCION'];
  21.             $TBK_HORA_TRANSACCION = $_POST['TBK_HORA_TRANSACCION'];
  22.             $TBK_ID_TRANSACCION = $_POST['TBK_ID_TRANSACCION'];
  23.             $TBK_TIPO_PAGO = $_POST['TBK_TIPO_PAGO'];
  24.             $TBK_NUMERO_CUOTAS = $_POST['TBK_NUMERO_CUOTAS'];
  25.  
  26.  
  27.             //Validación de los datos del post.
  28.             if (!isset($TBK_RESPUESTA) || !is_numeric($TBK_RESPUESTA))
  29.                 die('RECHAZADO');
  30.             if (!isset($TBK_ORDEN_COMPRA))
  31.                 die('RECHAZADO');
  32.             if (!isset($TBK_MONTO) || !is_numeric($TBK_MONTO))
  33.                 die('RECHAZADO');
  34.             if (!isset($TBK_ID_SESION) || !is_numeric($TBK_ID_SESION))
  35.                 die('RECHAZADO');
  36.             if (!isset($TBK_TIPO_TRANSACCION))
  37.                 die('RECHAZADO');
  38.             if (!isset($TBK_CODIGO_AUTORIZACION) || !is_numeric($TBK_CODIGO_AUTORIZACION))
  39.                 die('RECHAZADO');
  40.             if (!isset($TBK_FINAL_NUMERO_TARJETA) || !is_numeric($TBK_FINAL_NUMERO_TARJETA))
  41.                 die('RECHAZADO');
  42.             if (!isset($TBK_FECHA_CONTABLE) || !is_numeric($TBK_FECHA_CONTABLE))
  43.                 die('RECHAZADO');
  44.             if (!isset($TBK_FECHA_TRANSACCION) || !is_numeric($TBK_FECHA_TRANSACCION))
  45.                 die('RECHAZADO');
  46.             if (!isset($TBK_HORA_TRANSACCION) || !is_numeric($TBK_HORA_TRANSACCION))
  47.                 die('RECHAZADO');
  48.             if (!isset($TBK_ID_TRANSACCION) || !is_numeric($TBK_ID_TRANSACCION))
  49.                 die('RECHAZADO');
  50.             if (!isset($TBK_TIPO_PAGO))
  51.                 die('RECHAZADO');
  52.             if (!isset($TBK_NUMERO_CUOTAS) || !is_numeric($TBK_NUMERO_CUOTAS))
  53.                 die('RECHAZADO');
  54.  
  55.             $order_id = explode('_', $TBK_ORDEN_COMPRA);
  56.             $order_id = (int) $order_id[0];
  57.  
  58.             if (!is_numeric($order_id))
  59.                 die('RECHAZADO');
  60.  
  61.             /**
  62.              * transbank pide que se de "ACEPTADO" si la respuesta está entre -8 y -1
  63.              */
  64.             if ($TBK_RESPUESTA >= -8 && $TBK_RESPUESTA <= -1)
  65.                 die("ACEPTADO");
  66.  
  67.             //Validar que la orden exista        
  68.             $order = new WC_Order($order_id);
  69.             log_me($order->status, $sufijo);
  70.  
  71.             //Si la orden de compra no tiene status es debido a que no existe
  72.  
  73.             if ($order->status == '') {
  74.                 log_me("ORDEN NO EXISTENTE " . $order_id, $sufijo);
  75.                 die('RECHAZADO');
  76.             } else {
  77.                 log_me("ORDEN EXISTENTE " . $order_id, $sufijo);
  78.                 //CUANDO UNA ORDEN ES PAGADA SE VA A PROCESSING.
  79.  
  80.                 if ($order->status == 'completed' || $order->status == 'processing' || $order->status == 'refunded' || $order->status == 'canceled') {
  81.                     log_me("ORDEN YA PAGADA (" . $order->status . ") EXISTENTE " . $order_id, "\t" . $sufijo);
  82.                     die('RECHAZADO');
  83.                 } else {
  84.  
  85.                     if ($order->status == 'pending' || $order->status == 'failed') {
  86.                         log_me("ORDEN DE COMPRA NO PAGADA (" . $order->status . "). Se procede con el pago de la orden " . $order_id, $sufijo);
  87.                     } else {
  88.                         log_me("ORDEN YA PAGADA (" . $order->status . ") EXISTENTE " . $order_id, "\t" . $sufijo);
  89.                         die('RECHAZADO');
  90.                     }
  91.                 }
  92.             }
  93.  
  94.  
  95.             /*             * **************** CONFIGURAR AQUI ****************** */
  96.             $myPath = $webpay_comun_folder . DIRECTORY_SEPARATOR . "dato$TBK_ID_SESION.log";
  97.             //GENERA ARCHIVO PARA MAC
  98.             $filename_txt = $webpay_comun_folder . DIRECTORY_SEPARATOR . "MAC01Normal$TBK_ID_SESION.txt";
  99.             // Ruta Checkmac
  100.             $cmdline = $this->macpath . "/tbk_check_mac.cgi $filename_txt";
  101.             /*             * **************** FIN CONFIGURACION **************** */
  102.             $acepta = false;
  103.             //lectura archivo que guardo pago.
  104.             if ($fic = fopen($myPath, "r")) {
  105.                 $linea = fgets($fic);
  106.                 fclose($fic);
  107.             }
  108.             $detalle = explode(";", $linea);
  109.             if (count($detalle) >= 1) {
  110.                 $monto = $detalle[0];
  111.                 $ordenCompra = $detalle[1];
  112.             }
  113.             log_me("INICIANDO GUARDADO EN ARCHIVO", $sufijo);
  114.             //guarda los datos del post uno a uno en archivo para la ejecución del MAC
  115.             $fp = fopen($filename_txt, "wt");
  116.             while (list($key, $val) = each($_POST)) {
  117.                 fwrite($fp, "$key=$val&");
  118.             }
  119.             fclose($fp);
  120.             log_me("ARCHIVO CERRADO", $sufijo);
  121.             //Validación de respuesta de Transbank, solo si es 0 continua con la pagina de cierre
  122.             if ($TBK_RESPUESTA == "0") {
  123.                 $acepta = true;
  124.             } else {
  125.                 $acepta = false;
  126.             }
  127.             //validación de monto y Orden de compra
  128.             //
  129.             //
  130.           if ($TBK_MONTO == $monto && $TBK_ORDEN_COMPRA == $ordenCompra && $acepta == true) {
  131.  
  132.                 /**
  133.                  * validamos que la orden de compra no esté repetida preguntando a la base de datos.
  134.                  *
  135.                  */
  136.                 log_me("VERIFICANDO QUE LA ORDEN NO ESTÉ REPETIDA", $sufijo);
  137.                 $res = $wpdb->get_row("SELECT count(*) as total FROM " . $webpay_table_name . " WHERE idOrder = " . $TBK_ORDEN_COMPRA, ARRAY_A);
  138.  
  139.  
  140.                 if ($res['total'] > 0) {
  141.  
  142.                     $acepta = false;
  143.                 } else {
  144.  
  145.                     $acepta = true;
  146.                 }
  147.             } else {
  148.                 log_me("ORDEN REPETIDA O DATOS NO VALIDADOS", $sufijo);
  149.                 $acepta = false;
  150.             }
  151.  
  152.             //Validación MAC
  153.             log_me("INICIANDO VALIDACION MAC", $sufijo);
  154.             if ($acepta == true) {
  155.                 exec($cmdline, $result, $retint);
  156.                 if ($result [0] == "CORRECTO")
  157.                     $acepta = true;
  158.                 else
  159.                     $acepta = false;
  160.             }
  161.             log_me("FIN VALIDACION MAC", $sufijo);
  162.             ?>
  163.             <html>
  164.                 <?php
  165.                 if ($acepta == true) {
  166.                     /*
  167.                      * Agrego la info a la BdD.
  168.                      */
  169.                     ?>
  170.                     ACEPTADO
  171.                 <?php } else { ?>
  172.                     RECHAZADO
  173.                 <?php } exit; ?>
  174.             </html>
  175.  
  176.             <?php
  177.             log_me("FINALIZANDO XT_COMPRA", $sufijo);
  178.         }
  179.  
  180.  
  181. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement