Adobe Acrobat - actualizacion automatica

 
Vista:

actualizacion automatica

Publicado por aaron (1 intervención) el 16/01/2009 20:44:58
hola!!!!!

mi pregunta es que si alguien sabe de algun codigo para una web que me muestre el precio del dolar con respecto a peso mexicano pero que se actualize automaticamente jalando la informacion de algun banco.

creen que se pueda hacer en php o html?

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Código para mostrar el precio del dólar (USD/MXN) actualizado desde un banco

Publicado por Alejandro (434 intervenciones) el 01/10/2025 19:54:31
Soluciones propuestas (dos vías): 1) Frontend simple (HTML + JS) usando una API pública sin key; 2) Backend en PHP consultando Banco de México (Banxico) — central bank — con caching (recomendado para producción).

1) Opción rápida (HTML + JavaScript — sin PHP)
- Usa exchangerate.host (gratuito, sin API key y con CORS). Ideal si quieres solo front-end y actualización automática.

Archivo completo (index.html):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!doctype html>
<html lang="es">
<head>
  <meta charset="utf-8">
  <title>Precio USD → MXN</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <style>
    body { font-family: Arial, sans-serif; padding: 20px; }
    .rate { font-size: 1.6rem; margin-top: 10px; }
    .time { color: #666; font-size: 0.9rem; margin-top: 6px; }
    .error { color: red; margin-top: 8px; }
  </style>
</head>
<body>
  <h1>Precio del dólar (USD → MXN)</h1>
  <div id="rate" class="rate">Cargando...</div>
  <div id="time" class="time"></div>
  <div id="error" class="error"></div>
 
  <script>
    const rateEl = document.getElementById('rate');
    const timeEl = document.getElementById('time');
    const errorEl = document.getElementById('error');
 
    async function fetchRate() {
      errorEl.textContent = '';
      try {
        // Endpoint público: exchangerate.host
        const resp = await fetch('https://api.exchangerate.host/latest?base=USD&symbols=MXN');
        if (!resp.ok) throw new Error('Respuesta no OK: ' + resp.status);
        const data = await resp.json();
        if (!data || !data.rates || !data.rates.MXN) throw new Error('Formato inesperado de respuesta');
        const rate = data.rates.MXN;
        rateEl.textContent = '1 USD = ' + Number(rate).toLocaleString('es-MX', { minimumFractionDigits: 4, maximumFractionDigits: 6 }) + ' MXN';
        const now = new Date();
        timeEl.textContent = 'Última actualización: ' + now.toLocaleString();
      } catch (err) {
        errorEl.textContent = 'Error al obtener el tipo de cambio: ' + err.message;
        rateEl.textContent = '—';
      }
    }
 
    // Actualiza al cargar y cada 60 segundos (ajusta según necesidad)
    fetchRate();
    setInterval(fetchRate, 60_000);
  </script>
</body>
</html>

Notas:
- exchangerate.host es práctico y no requiere clave. Para producción valida disponibilidad y límites.
- Frecuencia recomendada: 60 s o más. Si necesitas actualizaciones más frecuentes, usa caching y considera límites del proveedor.

2) Opción robusta (PHP) — usando Banco de México (Banxico) como fuente oficial
- Ventajas: proviene de la autoridad monetaria local.
- Requisitos: registrarte en el portal de Banxico para obtener token (API Key). Documentación y solicitud de token en https://www.banxico.org.mx/ (buscar “Servicio de información” / API SIE).
- Nota: Banxico entrega series; la serie común para tipo de cambio FIX USD → MXN es SF43718 (verifica en Banxico al registrarte). En el ejemplo abajo usamos SF43718; confirma si necesitas otra serie.

Ejemplo PHP: endpoint que consulta Banxico y guarda en cache (archivo) para no pedir en cada visita

Archivo: get_usdmxn.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
// get_usdmxn.php
// Coloca aquí tu token obtenido en Banxico
define('BANXICO_TOKEN', 'TU_TOKEN_AQUI');
// Serie para tipo de cambio (verificar en Banxico): ejemplo SF43718 (Tipo de cambio FIX)
define('SERIE_ID', 'SF43718');
// Cache file y tiempo en segundos
define('CACHE_FILE', __DIR__ . '/cache_usdmxn.json');
define('CACHE_TTL', 300); // 5 minutos
 
header('Content-Type: application/json; charset=utf-8');
 
// Leer cache si existe y no expiró
if (file_exists(CACHE_FILE)) {
    $cache = json_decode(file_get_contents(CACHE_FILE), true);
    if ($cache && isset($cache['timestamp']) && (time() - $cache['timestamp'] < CACHE_TTL)) {
        echo json_encode($cache['data']);
        exit;
    }
}
 
// Construir URL de Banxico (oportuno = datos más recientes)
$url = "https://www.banxico.org.mx/SieAPIRest/service/v1/series/" . urlencode(SERIE_ID) . "/datos/oportuno";
 
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Bmx-Token: ' . BANXICO_TOKEN,
    'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
 
$response = curl_exec($ch);
$err = curl_error($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
 
if ($response === false || $code >= 400) {
    http_response_code(500);
    echo json_encode(['error' => 'Error al consultar Banxico', 'details' => $err ?: "HTTP $code"]);
    exit;
}
 
// Parsear respuesta
$parsed = json_decode($response, true);
if (!$parsed || !isset($parsed['bmx']['series'][0]['datos'][0]['dato'])) {
    http_response_code(500);
    echo json_encode(['error' => 'Formato inesperado de respuesta de Banxico', 'raw' => $parsed]);
    exit;
}
 
$dato = $parsed['bmx']['series'][0]['datos'][0]['dato']; // valor en string
$fecha = $parsed['bmx']['series'][0]['datos'][0]['fecha'] ?? null;
 
$result = [
    'rate' => $dato,
    'date' => $fecha,
    'source' => 'Banxico',
    'fetched_at' => date('c')
];
 
// Guardar en cache
file_put_contents(CACHE_FILE, json_encode(['timestamp' => time(), 'data' => $result]));
 
echo json_encode($result);

Cómo usarlo desde una página HTML (AJAX):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html>
<html lang="es">
<head><meta charset="utf-8"><title>USD → MXN desde Banxico</title></head>
<body>
  <h1>USD → MXN</h1>
  <div id="rate">Cargando...</div>
  <script>
    async function update() {
      try {
        const r = await fetch('/ruta/a/get_usdmxn.php'); // ajusta ruta
        const j = await r.json();
        if (j.error) throw new Error(j.error || 'Error desconocido');
        document.getElementById('rate').textContent = '1 USD = ' + Number(j.rate).toLocaleString('es-MX', { minimumFractionDigits: 4 }) + ' MXN (fecha: ' + (j.date || j.fetched_at) + ')';
      } catch (e) {
        document.getElementById('rate').textContent = 'Error: ' + e.message;
      }
    }
    update();
    setInterval(update, 60_000);
  </script>
</body>
</html>

Consejos y buenas prácticas
- No hagas llamadas muy frecuentes directo a la API pública: usa caching en servidor (archivo, Redis, Memcached) o persiste en base de datos. TTL sugerido: 1–15 minutos según necesidades.
- Si necesitas datos intradiarios de alta frecuencia, consulta condiciones de uso del proveedor y límites de la API.
- Si quieres el “tipo de cambio FIX” (oficial de Banxico) usa Banxico; si aceptas una fuente global, exchangerate.host, Fixer, OpenExchangeRates son alternativas (algunas de pago).
- CORS: Banxico puede no permitir peticiones directas desde navegador; por eso en producción usa un proxy en servidor (como get_usdmxn.php). exchangerate.host permite CORS y puede usarse directamente en front-end.
- Formato: controla decimales, redondeo y formato local con Intl o number_format (PHP).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar