Hola @paula_pro y @ivan92,
@ivan92 ha dado en el clavo con el diagnóstico. En PrestaShop 8.1.4, el hook hookActionPresentPaymentOptions espera que el array payment_options dentro de $params sea modificado directamente por referencia, o bien que el resultado de un filtro se reasigne explícitamente a esa clave.
El método filterPaymentOptions de tu módulo, muy probablemente, está devolviendo el array filtrado en lugar de modificar el $params que se le pasa por referencia. O, si modifica por referencia, su lógica interna para eliminar opciones ya no es compatible con la estructura de objetos PaymentOption.
Para que funcione correctamente, asumiendo que filterPaymentOptions devuelve el array filtrado, deberías ajustar tu código así:
function hookActionPresentPaymentOptions(&$params)
{
if (!(int) Configuration::get('PAYMETHODRULES_ENABLED')) {
return;
}
// Asignamos explícitamente el resultado filtrado de vuelta a 'payment_options'
$params['payment_options'] = $this->getEngine()->filterPaymentOptions($params);
}
Con esta pequeña modificación, te aseguras de que el array de opciones de pago en $params se actualice con la lista filtrada que devuelve tu motor del módulo.