Convertir monedas con PHP y Google Finance

Google Finance es un servicio para temas relacionados a finanzas (Cotizaciones financieras, datos económicos de empresas y noticias financieras), entre las muchas herramientas que ofrece dispone de un conversor de monedas para la mayoría de monedas del mundo. Aprovecharemos este servicio para crear un conversor de monedas personalizado.

Obteniendo la Información

Lo primero es obtener los datos, para ello utilizaremos un URL que Google Finance utiliza para mostrar el tipo de cambio.

http://www.google.com/ig/calculator?hl=en&q=100USD%3D%3FPEN

Donde se tienen los siguiente parámetros:

  • 100 es el monto que deseamos convertir.
  • USD es la moneda que deseamos convertir (En este caso USD).
  • PEN es la moneda a la que deseamos convertir.

El cual devuelve como resultado los datos en formato JSON:

{lhs: "1 U.S. dollar",rhs: "2.8239972 Peruvian nuevos soles",error: "",icc: true}

Para una lista completa de los códigos de monedas disponibles pueden visitar Currency Codes.

Implementando Conversor de Monedas Básico

Como los datos son devueltos en formato JSON, utilizaremos la librería JSON.php de la cual hemos comentado en JSON con PHP. Entonces crearemos un script para mostrar la equivalencia entre el Dolares Americanos (USD) y Nuevos Soles (PEN).

Primero incluimos la librería JSON.php luego utilizamos la función file_get_contents para obtener los datos desde el URL donde hemos puesto los códigos de las monedas a convertir. Después decodificamos el contenido.

require_once("JSON.php");
$path = "http://www.google.com/ig/calculator?hl=en&q=1USD%3D%3FPEN";
$data = file_get_contents($path);

$json = new Services_JSON();
$obj = $json->decode($data);

Una vez obtenido los valores solo queda imprimir los resultados en nuestra página.

<h2>Currency Converter</h2>
<strong>From:</strong> <?php echo $obj->lhs; ?><br />
<strong>To:</strong> <?php echo $obj->rhs; ?>

Pueden ver el resultado de este ejemplo en http://samples.unijimpe.net/currency/.

Conversor de Monedas Personalizado

Ahora si deseamos que el usuario seleccione que moneda desea convertir, se puede agregar dos selectores: uno para seleccionar la moneda de origen al cual llamaremos from y otro para definir la moneda de destino llamado to. Luego solo nos queda procesar los datos del formulario y mostrar los resultados.

if ($_POST['from'] != "" && $_POST['to'] != "") {
	$from = $_POST['from'];
	$to = $_POST['to'];
	
	$path = "http://www.google.com/ig/calculator?hl=en&q=1".$from."=?".$to;
	$data = file_get_contents($path);
	
	$json = new Services_JSON();
	$obj = $json->decode($data);

	echo "1 ".$from." = ".$obj->rhs."";
 } 

A nuestro segundo ejemplo le agregamos una hoja de estilos y ordenamos nuestro formulario para obtener un buen resultado. Pueden ver el resultado del ejemplo en http://samples.unijimpe.net/currency/custom.php.

Como pueden ver basado en nuestro conocimiento de JSON con PHP podemos utilizar un servicio para integrarlo a nuestra de manera rápida. Les dejo los archivos fuente del ejemplo para que lo puedan estudiar y hacer sus pruebas.

[download id=»42″ autop=»false»]

Comentarios Total 11 comentarios

gianfranco
Publicado: 01/07/2010 2:54 am

Sos grande unijimpe, porfavor podrias darme un link para documentarme sobre la sintaxis de la URL de Google Finance (http://www.google.com/ig/calculator?hl=en&q=1USD%3D%3FPEN); es que por mas que lo busco no lo encuentro.
Te agradesco de antemano tu respuesta.

unijimpe
Publicado: 01/07/2010 10:29 am

Sobre la sintaxis de esta url, esta explicada al inicio del articulo.

http://www.google.com/ig/calculator?hl=en&q=1USD%3D%3FPEN

Tienes tres parámetros:

– Primero la cantidad que deseas convertir.
– Segundo el código de la moneda que deseas convertir.
– Tercero el código de la moneda a la que deseas hacer la conversión.

Los códigos de las monedas están listados en: http://samples.unijimpe.net/currency/codes.php

Respecto a los caracteres ‘%3D%3F’ es el equivalente de ‘=?’ que sirve para indicar que estamos pidiendo convertir de moneda. Esto no hace falta modificar, solo la cantidad y los códigos de las monedas.

gianfranco
Publicado: 02/07/2010 12:21 am

Gracias por tu respuesta unijimpe; mi pregunta iba por saber si existe un lugar oficial donde detallen este servicio. Pero bueno creo es producto de tu propia investigación y yo respeto eso; (yo investigaré por mi lado si encuentro algo lo posteo).

Tienes pocos post; pero dejame decirte que cada post tuyo realmente es un tiempo bien invertido. Gracias de nuevo y sigue asi.

FCR
Publicado: 02/07/2010 6:55 pm

Siempre me ha gustado esto de convertir monedas con google

Jamc
Publicado: 08/07/2010 6:40 pm

Muy bueno, fácil y practico Unijimpe ;) solo decir que tambien se lo puede hacer sin el uso de JSON.php ya que en versiones actuales de php ya viene incluido nativamente una extensión para trabajar con datos en formato JSON.

Walter
Publicado: 25/08/2010 5:05 pm

Hola

Al intentar utilizar este y cualquier otro servicio similar estoy obteniendo
Warning: file(http://www.google.com/ig/calculator?hl=es&q=1EUR%3D%3FARS): failed to open stream: php_network_getaddresses: getaddrinfo failed: Host desconocido. in C:\WebServer\Apache2.2\VirtualHosts\OtroSitios.com.ar\library\class.euro.php on line 48

Line 48 es:
$data = file_get_contents(«http://www.google.com/ig/calculator?hl=es&q=1EUR%3D%3FARS»);

Sin embargo desde el browser pegando la url obtengo los datos con el resultado sin inconvenientes.
¿A alguien le ha pasado algo similar?, ¿Tienen alguna idea de que puedo revisar para corregir este problema?

desde ya agradezco cualquier respuesta.
Mucahas gracias.

Claudio
Publicado: 23/11/2011 2:28 am

Tienen idea si se puede seguir utilizando? leí que a partir de no se cuando lo iban a cobrar. De no ser así ya lo estoy implementando pero me quería asegurar como para no crear un script que no voy a usar.

Por otro lado, muy bueno y muy bien explicado el tema, por lo que veo es costumbre en este blog ;)

Sol
Publicado: 06/12/2011 1:48 pm

LLevó un rato buscando algo similar a lo que has propuesto, lo cuál me emocionó mucho, pues pensé que por fin dejaría de buscar.
No soy una experta pero necesito adecuar lo que tu has propuesto a un campo de valor; es decir que se agrege en el ejemplo que muestras de CUSTOM una caja de valor en el cuál el usuario podría convertir a la moneda a elección. Podrías ayudarme u orientarme en eso.

Gracias estupendo Blog :D

Yeison Suarez
Publicado: 30/01/2013 1:57 pm

Me gustaria saber como puedo modificar el letrero final para que no me aparezca en mi caso «Colmbian pesos». Gracias muy buen trabajo

Yeison Suarez
Publicado: 30/01/2013 2:00 pm

Ha tambien me gustaria saber si es posible hacer que tenga separador de miles. Por ultimo podria usar el archivo json.php, para crear el mio es una microempresa. Gracias por la respuesta

joel
Publicado: 05/12/2014 1:26 am

Ya no funciona el API de google

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)