Foros del Web » Programando para Internet » PHP »

Problemas retorno TPV Redsys

Estas en el tema de Problemas retorno TPV Redsys en el foro de PHP en Foros del Web. Buenas. La desesperación empieza a cundir en mi ya que llevo varios días con este tema y no he podido solucionarlo. Estoy intentando integrar la ...
  #1 (permalink)  
Antiguo 24/06/2016, 03:44
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 3 años, 10 meses
Puntos: 0
Problemas retorno TPV Redsys

Buenas.

La desesperación empieza a cundir en mi ya que llevo varios días con este tema y no he podido solucionarlo.

Estoy intentando integrar la TPV virtual de Redsys en PHP y es que la integración la tengo perfecta pero a la hora de tener que volver desde la tpv a mi pagina el tema no tira bien. En concreto con el tema de las validaciones.

Para poder validar que se haya realizado el pago o no Redsys te indica que hagas esto:

Código PHP:
Ver original
  1. $version = $_POST["Ds_SignatureVersion"];
  2.     $params = $_POST["Ds_MerchantParameters"];
  3.     $signatureRecibida = $_POST["Ds_Signature"];

Estas variables se llenan con la información en POST previamente mandada al TPV y que esta perfecto ya que el pago se realiza bien.

Pero a la hora del retorno no se por que estas variables se quedan vacías, es decir no están recibiendo nada por POST.

Alguien que haya usado esta misma TPV y que lo haga bien o alguien que le haya pasado lo mismo y lo haya solucionado alguna sugerencia o ayuda?
  #2 (permalink)  
Antiguo 24/06/2016, 04:44
 
Fecha de Ingreso: noviembre-2013
Mensajes: 13
Antigüedad: 6 años, 1 mes
Puntos: 1
Respuesta: Problemas retorno TPV Redsys

Hola Colo, lo que te envía redsys cuando vuelves a tener el control, debes decodificarlo y después podrás acceder a todas esas variables. Supongo que tendrás la API de redsys incluida en tu código.

Yo lo hago así:
Código:
include 'apiRedsys.php';

	// Se crea Objeto
	$miObj = new RedsysAPI;


	#if (!empty( $_POST ) ) {//URL DE RESP. ONLINE
					
					$version = $_GET["Ds_SignatureVersion"];
					$datos = $_GET["Ds_MerchantParameters"];
					$signatureRecibida = $_GET["Ds_Signature"];
					

					$decodec = $miObj->decodeMerchantParameters($datos);	
					$kc = 'La clave que tenga el comercio'; //
					$firma = $miObj->createMerchantSignatureNotif($kc,$datos);	

					if ($firma === $signatureRecibida){
						echo "FIRMA OK";
					} else {
						echo "FIRMA KO";
					}
	#}

# Después ya puedes acceder a todos los parámetros que te ha enviado REDSYS. Aquí tienes un ejemplo.
$codigo=$miObj->getParameter("Ds_Order");
Fíjate que utilizo GET, no POST. Redsys dice que es es post pero realmente las envía por GET.
Saludos.

Última edición por Mark_61; 24/06/2016 a las 05:10 Razón: Añadir
  #3 (permalink)  
Antiguo 24/06/2016, 13:12
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 3 años, 10 meses
Puntos: 0
Respuesta: Problemas retorno TPV Redsys

Buenas.

Lo primero agradecer la respuesta.

Muy interesante lo que me pones. Le echare una ojeada y comentare a ver que tal.

Muchas gracias, a ver si así se me solucionan los problemas!!
  #4 (permalink)  
Antiguo 06/07/2016, 04:10
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 3 años, 10 meses
Puntos: 0
Respuesta: Problemas retorno TPV Redsys

Buenas.

Vuelvo a comentar en este tema para no crear otro por el mismo problema.

Sigo teniendo problemas con el retorno a mi web desde la tpv de Redsys.

Igual es que estoy haciendo algo mal ya no lo se. Esta es mi URLOK en el que se supone que si el pago ha ido bien te redirige a este php, que redirigir lo hace pero la pantalla se me queda en blanco y no me hace las operaciones que tendría que hacer:

Código PHP:
Ver original
  1. <?php
  2.     require_once './conexiones.php';                
  3.     include './apiRedsys.php';
  4.    
  5.     session_start();
  6.  
  7.     mysql_connect($dbhost, $dbusername, $dbuserpass);
  8.     mysql_select_db($dbname) or die('Cannot select database');
  9.    
  10.     $miObj = new RedsysAPI;
  11.    
  12.     if(!empty($_POST)){
  13.         $version = $_GET["Ds_SignatureVersion"];
  14.         $datos = $_GET["Ds_MerchantParameters"];
  15.         $signatureRecibida = $_GET["Ds_Signature"];
  16.        
  17.         $decodec = $miObj->decodeMerchantParameters($datos);
  18.         $kc = 'mi clave';
  19.         $firma = $miObj->createMerchantSignatureNotif($kc, $datos);
  20.                
  21.         if($firma === $signatureRecibida){
  22.            
  23.            
  24.             $variable= $_SESSION['variable'];          
  25.             $query = "UPDATE tabla SET pago= 1 WHERE variable LIKE '$variable'";
  26.             mysql_query($query) or die(mysql_error());
  27.             unset($variable);
  28.             echo "<script language='javascript'>alert('PAGO REALIZADO'); document.location=('http://www.miweb.com/es/main.php')</script>";    
  29.         }
  30.     }
  31.        
  32. ?>

Hay algo mal? Esta bien?

Cualquier ayuda ser bienvenida ya que soy incapaz de dar con la tecla que haga que esto funcione de manera correcta.

Un saludo
  #5 (permalink)  
Antiguo 06/07/2016, 09:37
 
Fecha de Ingreso: noviembre-2013
Mensajes: 23
Antigüedad: 6 años
Puntos: 4
Respuesta: Problemas retorno TPV Redsys

Buenas ,

recientemente lo he tenido que implementar en una web y te entiendo, también he tenido que pelearme lo mío para hacerlo funcionar como quería.

Vamos por partes, en mi caso, yo utilice 3 urls:

$miObj->setParameter("DS_MERCHANT_MERCHANTURL",$url);
$miObj->setParameter("DS_MERCHANT_URLOK",$urlOK);
$miObj->setParameter("DS_MERCHANT_URLKO",$urlKO);

En la primera, es donde hago las comprobaciones, grabo en bbdd, etc.
Y las otra dos, son donde te reenvía la pasarela en función del resultado.

Además te aconsejo que añadas esta comprobación:

$codigoRespuesta = $miObj->getParameter("Ds_Response");
if($codigoRespuesta < 100){
//Aquí tu código
}

Esto es porque Redsys, prevee muchos tipos de respuesta, cada uno con su código, todos los códigos por debajo de 100 son los que indican que la transacción ha ido bien.


Y algo muy importante, por lo que indicas, parece que no te están devolviendo nada el tpv, en mi caso (utilizaba el tpv de la caixa) por defecto venia desactivado, revisa que no sea ese el caso.

Espero aportarte algo de luz.

Cualquier cosa comenta, y lo revisamos si no.

Un saludo
  #6 (permalink)  
Antiguo 07/07/2016, 06:36
 
Fecha de Ingreso: diciembre-2012
Mensajes: 17
Antigüedad: 7 años
Puntos: 2
Respuesta: Problemas retorno TPV Redsys

Buenas, yo también estoy implementando el tema del TPV con Redsys, de hecho he escrito otro post porque tengo problemas para instalar la librería mcrypt en el servidor de mi cliente, que usa una versión de PHP algo antigua.

A lo que iba, yo aún no he podido probarlo por el problema mencionado, pero por lo que yo he entendido leyendo la documentación, tienes que especificar tres URLS distintas. La URL_OK y la URL_KO es donde el servidor redirige la navegación del cliente en función de si el proceso ha ido bien o mal. Pero entiendo que no pasa ningún dato. Para pasarte los datos invocará lo que hayas puesto en el parámetro URL, que debe ser otra página de tu servidor a la que el cliente no accederá, y que solo está ahí para procesar los datos del pago.

Es decir, que creo que estás intentando recuperar la información en la página URL_OK, y ahí no debería llegar nada. Comprueba qué es lo que te llega en las variables $_POST o $_GET, yo creo que seguramente están llegando vacías.
  #7 (permalink)  
Antiguo 11/07/2016, 03:46
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 3 años, 10 meses
Puntos: 0
Respuesta: Problemas retorno TPV Redsys

Buenas.

Ante todo, gracias por las respuestas. Si no fuera por esta web, no hubiera llegado tan lejos creando mi aplicación.

La verdad es que no me aclaro muy bien y puede ser ese el gran problema.

Lo de las 3 URLs lo tengo claro. Pero claro, yo he entendido que la $url es para crear las notificaciones, y las $url_ok y $_urlKo son como decís, para cuando la cosa tira bien o mal.

Por eso cuando la cosa tira bien, es decir me redirige a la $url_ok, en esa url que yo he especificado hago las operaciones pertinentes y cuando la cosa va mal, me redirige a la $url_Ko en cuyo caso hago las operaciones que toquen.

Lo que queréis decirme es que esas operaciones las tendría que hacer en la misma $url para crear notificaciones? y dejar las $url_ok y $url_ko como meras re direcciones?

Un saludo
  #8 (permalink)  
Antiguo 15/07/2016, 01:51
 
Fecha de Ingreso: diciembre-2012
Mensajes: 17
Antigüedad: 7 años
Puntos: 2
Respuesta: Problemas retorno TPV Redsys

Buenas de nuevo, este fin de semana me pondré con el tema y te confirmaré si va todo como creo.

En principio la idea que tengo yo es que cuando el cliente tenga el pedido lo mandaré al TPV, y en las URLs haré estas tres cosas:
- URL: aquí procesaré la respuesta del TPV y pondré en base de datos si el pago del pedido se ha completado o no, y si se ha completado enviaré un email al cliente.
- URL_OK: mostraré una página conforme el pedido está ok e indicando al cliente que en breve recibirá un email con los datos del pedido.
- URL_KO: mostraré una página indicando que ha habido problemas en el pago y no se ha podido completar el pedido, e indicando posibles soluciones para completar el pedido.

Saludos!
  #9 (permalink)  
Antiguo 20/07/2016, 03:37
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 3 años, 10 meses
Puntos: 0
Respuesta: Problemas retorno TPV Redsys

Buenas.

@ugeltroglodita suerte con la implantación de la tpv. Ya me comentaras que tal te a ido y si lo consigues si te ha costado mucho.

Yo he tomado la decisión salomónica de dejar el tema en:

- $URL, tal como te indica Redsys en sus ejemplos. Lo he dejado exactamente igual. No se si hará algo o no pero así lo he dejado.

- $URLOK, aquí hago las operaciones que quiero cuando el pago va bien. No he tenido en cuenta ni firmas ni signatures ni nada. Solo un UPDATE en una de mis tablas para que conste que el pago es correcto y una re dirección de vuelta a mi web.

- $URLKO, aquí igual que con la URLOK pero en vez de hacer un UPDATE lo que hago es un DELETE para que como el pago no se ha realizado borrar el registro de ese articulo de la web.

Seguramente a nivel técnico no estará bien, pero por lo menos así hace lo que quiero y funciona bien.

El problema que yo tengo es que no se por que, los datos enviados a la tpv como la DS_signature, DS_Merchant... y tal después del pago, no me los devuelve o no los recibo y da igual que esto sea en la $url o en las $urlKOOK no los recibo en ningún lado. Así que consultare con los de Redsys a ver si así todo esta bien y como este sea el caso perfecto.

Cuando pruebes la implantación por favor, tanto si te va bien como mal, comenta por aquí para estar al tanto de como te ha ido.

Un saludo.
  #10 (permalink)  
Antiguo 20/07/2016, 03:38
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 3 años, 10 meses
Puntos: 0
Respuesta: Problemas retorno TPV Redsys

Cita:
Iniciado por ugeltroglodita Ver Mensaje
Buenas de nuevo, este fin de semana me pondré con el tema y te confirmaré si va todo como creo.

En principio la idea que tengo yo es que cuando el cliente tenga el pedido lo mandaré al TPV, y en las URLs haré estas tres cosas:
- URL: aquí procesaré la respuesta del TPV y pondré en base de datos si el pago del pedido se ha completado o no, y si se ha completado enviaré un email al cliente.
- URL_OK: mostraré una página conforme el pedido está ok e indicando al cliente que en breve recibirá un email con los datos del pedido.
- URL_KO: mostraré una página indicando que ha habido problemas en el pago y no se ha podido completar el pedido, e indicando posibles soluciones para completar el pedido.

Saludos!
Buenas.

Suerte con la implantación de la tpv. Ya me comentaras que tal te a ido y si lo consigues si te ha costado mucho.

Yo he tomado la decisión salomónica de dejar el tema en:

- $URL, tal como te indica Redsys en sus ejemplos. Lo he dejado exactamente igual. No se si hará algo o no pero así lo he dejado.

- $URLOK, aquí hago las operaciones que quiero cuando el pago va bien. No he tenido en cuenta ni firmas ni signatures ni nada. Solo un UPDATE en una de mis tablas para que conste que el pago es correcto y una re dirección de vuelta a mi web.

- $URLKO, aquí igual que con la URLOK pero en vez de hacer un UPDATE lo que hago es un DELETE para que como el pago no se ha realizado borrar el registro de ese articulo de la web.

Seguramente a nivel técnico no estará bien, pero por lo menos así hace lo que quiero y funciona bien.

El problema que yo tengo es que no se por que, los datos enviados a la tpv como la DS_signature, DS_Merchant... y tal después del pago, no me los devuelve o no los recibo y da igual que esto sea en la $url o en las $urlKOOK no los recibo en ningún lado. Así que consultare con los de Redsys a ver si así todo esta bien y como este sea el caso perfecto.

Cuando pruebes la implantación por favor, tanto si te va bien como mal, comenta por aquí para estar al tanto de como te ha ido.

Un saludo.
  #11 (permalink)  
Antiguo 25/07/2016, 02:18
 
Fecha de Ingreso: diciembre-2012
Mensajes: 17
Antigüedad: 7 años
Puntos: 2
Respuesta: Problemas retorno TPV Redsys

Hola de nuevo, ya tengo el ejemplo de prueba funcionando. Me ha costado más de lo debido porque había algunas funciones dentro de la librería que me han pasado los de redsys que cascaban, he tenido que modificarlas yo mismo para poder usarlas. No sé si será x la versión de PHP que uso o qué. En fin, te comento lo que he visto hasta el momento:

A mí me devuelve datos tanto en la URL, como en la URL_OK y en la URL_KO. En la URL me lo devuelve por $_POST, y en las otras dos por $_GET, con lo cual se me ven en la URL. Yo recibo tres parámetros, los que indica la documentación: Ds_SignatureVersion, Ds_MerchantParameters y Ds_Signature.

Te paso el código que he puesto yo en mi URL para comproban qué me llegaba:
Código PHP:
$file fopen("archivo.txt""a+");
fwrite($file,"Nueva invocacion".PHP_EOL);
if(
$_POST)
{
    foreach (
$_POST as $clave=>$valor)
    {
        
fwrite($file,"El valor de $clave es: $valor".PHP_EOL);
    }
}
fclose($file); 
Y en las URL_KO y URL_OK tengo este código para recoger los datos, con un print al final para que veas los datos devueltos:
Código PHP:
$miObj = new RedsysAPI;
$version  $_GET["Ds_SignatureVersion"];
$params  $_GET["Ds_MerchantParameters"];
$signaturaRecibida  $_GET["Ds_Signature"];
$decodec $miObj->decodeMerchantParameters($params);
print_r($miObj); 
He leído en la documentación que es OPCIONAL recibir los parámetros en el URL_OK y en el URL_KO, pero la verdad no sé cómo se modifica. Yo por ejemplo querría quitarlos, porque no quiero que se muestre nada de eso en la URL, pero no veo cómo. De todas formas si tampoco te llega nada a la URL definida debe ser otro problema.

Prueba con esto si te ayuda, a ver si recibes algún parámetro desde el TPV.

Un saludo!
  #12 (permalink)  
Antiguo 26/07/2016, 03:05
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 3 años, 10 meses
Puntos: 0
Respuesta: Problemas retorno TPV Redsys

Buenas.

Lo primero gracias por los consejos y sugerencias y la ayuda.

Pues comprobando si los datos me llegan como me indicas te digo que en las url_ok y ko me llegan todos los datos con el problema que la signature recibida es diferente de la que yo mando a la tpv y no se por que. El resto de datos son los correctos.

En la url en cambio creo que no recibo nada ya que en el archivo creado tal como me indicas solo sale "NUEVA INVOCACIÓN". Por lo que veo no entra en el foreach.

Así que problemas varios a los que sinceramente, no se dar solución.

Con respecto lo que dices de que no muestre los datos en la URL cuando vas a url_ok y ko eso se puede quitar en el modulo de administración de la tpv en canales. Entras dentro de Comercios, le das a Modificar y donde pone Parametros en las URLs en vez de Si pones No y ya esta. Eso si, no se si por que yo lo hago mal o algo pero asi si que no me llegan los datos de $miObj si que no me llegan a las urlok y ko.

Un saludo.
  #13 (permalink)  
Antiguo 27/07/2016, 02:33
 
Fecha de Ingreso: diciembre-2012
Mensajes: 17
Antigüedad: 7 años
Puntos: 2
Respuesta: Problemas retorno TPV Redsys

Qué raro que te llegue al url_OK y url_KO y no al url!! Prueba a ver si te está llegando con $_GET en lugar de $_POST, aunque no lo creo. Sino, yo en el pago por Paypal recuerdo que en el panel de administración tenía que marcar una casilla para que me enviase notificación al servidor. Según la documentación, si pones el campo url en tu formulario debería ser suficiente, pero bueno, mira a ver si puede ser por ahí. La verdad es que no he entrado en el panel de administración, solo en el de pruebas, y ahí no se puede establecer ningún parámetro, solo ver los pedidos realizados, por eso no sabía lo de cómo quitar que me envía parámetros a las url_KO y url_OK (por cierto gracias )

Respecto la firma digital no te puedo ayudar porque también estoy teniendo problemas, a veces al comprobar me dice que la firma está OK y otras veces que no. Siendo el mismo código no acabo de entender porque solo va a veces. Investigaré a ver.

Además me he encontrado con otro problema, no sé si ya lo has pasado y me puedes echar una mano. Resulta que según el número de pedido que le paso a veces me da un error SIS0042, que quiere decir que la firma no es correcto. Si yo le envío de "0001" a "0010" van todos bien, pero si le envío "0011" me salta el error. Probé a enviar números de 6 cifras y va bien de "000001" a "000014" pero con "000015" la firma generada no es correcta. ¿Has pasado por esto? Lo flipo bastante la verdad
  #14 (permalink)  
Antiguo 30/07/2016, 02:24
 
Fecha de Ingreso: febrero-2016
Ubicación: Bilbao, BI, EUS
Mensajes: 74
Antigüedad: 3 años, 10 meses
Puntos: 0
Respuesta: Problemas retorno TPV Redsys

Buenas.

Con respecto al problema de los que comentas, sinceramente no me ha llegado a pasar. No lo había visto nunca. Quizás sea por mis problemas con la url o por que mi implantación es mas bien rudimentario. Siento no poder ayudarte.

Un saludo.

Etiquetas: retorno, tpv, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:05.