En el módulo de Redsys puedes asignarle una URL para cuando una petición de pago finaliza de forma incorrecta. Yo lo tengo asignado para que devuelva a una página personalizada de error en el pago.
Para ello, en primer lugar he creado una página personalizada de error:
Luego, en el módulo de Redsys he realizado unos cambios en este archivo /modules/redsysoficial/redsysoficial.php. Concretamente he ido a la línea 403, y este bloque:
// URL de Respuesta Online if (empty ( $_SERVER ['HTTPS'] )) { $protocolo = 'http://'; $urltienda = $protocolo . $_SERVER ['HTTP_HOST'] . __PS_BASE_URI__ . 'modules/redsysoficial/validation.php'; } else { $protocolo = 'https://'; $urltienda = $protocolo . $_SERVER ['HTTP_HOST'] . __PS_BASE_URI__ . 'modules/redsysoficial/validation.php'; }
... lo he modificado así, añadiendo una variable $urlerror:
// URL de Respuesta Online if (empty ( $_SERVER ['HTTPS'] )) { $protocolo = 'http://'; $urltienda = $protocolo . $_SERVER ['HTTP_HOST'] . __PS_BASE_URI__ . 'modules/redsysoficial/validation.php'; } else { $protocolo = 'https://'; $urltienda = $protocolo . $_SERVER ['HTTP_HOST'] . __PS_BASE_URI__ . 'modules/redsysoficial/validation.php'; } /* Modificado : Añadida url error */ $urlerror = $protocolo . $_SERVER ['HTTP_HOST'] . __PS_BASE_URI__ . 'content/15-error-en-el-pago';
Evidentemente el "content/15-error-en-el-pago" se debe cambiar por la página a la que quieras redirigir cuando haya un error en el pago. Puede ser una página personalizada, o puedes devolver a la página de checkout (en ese caso sería "/pedido", o la URL amigable que tenga tu checkout).
Y luego en la línea 480, donde dice :
$miObj->setParameter ( "DS_MERCHANT_URLKO", $urltienda );
... cambiarlo por:
$miObj->setParameter ( "DS_MERCHANT_URLKO", $urlerror );
Eso es todo, con eso se debería solucionar tu problema.
.png.022b5452a8f28f552bc9430097a16da2.png)