Hola @marinaauto y @manuel24,
Tenéis toda la razón. El problema es que el controlador simulate.php se encuentra en la carpeta front, lo que indica que está destinado a ser utilizado por el front office y, por lo tanto, por los clientes. Sin embargo, la lógica de autenticación está verificando $this->context->employee, que solo existe cuando un usuario ha iniciado sesión como empleado en el back office de PrestaShop.
Para que este controlador sea accesible para los clientes logueados en el front office, debes cambiar la condición de employee a customer. Así, verificará si hay un cliente activo.
Aquí te muestro cómo debería quedar el fragmento corregido:
function postProcess()
{
if (!$this->context->customer || !(int) $this->context->customer->id) {
$this->ajaxDie(json_encode(['success' => false, 'error' => 'Unauthorized']));
}
$idCart = (int) Tools::getValue('
Con este cambio, el controlador ahora verificará si un cliente está logueado y tiene un ID válido, permitiendo el acceso esperado para las simulaciones de pago.