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

(Tiempo estimado: 2 - 4 minutos)

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...

⬇️ Conoce el hardware que utilizo ⬇️

🔥 HAZ CLICK AHORA 🔥

 

 

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!


⬇️ Conoce el hardware que utilizo ⬇️

🔥 HAZ CLICK AHORA 🔥
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
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 :(

https://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
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.
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 :)
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.
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.
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
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?
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
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
Mario Toran Rodriguez
# Mario Toran Rodriguez 28-12-2020 13:16
Hola Raúl. Encantado de saludarte. Estoy intentando utilizar el php que tienes de ejemplo para conectarme con redsys y tengo dos problemillas.
1. Al cargar el index.php me aparece este error:

Notice: Undefined index: submitPayment in C:\xampp\htdocs\humus\index.php on line 13
PASO.1) Introduce los datos y tipo de pack:

Notice: Undefined index: submitPayment in C:\xampp\htdocs\humus\index.php on line 28

2.- Al hacer el submit a la pasarela me aparece el siguiente(he puesto los datos de comercio y todo el rollo, correctos)

Your request has not been processed. Please contact the administrator.

Your support ID is: 18192039040761644768

Gracias de antemano. Mario
Raúl Prieto Fernández
# Raúl Prieto Fernández 10-01-2021 18:51
Hola Mario Toran Rodriguez:

Podrías colgar en algún sito el php ? Oculta los datos de tu TPV. Yo esa parte ya no puedo probarla porque no tengo acceso a ningún TPV, pero puedo mirarte lo del punto 1.

Saludos

No tienes permisos para escribir comentarios. Debes autenticarte con Facebook, Linkedin, Twitter o Google.