Pagina de confirmación PHP Laravel

185 views
Skip to first unread message

ederAlvarez

unread,
Mar 4, 2016, 1:20:47 PM3/4/16
to Desarrolladores PayU Latam
Buen día;
Tengo un problema en la pagina de confirmación a la hora de actualizar mi sistema con la respuesta de la pasarela. Algo de contexto; estoy desarrollando un ecommerce en php con el framework Laravel 4.2 tengo implementado un carrito de compras (Moltin cart). El problema es el siguiente:
En la pagina de confirmación recibo las variables que envía la pasarela y hago la captura de las mismas, la cuestión es que no puedo actualizar mas tablas en la base de datos, solo en donde guardo los datos que llegan por post, no puedo ejecutar otros métodos como por ejemplo actualizar el carrito de compras una vez aprobado el pago y no puedo poner variables en sesión. La cuestión es que en la pagina de respuesta, la que ve el usuario, puedo ejecutar cualquier método sin problema, actualizar inventario, carro de compras etc, pero como bien dice la documentación, no se debe utilizar esta pagina para dichas tareas. No tengo idea de que pueda estar pasando, pues en ocasiones  el sistema hace 3 peticiones, como si a la primera no obtuviera el código 200, en otras solo una vez, y en otras no guarda. Realmente no tengo idea de que pueda estar pasando, agradecería me dieran alguna idea de que puede estar mal. Adjunto código ejemplo de la función post:

public function confirmation()
{
if($_SERVER['REQUEST_METHOD']=='POST'){
    
    $state_pol = $_POST["state_pol"];
    $response_code_pol = $_POST["response_code_pol"];
    $risk = $_POST["risk"];
    $reference_sale = $_POST["reference_sale"];
    $payment_method_type = $_POST["payment_method_type"];
    $value = $_POST["value"];
    $currency = $_POST["currency"];
    $test = $_POST["test"];
    $ip = $_POST["ip"];
    $nickname_buyer = $_POST["nickname_buyer"];
    $description = $_POST["description"];
    $extra1      = $_POST["extra1"];
    
    $content  = "Informacion de confirmacion".PHP_EOL;
    $content .= "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-".PHP_EOL;
    $content .= "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-".PHP_EOL;
    $content .= "Estado de la transaccion: ".$state_pol.PHP_EOL;
    $content .= "Codigo de respuesta de PayU: ".$response_code_pol.PHP_EOL;
    $content .= "Riesgo de la transaccion: ".$risk.PHP_EOL;
    $content .= "Referencia de la venta: ".$reference_sale.PHP_EOL;
    $content .= "Tipo de medio de pago: ".$payment_method_type.PHP_EOL;
    $content .= "Valor de la compra: ".$value.PHP_EOL;
    $content .= "Moneda de la transaccion: ".$currency.PHP_EOL;
    $content .= "IP del comprador: ".$ip.PHP_EOL;
    $content .= "Nombre corto del comprador: ".$nickname_buyer.PHP_EOL;
    $content .= "Descripcion de la compra: ".$description.PHP_EOL;
    $content .= "¿Estamos haciendo pruebas? ".$test.PHP_EOL;


   
    
    $fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/infoConfirmacion".$reference_sale.".txt","wb");
    fwrite($fp,$content);
    fclose($fp);
    
$compra = new Compra;
$compra->user_id = $extra1;
$compra->totalCart  =   $value;
$compra->total_compra  =  $value;
$compra->num_items  =   5;
$compra->tipo_compra = 2;
$compra->vlr_envio   =  1000;
if($compra->save()){
                                                

                                                  foreach (Cart::contents() as $item) {
$citem = new Ite;
$citem->compra_id = $compra->id;

  $citem->id_producto = $item->id;
  $citem->nombre = $item->name;
  $citem->valor_unitario = $item->price;
  $citem->image               =   $item->image;
  $citem->iva = $item->tax;
  $citem->cantidad = $item->quantity;
  $citem->valor_total = $item->total();

  $citem->save();
                                         Cart::destroy();

}
                                       }
http_response_code(200);  
                                      



    
    
/*    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-disposition: attachment; filename=archivos.txt');
    header('Content-Length: '.strlen($content));
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Expires: 0');
    header('Pragma: public');
    echo $content;
    exit;*/
}
}
Agradecería infinitamente que me puedan colaborar. Gracias
Reply all
Reply to author
Forward
0 new messages