Gracias por tu consulta, @alberto_92. El problema que describes es común al intentar integrar APIs externas de forma manual en el core de PrestaShop, especialmente en versiones modernas como la 9.1.0 con PHP 8.x.
@miriam_9651 tiene razón en que el uso de file_get_contents no es lo ideal. En PrestaShop 9 y Symfony 6, lo más adecuado es usar el HttpClient de Symfony, que ofrece un manejo de errores y rendimiento mucho mejores.
Tu enfoque de sobrescribir Currency::refreshCurrencies() es arriesgado. Este método es crítico para la consistencia de las divisas y su lógica interna es compleja. Una sobrecarga directa puede generar conflictos con futuras actualizaciones o con la gestión de la divisa base.
Para el fetching de datos, una solución más robusta en un módulo personalizado sería así:
// Parte de un servicio o método en un módulo custom
use Symfony\Component\HttpClient\HttpClient;
$client = HttpClient::create();
$response = $client->request('GET', 'https://www.nbrb.by/api/exrates/rates?periodicity=0');
if (200 === $response->getStatusCode()) {
$rates = $response->toArray();
// Lógica para actualizar las divisas de PrestaShop
}
Sin embargo, aplicar estas tasas correctamente y de forma que PrestaShop las reconozca sin problemas, especialmente con la divisa base, requiere una integración más profunda. Para evitar sobreescrituras del core y garantizar la compatibilidad con futuras versiones de PrestaShop, te recomendaría utilizar una herramienta de nbrb tasas de cambio específica. Estos módulos están diseñados para gestionar la complejidad de las actualizaciones de divisas de forma segura y automática, sin riesgo de romper tu tienda.