-
Notifications
You must be signed in to change notification settings - Fork 11
Description
Saludos chicos,
Sorprendentemente, RedSys no concluye el pedido si la notificación va por httpS en un servidor que use SNI (IP colectiva). Como consecuencia, el pago se produce, pero el pedido se queda Pendiente, y los mails transaccionales no salen.
Es decir, RedSys quieren que tengamos una IP dedicada.
Mientras RedSys se pone al día, y nos permite tener SSL con servidores que usen SNI, estamos obligados a usar algún tipo de redirección para que la web se mantenga por httpS, pero el callback se produzca por http, y pueda notificar a la tienda que el pago se ha completado (y lanzar los mails transaccionales).
Posible solución
Si no me equivoco, una solución es decirle al módulo que nos devuelva el callback por http (no-segura) en la casilla específica para eso en Métodos de Pago.
Pero luego deberíamos crear una redirección en .htaccess, para que el resto de la web use httpS (conexión segura).
Cómo sería la regla a poner en .htaccess para lograrlo?
Aquí hay un ejemplo, pero no sé qué convendría poner en lugar del "ALGO_ESPECÍFICO_DE_LA_URL_DE_CALLBACK":
RewriteEngine On
# Si la cadena de consulta no contiene "ALGO_ESPECÍFICO_DE_LA_URL_DE_CALLBACK"
RewriteCond %{QUERY_STRING} !ALGO_ESPECÍFICO_DE_LA_URL_DE_CALLBACK [NC]
# Y la conexión no es HTTPS
RewriteCond %{HTTPS} off
# Redirigimos a la versión con HTTPS
RewriteRule (.*) https://%{SERVER_NAME}/%$1 [R,L]
Muchas gracias por cualquier idea o sugerencia.
Saludos,
Edito:
Podría tratarse de "redsys/index/callback" (según la pantalla de configuración, dónde se menciona lo de {{secure_base_url}}redsys/index/callback) o de "payment/redsys/callback"?
Lo segundo lo encontré en un foro de OpenCart, y lo he buscado en el Módulo de Magento, dónde figura aquí, junto a otra URL parecida:
\app\code\community\Devopensource\Redsys\Helper\Data.php
Line 30: $url = Mage::getStoreConfig('payment/redsys/callback', Mage::app()->getStore());
Line 37: return Mage::getStoreConfig('payment/redsys/callbackurl', Mage::app()->getStore());