Mi Blog

No te olvides seguirme en Facebook.

Tan solo tienes que hacer click en Me Gusta

 

 

x

⋆ Nueva Web con TPV Redsys y control de pagos

⋆ Nueva Web con TPV Redsys y control de pagos

Integrar una pasarela TPV de RedSYS en PHP en nuestra Web o en una nueva es sumamente sencillo. Siguiendo el manual que publiqué hace ya bastantes meses Cómo integrar una pasarela de pago TPV RedSys con PHP , acabo de realizar un pequeño portal conectado a RedSys y con control de pago de usuarios. Si quieres ver el resultado final, continúa leyendo...

 

 

Hace unas semanas me encargaron el diseño de una pequeña página web (desde cero) con pasarela de pagos integrada a RedSYS, la cual debía ser capaz de hacer ingresos en cuenta a través de un sencillo formulario. Poco a poco el portal y sus funcionalidades se fueron complicando y todas ellas  (aunque oculpas a lusuario final) tuve que diseñarlas, testearlas y validarlas.

Como es lógico, no voy a publicar el código de este nuevo proyecto privado, pero a modo de resumen, las características funcionales del portal son las siguientes:

  • Validación de formularios
  • Revisión de datos antes del pago
  • Envio de datos al TPV a través de HTTPS y la APi de RedSYS
  • Panel de control protegido
  • Listado de todos los pagos y su estado
  • Filtrado de pagos por (pendiente, ok y error)
  • Borrado de registros y purgado de la base de datos
  • Generación de QRCodes para cada transaccción
  • Desactivación del ticket una vez usado el QRCODE
  • Envío de confirmación por Email al cliente
  • Envío por Email al clinete con el QRCode adjunto

 

La página principal con el formulario de pago es la siguiente:

TPV CMS REDSYS

 

 

Una vez que el usuario valida los datos, los confirma y se realiza el envío de información al TPV de RedSYS a través de su API:

TPV CMS REDSYS

 

Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

 

El panel de control ha sido diseñado de forma muy sencilla para ver a simple vista el estado de los pagos. El admin puede borrar y listar los pagos en función de su estado (ok, error, pendiente):

TPV CMS REDSYS

 

Dirección Web: URL privada no accesible

 

Recuerda que el tutorial para integrar la pasarela RedSYS TPV en PHP puedes verlo aqui Cómo integrar una pasarela de pago TPV RedSys con PHP 

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Comentarios  

Juan
# Juan 31-01-2018 11:36
Buenos días,
me parece genial el ejemplo, tienes un enlace diposnible para bajar el código?

Gracias
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 03-02-2018 17:33
Hola Juan:

Pues el único código que tengo disponible para poder distribuir es el del TPV, pero no el del CMS que hice para el cliente :(

www.raulprietofernandez.net/blog/webs/como-integrar-una-pasarela-de-pago-tpv-redsys-con-php

Mas que nada porque ya no lo tengo :o ... de todas formas no es demasiado complicado de desarrollar....

Un saludo
Responder
Jordi
# Jordi 19-10-2018 12:33
Hola: Me basé en tu código para realizar una pasarela de pago enlazada con una base de datos. El problema que tengo es que la gente no le da finalizar una vez ha realizado el pago y no se carga en la base de datos. Puedes darme una solución. Gracias.
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 19-10-2018 16:41
Hola Jordi:

Tienes que recoger el POST que envia redsys en una nueva web php ( la url que especificas en $URL_Merchant) y para recogerlo es muy fácil, es solamente un array de datos:

include "assets/apiredsys/apiRedsys.php";
$miObj = new RedsysAPI;

$version = $_POST['Ds_SignatureVersion'];
$params = $_POST['Ds_MerchantParameters'];
$signatureRecibida = $_POST['Ds_Signature'];

$decodec = $miObj->decodeMerchantParameters($params);


Con eso tienes los datos del post en $miObj, y puedes sacar los datos que envía como el codigo de respuesta con:

$codigoRespuesta = $miObj->getParameter('Ds_Response');

Si tienes acceso a los logs de Apache, podrás ver en los logs si RedSys está enviando los datos a la URL correcta. Puedes probar tambien a hacer POST de forma manual a tu web URL_MERCHANT para ver si funciona bien (con datos de ejemplo).

Prueba a ver si te funciona :)
Responder
Jordi
# Jordi 13-11-2018 22:55
Hola Raúl:
Muchas gracias. Me ha funcionado a la perfección. Con los datos de Ds_Order y con el php especificado en la $URL_Merchant he podido cargar en la BBDD los pedidos de forma automática sin tener que esperar que los clientes le den a "finalizar" en la última pantalla de Redsys.
Responder
Jordi
# Jordi 13-11-2018 22:59
Hola Raúl:
Muchas gracias. Me ha funcionado a la perfección. Con los datos de Ds_Order y con el php especificado en la $URL_Merchant he podido cargar en la BBDD los pedidos de forma automática sin tener que esperar que los clientes le den a -finalizar- en la última pantalla de Redsys.
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 14-11-2018 08:39
Hola Jordi:

Me alegro que te sirviese y que ya lo tengas funcionando.

Enhorabuena :D

Saludos
Responder
Lucas
# Lucas 15-11-2019 20:02
Buenas Raul! No se si aun sigues respondiendo el post... Pero tengo una consulta relacionada con una pregunta que ya te han hecho por aquí:
Yo recojo los valores el la pagina de validacion con el $_POST, pero ¿es posible recuperar los datos indicados en ProductDescription mediante este método?
Responder
salvivalle
# salvivalle 02-12-2019 18:34
Buenas tardes, yo tambien estoy con este tema de recoger los parametros de ProductDescription o de cualquier otro parámetro que previamente he enviado¡¡
cualquier ayuda es buena.
Muchas gracias
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 03-12-2019 11:08
Hola Salvivalle y Lucas:

Voy a intentar aclararte un poco las dudas y como funciona RedSys.

En RedSys solo se almacena (si no recuerdo mal), el comercio, el dinero de la transacción, la fecha y hora, número de pedido .... básicamente esos datos. Si tu por ejemplo haces un formulario, y tienes otros campos como: "Tipo de Contrato", "Dirección", "Código Postal", esos datos no los puedes almacenar en RedSys, por tanto no los vas a poder recuperar en el $_POST que envia RedSys nada de esa información.


Por eso, el flujo para hacer el TPV es el siguiente:

1.- Rellenar formulario de pedido y enviar.
2.- Guardar esos datos en una BBDD en local (yo uso el código de pedido como clave primaria) antes de pasar a la URL del TPV de RedSys.
3.- Cuando RedSys envia el $_POST con el array de datos del resultado de la operación, viene entre los datos, el código de pedido. Con ese código de pedido que envía RedSYS, ya puedes modificar el pedido con el mismo número que hayas guardado en el paso 2 en la BBDD local.

Resumen: En RedSys no puedes guardar "datos adicionales", solo los relacionados a la transacción. Los demás datos debes gestionarlos en tu gestor de compras (CMS o tu desarrollo propio) :)

Espero haberte ayudado y aclarado un poco tus dudas.

Saludos
Responder

Escribir un comentario

   

Código de seguridad
Refescar

No Internet Connection