Buenos días.
El problema es el siguiente:
Al hacer una compre en Prestashop con 5 pasos, llegamos a la página de selección de método de pago. Elegimos pago con tarjeta (Redsys). Llegamoa a la pantalla de introducción de la tarjeta. En lugar de introducir los datos pulsamos en la flechita del navegador para ir hacia atrás y llegamos de nuevo a la pantalla de selección del método de pago. Volvemos a pulsar en pagar con tarjeta y Redsys nos da el error: "No se puede realizar la peración. Número de pedido repetido"
URL del sitio: Contenido solo visible a usuarios registrados
Hola,
Entiendo que esto que comentas pasa tanto haciendo la compra con el proceso en 5 pasos como en el proceso de 1 único paso.
Este funcionamiento entra dentro de lo esperado. Trato de explicar qué ocurre: cuando se realiza la conexión desde la tienda con la pasarela de pago, entre otros datos es necesario pasar un id de pedido o, mejor dicho, un id de pago, que sirva para identificar a qué pago de la pasarela se corresponde cada pedido.
La pasarela de Redsys está programada para no aceptar 2 pagos con el mismo id de pago, ya que así se evitan duplicidades. De esta forma, cuando se vuelve hacia atrás, una vez que estamos dentro de la pasarela, y se vuelve a entrar en ella, Redsys ya habrá guardado el id del anterior pago, por lo que no permitirá hacer uno nuevo.
Esto es algo que no se puede controlar desde el propio PrestaShop, ya que es precisamente la pasarela de Redsys, externa a la tienda, la que realiza esas comprobaciones de id de pago.
Hola de nuevo.
No estoy de acuerdo contigo. Creo que hay un error en el módulo de Redsys y que debería recalcularse el número de pedido cada vez que se ejecuta.
De hecho he encontrado este código que creo que es erróneo dentro del fichero redsys.php:
// El num. de pedido -> id_Carrito + el tiempo SS
$numpedido = str_pad($params['cart']->id, 12, '0', STR_PAD_LEFT);
Parece que falta concatenar minutos y segundos.
Lo haría yo mismo, pero no sé si basta con tocar el fichero o hay que hacer algo más en el .zip.
Saludos.
Hola,
Ignoro el plugin de Redsys que estás utilizando. Prueba a cambiar
$numpedido = str_pad($params->id, 12, '0', STR_PAD_LEFT);
por esto otro:
$numpedido = str_pad($params['cart']->id, 10, '0', STR_PAD_LEFT).date('s');
Así se le pasará los segundos en el número de pedido.
De todas formas, este cambio podría provocar que las notificaciones fallen, dependiendo de la forma que se tenga en el proceso de validación para obtener el número de pedido.
Una opción sería que probaras a cambiar el módulo de Redsys que estás utilizando actualmente por el que puedes descargar desde el siguiente enlace:
Contenido solo visible a usuarios registrados
Los pasos a seguir serían:
- Desactivar tu módulo de Redsys actual.
- Eliminar el módulo de Redsys actual.
- Instalar el nuevo módulo de Redsys.
- Configurar el nuevo módulo de Redsys.
- Hacer una prueba de compra para verificar que todo vaya bien.
Hola de nuevo y gracias.
He instalado el módulo que me has facilitado. Se han solucionado algunos problemas como era el del nº de pedido repetido en el caso de usar una tarjeta no válida. También se ha solucionado el problema del nº de pedido repetido al pulsar la tecla de retroceso en el navegador cuando está activado el proceso de pedido en un solo paso.
Sin embargo, no se ha solucionado el problema cuando se retrocede al estar activado el proceso de pedido de 5 pasos (que es el problema que planteé originalmente)
Yo, de momento, voy a dejar activado el proceso de 1 solo paso porque veo que funciona mejor, pero creo que habría que pulir el funcionamiento de 5 pasos. Sospecho que el problema ahora radica en la navegación (debería retrocederse 2 páginas en lugar de una, es decir a la anterior a los medios de pago).
Saludos.
Hola
Has probado el plugin que te adjuntó Pablo en otro sitio web? , ya que no hemos visto problemas similares en otros clientes con respecto a la navegación.
Saludos.
Buenos días.
Sólo lo he probado en mi web.
Por cierto, el módulo de pago de Iupay tiene los mismos problemas. ¿Disponéis de alguno corregido?
Saludos.
Hola,
Me comunica uno de nuestros técnicos, que tras revisar tu cuenta ha encontrado los siguientes permisos incorrectos que ya han sido corregidos:
Los permisos correctos de ficheros para que su web funcione correctamente son 644. Hemos encontrado los siguientes ficheros que no tenían permisos 644 y los hemos corregido.
/home/herbomer/public_html/config/settings.inc.php
/home/herbomer/public_html/cache/class_index.php
En principio, con el modulo que te dio Pablo debería de funcionar sin problemas.
En primer lugar deberemos asegurarnos de que actualmente no tenemos ningún módulo de Redsys, Servired o Sermepa instalado en PrestaShop. En caso contrario podría generar conflictos con el nuevo. Vamos en la administración de PrestaShop a Módulos->Módulos. Se mostrará un listado con los módulos que están instalados en PrestaShop. Verificamos si hay alguno de tipo Redsys, Servired o Sermepa. De ser así, habrá que desactivarlo y, después, eliminarlo.
En esta misma página de módulos se podrá instalar el nuevo módulo de Redsys para SHA256. Para ello pulsaremos en la parte superior de la página en "Añadir nuevo módulo" e instalaremos el módulo que se puede descargar desde el siguiente enlace:
https://www.webempresa.com/descargas/redsys256/redsys_prestashop_2.8.2_WE.zip
Saludos