Saltar al contenido

Magento 2.3 — Clave de formulario no válida. Por favor actualice la página

Ten en cuenta que en las ciencias un error suele tener varias soluciones, pero aquí te enseñaremos lo más óptimo y mejor.

Solución:

Finalmente obtuve la solución

Tengo un método de pago personalizado que usa el formulario CC para aceptar pagos con tarjeta de crédito con y sin 3dsecure. Después de realizar el pedido con 3dsecure, estoy redirigiendo a la página de 3dsecure como de costumbre, pero al regresar de 3dsecure, se me redirige a la página de inicio con “Clave de formulario no válida. Actualice la página porque en los métodos de pago principales de Magento 2.3 están usando CsrfAwareActionInterface para cada controlador”.

Así que ahora he implementado lo mismo en mi método de pago personalizado como se muestra a continuación

use MagentoFrameworkAppCsrfAwareActionInterface;
use MagentoFrameworkAppRequestInvalidRequestException;
use MagentoFrameworkAppRequestInterface;

class CustomPaymentResponse extends MagentoFrameworkAppActionAction implements CsrfAwareActionInterface

/** 
 * @inheritDoc
 */
public function createCsrfValidationException(
    RequestInterface $request 
): ?InvalidRequestException 
    return null;


/**
 * @inheritDoc
 */
public function validateForCsrf(RequestInterface $request): ?bool

    return true;

Nota : puede obtener una referencia del módulo principal. Aquí está la ruta del archivo principal proveedormagentomodule-authorizenetControllerDirectpostPaymentBackendResponse.php.

    use MagentoFrameworkAppCsrfAwareActionInterface;
    use MagentoFrameworkAppRequestInvalidRequestException;
    use MagentoFrameworkAppRequestInterface;

    class CustomPaymentResponse extends MagentoFrameworkAppActionAction implements CsrfAwareActionInterface

    /** 
     * @inheritDoc
     */
    public function createCsrfValidationException(
        RequestInterface $request 
    ): ?InvalidRequestException 
        return null;
    

    /**
     * @inheritDoc
     */
    public function validateForCsrf(RequestInterface $request): ?bool
    
        return true;
    
   /**
     * Dispatch request
     *
     * @return MagentoFrameworkControllerResultInterface|ResponseInterface
     * @throws MagentoFrameworkExceptionNotFoundException
     */
   public function execute()
    
    //your response check
    

Su controlador de respuesta debería ser así, luego solo formulario key el problema se arreglará.

Referencia: https://github.com/magento/magento2/issues/19712

Si te ha resultado útil este artículo, sería de mucha ayuda si lo compartieras con más programadores y nos ayudes a difundir esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *