ssheduardo / sermepa

Clase para utilizar la pasarela de pagos redsys, sermepa.
MIT License
191 stars 59 forks source link

Problemas con setNotification #90

Closed manuweb closed 1 year ago

manuweb commented 1 year ago

Hola a todos.

Tengo un problema con las notificaciones, funciona bien pero no como yo quisiera. Me explico.

Lo tengo montado de manera que la pagina de redsys va en un iframe al que le pongo la siguiente url document.all.iframe_tpv.src = url+'/tpv.php?importe='+total+'&order='+order;

Me carga perfectamente y en tpv.php especifico:

$url2='?pedido='.$order.'&importe='.$importe;
$redsys->setNotification($url.'tpv_noti.php'.$url2); 
$redsys->setUrlOk($url.'tpv_ok.php'.$url2); //Url OK
$redsys->setUrlKo($url.'tpv_ko.php'.$url2); //Url KO

En tpv_noti.php recojo todo correctamente, tanto $_GET como $_POST.

Tanto en tpv_ok.php como en tpv_ko.php, tengo el siguiente código:

<?php
  $pedido=$_GET['pedido'];
  $importe=$_GET['importe'];
  $mensaje=$pedido.'###OK###'.$importe;
  // para KO $mensaje=$pedido.'###KO###'.$importe;
  ?>
  <script>
  window.parent.postMessage('<?php echo $mensaje;?>','*');
  </script>

En el momento que el pago está autorizado o denegado se ejecuta tpv_noti.php sin problemas, pero ni tpv_ok.php ni tpv_ko.php se ejecutan hasta que el usuario da clic en TERMINAR.

He probado a quitar

$redsys->setUrlOk($url.'tpv_ok.php'.$url2); //Url OK
$redsys->setUrlKo($url.'tpv_ko.php'.$url2); //Url KO 

y poner en tpv_noti.php después de verificar

<script>
window.parent.postMessage('<?php echo $mensaje;?>','*');
</script>

y hasta que el usuario da clic en TERMINAR no hace nada

¿Alguna idea para solucionarlo?

Gracias

ssheduardo commented 1 year ago

Es que eso es parte del Banco deben dar a continuar para que el banco llame al OK o KO de tu página.

manuweb commented 1 year ago

Es que eso es parte del Banco deben dar a continuar para que el banco llame al OK o KO de tu página.

Gracias Eduardo.

Lo que haré es que en el php de notificación ejecutaré las tareas que hacía con javascript en el servidor (crear el pedido, ponerlo como pagado, etc) ya que tpv_noti.php lo que no me deja es meter codigo javascript despues de verificar.

ssheduardo commented 1 year ago

El OK y KO es más algo visual, recuerda que los datos se ven por GET, todas las operaciones sensibles debes hacerlo por la URL de Notificación es un consejo.

manuweb commented 1 year ago

El OK y KO es más algo visual, recuerda que lso datos se ven por GET, todas las operaciones sensibles debes hacerlo por la ULR de Notificación es un consejo.

Si, así lo hago. Muchas gracias.