Hola @daniela8923 y a todos,
El problema que describes es una situación clásica en PrestaShop 1.7.x, especialmente en módulos que usan un ModuleFrontController para gestionar llamadas AJAX. El ajax.php de Paydisorfee es precisamente eso.
La raíz del inconveniente es que Tools::getToken(false) obtiene el token de seguridad para el controlador actual (en este caso, paydisorfeeajax). Sin embargo, es muy común que el JavaScript del tema (o de otro módulo) en la página de checkout envíe el token de la página principal de checkout (por ejemplo, el token del OrderController), y no el token específico del paydisorfeeajax controller.
Cuando los tokens no coinciden, PrestaShop lo detecta como una posible manipulación o una petición no autorizada, y devuelve el invalid_token. Para solucionarlo, debemos asegurarnos de que la validación en postProcess utilice el token correcto para su propio controlador y que el token recibido no esté vacío. Aquí tienes el fragmento de código modificado para paydisorfee/controllers/front/ajax.php:
function postProcess()
{
header('Content-Type: application/json; charset=utf-8');
try {
// Obtener el token esperado del contexto actual del controlador
$expected_token = Context::getContext()->token;
$received_token = Tools::getValue('token');
if (empty($received_token) || $expected_token !== $received_token) {
$this->respondJson(['success' => false, 'error' => 'invalid_token']);
}
Explicación de los cambios:
$expected_token = Context::getContext()->token;: En lugar de Tools::getToken(false), accedemos directamente al token del controlador a través del contexto. Esto asegura que estamos comparando el token enviado con el token que este controlador específico espera, basándose en la sesión actual.
if (empty($received_token) || $expected_token !== $received_token): Hemos añadido una comprobación explícita empty($received_token) para asegurarnos de que el token no solo sea incorrecto, sino que ni siquiera se haya enviado, lo cual es una causa común de errores invalid_token en AJAX.
Con este cambio, el módulo debería validar el token de forma más robusta y específica para su propio contexto, solucionando los problemas de inconsistencia. Pruébalo y me dices qué tal.