Buenos días.
Hace algunos días activé el protocolo https para toda la tienda (antes sólo lo tenía activado para el pago).
Ayer modifiqué el archivo htaccess para añadir las líneas:
# Enviar trafico HTTP a HTTPS RewriteEngine On RewriteCond %{ENV:HTTPS} !on [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://herbomercado.es/$1 [R=301,L,NE]
Hoy he recibido un pago por TPV virtual de una compra de un cliente.
Sin embargo en Prestashop no ha quedado registrado el pedido, tan solo ha quedado el carrito como abandonado.
Viendo las respuestas desde el panel de Redsys se aprecia que la notificación HTTP de Redsys ha sido incorrecta : parece que ha recibido un 301 al notificarlo a "herbomercado.es/modules/redsys/validation.php".
Adjunto imagen de la notificación automática de Redsys.
Supongo que está relacionado con el código añadido al htaccess. ¿Debo tocar algo o debo solicitar que Redsys me responda a "herbomercado.es" (con https)
?¿Debo hacer algo más?
Saludos.
URL del sitio: Contenido solo visible a usuarios registrados
Hola Jose Luis.
Puedes probar a desinstalar el plugin e instalar el que te adjunto, el modulo lo modificamos para que pueda trabajar con la nueva normativa SHA256.
Antes de realizar el cambio del plugin a la nueva versión adaptada a la firma SHA256 tienes que disponer de la nueva clave de encriptación del comercio, ya que esta cambia con la migración a SHA256.
Para obtener la nueva clave de encriptación tienes que acceder a la administración del TPV o directamente en la entidad donde tienes contratado el TPV.
Puedes acceder a la administración del TPV en esta URL Contenido solo visible a usuarios registrados, una vez dentro, pulsar en "Admin TPV Virtual", A continuación pulsa en el enlace "Comercios" que hay en la parte izquierda. En la página que se carga pulsa en "VER CLAVE", Tendrás que volver a introducir el usuario y contraseña de acceso al TPV virtual.
Una vez hecho esto se mostrará una ventana emergente donde puedes ver la nueva clave de encriptación SHA256 que tendrás que copiar
Puedes ver más información sobre este proceso en la página de ayuda de Redsys https://canales.redsys.es/ayuda/migracionSHA256.html .
Una vez obtenidos los nuevos datos toca instalar el módulo:
En primer lugar tienes que asegurarte de que actualmente no tienes ningún módulo de Redsys, Servired o Sermepa instalado en PrestaShop. En caso contrario podría generar conflictos con el nuevo.
Accede a la administración de PrestaShop a Módulos->Módulos y comprueba 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 pulsa en la parte superior de la página en "Añadir nuevo módulo" e instala el módulo que te adjunto.
Configura el módulo con los nuevos datos y revisa si se soluciona.
Un saludo
Buenos días.
No creo que tenga que ver nada con la encriptacion SHA256, ya que desde que lo instalé creo que lo tengo adaptado (finales de 2015). Además, de ser así hubiese estado fallando desde el principio y no ha sido así.
El error se ha producido tras incluir el redireccionamiento 301 en el fichero .htaccess que recomendáis hacer cuando se pasa de http a https.
Así que el error creo que hay que buscarlo ahí.
Buenas tardes.
He estado echando un vistazo al código y veo lo siguiente:
En el módulo redsys.php que tengo instalado (que es el mismo que me habéis sugerido que instale) está comentada la línea "if (empty($_SERVER['HTTPS']))" en el siguiente trozo de código:
//URL de Respuesta Online
//if (empty($_SERVER['HTTPS']))
if (1==1)
{
$protocolo = 'http://';
$urltienda = $protocolo.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'modules/redsys/validation.php';
}
else
{
$protocolo = 'https://';
$urltienda = $protocolo.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'modules/redsys/validation.php';
}
Supongo que se comentó la línea para corregir algún problema que daba el módulo original de Redsys.
Mi teoría para explicar el problema que tengo es que con este código estoy indicando siempre en la URL de respuesta del TPV un protocolo http. Cuando el tpv me contesta lo hace con http, pero como ayer cambié el fichero htaccess para redireccionar las http a https, el tpv recibe un 301y Prestashop no sabe qué hacer con el mensaje recibido.
¿Es así?
¿Por qué está esa línea de código comentada para que no se ejecute?
¿Qué sucede si dejamos que se ejecute esa línea de código?
Saludos.
Hola José Luis,
En PrestaShop SSL lo habilitas "únicamente" en Preferencias, General, haciendo clic en Usted está utilizando el protocolo HTTP, pulse aquí para cambiar a HTTPS, luego proceda a activar SSL.
Una vez dentro de HTTPS, marca la opción Habilitar SSL y haz clic en Guardar.
Si no te carga bien https en todas las páginas no debes forzarlo por .htaccess.
Si utilizas la pasarela de pago Redsys y has activado la opción Enable SSL on all pages será necesario aplicar un cambio para que no se produzcan errores en el envío de las notificaciones desde la pasarela de pago a tu web, ya que será necesario enviar esta notificación con el protocolo http.
Para ello descarga el archivo que FrontController.zip que puedes encontrar en el siguiente enlace: https://www.webempresa.com/descargas/FrontController.zip
Descomprime el archivo archivo descargado. Verás que dentro tiene el archivo FrontController.php. Súbelo en la ruta /override/classes/controler de tu PrestaShop.
Para comprobar que este cambio ha funcionado realiza un pedido de prueba utilizando la pasarela de pago de Redsys, para verificar que el pedido se guarda y se actualiza correctamente después de realizar un pago correcto.
Saludos
Buenos días.
Gracias por tu respuesta.
Hace bastantes días que el SSL para todas las páginas lo había habilitado sólo desde Prestashop y creo que el https cargaba bien en todas las páginas. Aparentemente Redsys no me daba problemas
Pero el pasado viernes decidí forzarlo en el .htaccess debido a que había leído que era necesario por cuestiones de SEO. ¿Crees que no es necesario? Si no lo fuerzo por .htaccess ¿ya no es necesario usar el fichero FrontController.php que me facilitas?
Un saludo.
Hola Jose Luis.
. ¿Crees que no es necesario?
En prestashop no hace falta ya que se lo indicas desde la administración en el apartado Preferencias -> Habilitar SSL.
Eliminalo de tu archivo htaccess.
¿ya no es necesario usar el fichero FrontController.php que me facilitas?
Si, tienes que descargarte el archivo y añadirlo en la carpeta override/classes/controler
Una vez todos estos pasos comprueba que to funciona correctamente.
Un saludo
Buenos días.
De acuerdo, he seguido las indicaciones y he probado un compra completa que ha quedado correctamente registrada. Gracias.
Un saludo.
Hola Jose Luis.
Genial !!!!!! me alegra mucho que lo solucionaras :cheer:
Ya sabes cualquier consulta que tengas no dudes en ponerte en contacto con nosotros 😉
Cerramos el tema.
Un saludo