estratos / sie-banxico
Banxico SIE REST API Client for Symfony Framework
Requires
- php: >=8.1
- symfony/config: ^6.4 || ^7.0 || ^8.0
- symfony/dependency-injection: ^6.4 || ^7.0 || ^8.0
- symfony/http-kernel: ^6.4 || ^7.0 || ^8.0
- xint0/banxico-php: ^2.0
Requires (Dev)
- php-http/guzzle7-adapter: ^1.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^10.5 || ^11.0
- symfony/yaml: ^6.4 || ^7.0 || ^8.0
Suggests
- php-http/discovery: Allows automatic discovery of the PSR-18 HTTP client used by xint0/banxico-php
- php-http/guzzle7-adapter: Guzzle 7 PSR-18 client used by default when the SIE client builds its own HTTP client
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-15 17:21:06 UTC
README
Cliente Symfony para la API REST del Sistema de Información Económica (SIE) del Banco de México (Banxico).
Requisitos
| Componente | Versiones soportadas |
|---|---|
| PHP | 8.1, 8.2, 8.3, 8.4 |
Symfony (config, dependency-injection, http-kernel) |
6.4, 7.x, 8.x |
| Cliente HTTP | Cualquiera conforme a PSR-18 (y una fábrica PSR-17) |
Symfony 7.4 requiere PHP >= 8.2 y Symfony 8.x requiere PHP >= 8.4; el paquete sólo declara php: >=8.1 y deja que Composer elija la combinación válida para tu plataforma.
El paquete no impone un cliente HTTP: declara php-http/guzzle7-adapter en require-dev para poder ejecutar sus pruebas y en suggest como recomendación. Si tu aplicación todavía no tiene un cliente PSR-18, instálalo:
composer require php-http/guzzle7-adapter
Instalación
composer require estratos/sie-banxico
Configuración
Registra el bundle en config/bundles.php:
<?php return [ // ... Estratos\SieBanxico\SieBanxico::class => ['all' => true], ];
Y define tu token:
# config/packages/estratos_sie_banxico.yaml estratos_sie_banxico: token: '%env(BANXICO_SIE_TOKEN)%'
El nodo raíz es estratos_sie_banxico, el alias convencional para la clase Estratos\SieBanxico\SieBanxico. El registro del bundle y la configuración por YAML son nuevos en esta versión: las versiones 0.1.x sólo permitían usar las clases como librería (ver "Uso directo"), porque su extensión no leía configuración alguna.
Con el token configurado, el bundle registra dos servicios:
| Servicio | Descripción |
|---|---|
sie_banxico.client |
Estratos\SieBanxico\SieBanxicoClient con el token inyectado. |
Estratos\SieBanxico\SieBanxicoClient |
Alias del anterior, para inyección por tipo. |
Si tu proyecto tiene más de un cliente PSR-18, indica cuál debe usarse:
estratos_sie_banxico: token: '%env(BANXICO_SIE_TOKEN)%' http_client: 'app.http_client'
Si no configuras token, el bundle no registra servicios y puedes seguir usando las clases como librería (ver más abajo).
Uso
Inyección de dependencias (recomendado)
<?php namespace App\Controller; use Estratos\SieBanxico\SieBanxicoClient; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class BanxicoController { public function __construct(private readonly SieBanxicoClient $sie) { } #[Route('/banxico/tipo', name: 'app_banxico_api_tipo')] public function getBanxicoRate(): Response { return $this->json([ 'liquidacion' => $this->sie->exchangeRateUsdLiquidation(), 'determinacion' => $this->sie->exchangeRateUsdDetermination(), 'euro' => $this->sie->exchangeRateEuroDetermination(), ]); } }
Uso directo (compatible con versiones anteriores)
El flujo de las versiones 0.1.x sigue funcionando sin cambios:
use Estratos\SieBanxico\SieBanxico; $service = new SieBanxico($token); $service->ClientInit(); $tipoDeCambio = $service->getExchangeRate();
ClientInit() es idempotente y opcional: si se omite, el cliente se crea la primera vez que se consulta un tipo de cambio.
Métodos disponibles
| Método | Serie Banxico | Descripción |
|---|---|---|
getExchangeRate() |
SF60653 |
Tipo de cambio USD (liquidación). |
getFixEchangeRate() |
SF43718 |
Tipo de cambio USD (determinación). Nombre con errata conservado por compatibilidad. |
getFixExchangeRate() |
SF43718 |
Alias con la errata corregida. |
getEuroExchangeRate() |
SF46410 |
Tipo de cambio EUR (determinación). |
En SieBanxicoClient están disponibles los métodos heredados de xint0/banxico-php:
| Método | Descripción |
|---|---|
exchangeRateUsdLiquidation(?string $startDate = null, ?string $endDate = null) |
Serie SF60653. |
exchangeRateUsdDetermination(?string $startDate = null, ?string $endDate = null) |
Serie SF43718. |
exchangeRateEuroDetermination(?string $startDate = null, ?string $endDate = null) |
Serie SF46410. |
fetchSeries(string $series, ?string $startDate = null, ?string $endDate = null) |
Cualquier serie del SIE. |
Sin fechas se consulta el dato más reciente (oportuno). Con fechas se consulta el rango indicado. El resultado es un string cuando hay un solo dato y un arreglo ['YYYY-MM-DD' => valor] cuando hay varios.
Desarrollo
composer install vendor/bin/phpunit -c tests/phpunit.xml vendor/bin/phpstan analyse -c tests/phpstan.neon
Probar contra varias versiones de Symfony
El directorio .compat/ (ignorado por git) contiene ambientes aislados con una versión concreta de Symfony. tests/bootstrap.php respeta la variable de entorno SIE_BANXICO_COMPAT_VENDOR para cargar las dependencias de esos ambientes:
mkdir -p .compat/6.4 && cp .compat/composer.json .compat/6.4/ (cd .compat/6.4 && composer require "symfony/config:6.4.*" "symfony/dependency-injection:6.4.*" "symfony/http-kernel:6.4.*" "symfony/yaml:6.4.*") SIE_BANXICO_COMPAT_VENDOR="$PWD/.compat/6.4/vendor" \ vendor/bin/phpunit --bootstrap tests/bootstrap.php tests
En Windows (PowerShell):
$env:SIE_BANXICO_COMPAT_VENDOR = "$PWD\.compat\6.4\vendor" php vendor/bin/phpunit --bootstrap tests/bootstrap.php tests
La matriz completa de PHP y Symfony se ejecuta en GitHub Actions (.github/workflows/symfony.yml), incluyendo Symfony 8.0 sobre PHP 8.4.
Compatibilidad hacia atrás
Se conserva la API pública de las versiones publicadas (0.1.0 y 0.1.1), que era la única que se podía usar realmente:
- Clases
Estratos\SieBanxico\SieBanxicoyEstratos\SieBanxico\SieBanxicoClientcon sus nombres y métodos. - Constructor
new SieBanxico($token)(el argumento ahora es opcional) yClientInit(). - Métodos
getExchangeRate(),getFixEchangeRate()(con la errata original) ygetEuroExchangeRate(). - Constante
SieBanxicoClient::SERIES_EURO_EXCHANGE_RATE_DETERMINATION.
Cambios que pueden requerir atención:
Configuration::ROOT_NAMEpasa deEstratos_how_toaestratos_sie_banxicoy se eliminaConfiguration::NODE_TESTjunto con el nodotest_node. Eran restos del andamiaje de la plantilla: la extensión teníaload()vacío, así que la configuración nunca se leyó. Si tenías un bloqueEstratos_how_to:en tu aplicación, puedes borrarlo (nunca tuvo efecto) y usar el nuevo si quieres registrar los servicios del bundle.- Las clases ahora declaran
declare(strict_types=1)y tipos de retorno (mixed) en los métodos de consulta. tests/App/AppKernel.phpse eliminó: su única prueba se cubre con pruebas de la extensión y del contenedor.
Licenciamiento
Este paquete implementa el paquete xint0/banxico-php, los derechos de autor de este software pertenecen a su autor Rogelio Jacinto. Copyright 2018-2021 Rogelio Jacinto. Todos los derechos reservados. https://github.com/Xint0/banxico-php
El autor de este paquete es software libre, algunos derechos reservados por Estratos Electronics SAS de CV. Este paquete se puede distribuir y/o modificarse bajo los términos de la Licencia MIT.