Foros del Web » Programando para Internet » PHP »

Problema con notificación POST TPV Redsys

Estas en el tema de Problema con notificación POST TPV Redsys en el foro de PHP en Foros del Web. Buenos días, estoy trabajando con el TPV de Redsys. El cliente haría un pago en la página a través de esta pasarela de pago. Tengo ...
  #1 (permalink)  
Antiguo 02/08/2017, 01:38
Avatar de Luisda  
Fecha de Ingreso: octubre-2015
Ubicación: Villanueva de la Reina
Mensajes: 33
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Problema con notificación POST TPV Redsys

Buenos días, estoy trabajando con el TPV de Redsys. El cliente haría un pago en la página a través de esta pasarela de pago. Tengo una página en la que recojo todos los datos.

CONFIRMA-PAGO.PHP
Código PHP:

// Se incluye la librería
include 'inc/redsysHMAC256_API_PHP_5.2.0/apiRedsys.php';

// Se crea Objeto
$miObj = new RedsysAPI;

$urlMerchant=$urlweb_ok get_site_url('''''https').'/validacion-firma';    
$urlweb_ok get_site_url('''''https').'/validacion-firma';    

// Se Rellenan los campos
$miObj->setParameter("DS_MERCHANT_AMOUNT",$amount);
$miObj->setParameter("DS_MERCHANT_CURRENCY",$currency);
$miObj->setParameter("DS_MERCHANT_ORDER",$order);
$miObj->setParameter("DS_MERCHANT_MERCHANTCODE",$code);
$miObj->setParameter("DS_MERCHANT_TERMINAL",$terminal);
$miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE",$transactionType);
$miObj->setParameter("DS_MERCHANT_MERCHANTURL",$urlMerchant);
$miObj->setParameter("DS_MERCHANT_URLOK"$urlweb_ok);

... 
Cuándo se comprueba que el pago este correcto me mandaría a VALIDACION-FIRMA, pasándole los datos (ya que se supone que con DS_MERCHANTURL me manda los datos a la URL que le indique). Aquí saldría un mensaje diciendo que el pago se ha hecho correctamente comprobando que los datos no estén vacíos.

El problema es al llegar a la otra página, recojo los datos y me llegan vacíos, por lo que la comprobación no funcionaría y muestra un mensaje diciendo que ha habido un error en el pago.

VALIDACION-FIRMA.PHP

Código PHP:

require_once('inc/redsysHMAC256_API_PHP_5.2.0/apiRedsys.php');

$Redsys=new RedsysAPI;
                                    
$versionURL=$_POST["Ds_SignatureVersion"];
$paramsURL=$_POST["Ds_MerchantParameters"];
$signatureRecibida=$_POST["Ds_Signature"];

if (isset(
$paramsURL))
{
   
Código....

Muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 07/08/2017, 03:46
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 18 años, 1 mes
Puntos: 32
Respuesta: Problema con notificación POST TPV Redsys

Mira si asi te funciona.

Código PHP:

<?pph
$miObj 
= new RedsysAPI;

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


        
$decodec $miObj->decodeMerchantParameters($datos);
        
$kc 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';//Clave recuperada de CANALES
        
$firma $miObj->createMerchantSignatureNotif($kc,$datos);

        
$codigo_venta_recibido=$miObj->getParameter("Ds_Order");
        
$respuesta=$miObj->getParameter('Ds_Response');

    }
?>
Obtienes los valores $codigo_venta_recibido y la respuesta de la TPV para saber si ha ido todo correcto.

Valores de respuesta:
Código:
0000 a 0099 Transacción Autorizada para pagos y preautorizaciones
0900 Transacción Autorizada para devoluciones y confirmaciones
0101 Tarjeta Caducada
0102 Tarjeta en excepción transitoria o bajo sospecha de fraude
0116 Disponible Insuficiente
0118 Tarjeta no Registrada
0180 Tarjeta ajena al servicio
0184 Error en la autenticación del titular
0190 Denegación sin especificar motivo
0191 Fecha de caducidad errónea
0202 Tarjeta en excepción transitoria o bajo sospecha de fraude con retirada de tarjeta
0912 / 9912 Emisor no Disponible
Cualquier otro valor Transacción denegada
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.

Etiquetas: post, tpv
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 11:13.