Advertisement
naitus

Página de Cierre WebpayPlus KCC CTala

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