La Función de este Blog

Todos tenemos una razón de existir, y la razón de este blog no es la de duplicar información de otras webs, sino la de servirte de guía hacia ella.

Aquí podrás encontrar todas las utilidades y funciones que vaya necesitando y encontrando para mis proyectos webs.

Espero que os sea de ayuda.

Saludos

martes, 26 de marzo de 2013

Cambio de divisas

Buenas,

aquí estamos de nuevo, hoy os escribo porque recientemente he necesitado crear una calculadora de divisas los valores de estos en tiempo real. Para ello me he ayudado de las API de Google y Yahoo, reduncia por si una falla.

Las instrucciones que use son las que encontre en estos 2 enlaces:
Para resumiros lo que hice fue llamar a la función de Google, si esta me daba un error, llamaba a la de Yahoo, si ambas me daban error la conversión será de 0 que ya lo controlaré más adelante.


function conversor_divisas_google($divisa_origen, $divisa_destino, $cantidad) {
 $cantidad = urlencode($cantidad);
 $divisa_origen = urlencode($divisa_origen);
 $divisa_destino = urlencode($divisa_destino);
 $url = "http://www.google.com/ig/calculator?hl=en&q=$cantidad$divisa_origen=?$divisa_destino";
 $rawdata = file_get_contents($url);
 $data = explode('"', $rawdata);
 $error = $data['5'];
 $data = explode(' ', $data['3']);
 $var = $data['0'];

 $return = array('valor' => $var, 'error' => $error);
 return $return;
}

function conversor_divisas_yahoo($divisa_origen, $divisa_destino, $cantidad) {
 $url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=' . $divisa_origen . $divisa_destino . '=X';
 $handle = @fopen($url, 'r');
 if ($handle) {
  $result = fgets($handle, 4096);
  fclose($handle);
 }
 $array = explode(',', $result);
 $error = "";
 $valor = $array[1] * $cantidad;
 if ($valor == 0)
  $error = "Fallo yahoo";

 $return = array('valor' => $valor, 'error' => $error);
 return $return;
}

function conversor_divisas($divisa_origen, $divisa_destino, $cantidad) {
 $google = conversor_divisas_google($divisa_origen, $divisa_destino, $cantidad);
 if (!empty($google["error"])) {
  $yahoo = conversor_divisas_yahoo($divisa_origen, $divisa_destino, $cantidad);
  if (!empty($google["error"])) {
   $valor = 0;
  } else {
   $valor = $yahoo["valor"];
  }
 } else {
  $valor = $google["valor"];
 }
 return round($valor, 3);
}

echo "\n" . conversor_divisas("USD", "EUR", 1) . "\n";


El orden de las llamadas se decidío después de ver los tiempos de respuestas de cada API

Espero que os sea de ayuda

Nos leemos