Cliente soap en PHP para convertidor de divisas o “currency converter”

Hoy recibí una llamada para que buscara en Internet el cambio del dólar americano a peso dominicano. Entre a la pagina web del Banco Central de la República Dominicana a ver la información que me solicitaron. Para mi sorpresa el banco Central muestra la tasa de cambio o conversión en un archivo pdf el cual contiene el histórico de año completo hasta la fecha.

Pienso que es una perdida de tiempo tener que descargar un documento solo para saber cual es la tasa de cambio del día. La otra opción es ir la sitio web de cada banco comercial para ver como tienen ellos la tasa del día y para mi sorpresa todos muestras valores distintos entre sí y ninguno igual al Banco Central.

No obstante esto, ningún banco comercial tiene una forma de servir esta información de forma comparativa. Bueno pero ese no es el caso.

Para facilitarme la vida a partir de hoy, cada vez que me pidan la tasa de cambio o valor de conversión de dolar a peso o cualquier otra moneda, hice un soap client para convertir divisas en PHP utilizando la función que trae la versión PHP 5 >= 5.0.5 de PHP y quiero compartirla con ustedes.

Les anticipo que el web service tomado como fuente no es gratuito y puede que no funcione de vez en cuando sin embargo es para tener una idea de cómo crear un client para este servicio utilizando PHP.

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

//Utilizamos esta herramienta para convertir el objeto respuesta a un array de string para manejarlo de manera mas sencilla
function objectToArray( $object )
/**
*
* Convert an object to an array
*
* @param object $object The object to convert
* @reeturn array
*
*/
{
if( !is_object( $object ) && !is_array( $object ) )
{
return $object;
}
if( is_object( $object ) )
{
$object = get_object_vars( $object );
}
return array_map( 'objectToArray', $object );
}

ini_set("soap.wsdl_cache_enabled", 0);

$options = array(
'soap_version'=>SOAP_1_2,
'exceptions'=>1,
'trace'=>1,
'cache_wsdl'=>WSDL_CACHE_NONE
);

$soapClient = new SoapClient("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL", $options);

$ap_param = array('FromCurrency' => 'USD', 'ToCurrency' => 'DOP');

// Call RemoteFunction ()
$error = 0;
try {
$info = $soapClient->__soapCall("ConversionRate", array($ap_param));

} catch (SoapFault $fault) {
$error = 1;
print("
alert('Sorry, blah returned the following ERROR: ".$fault->faultcode."-".$fault->faultstring.".');
");
}

$array = objectToArray( $info->ConversionRateResult);
print_r( $array );
//para debug
/*print('<pre>');
print_r($info);
var_dump($info);
print('</pre>');
*/
?>

2 Replies to “Cliente soap en PHP para convertidor de divisas o “currency converter”

  1. weblantropia.com has been tested on mayor browsers to look for this kind of
    issues with excelent results. Please verify your Opera Browser version and
    charset format.

Comments are closed.