Currency Converter

Couple days ago, i was asked by a friend to make a small currency exchange script in PHP. With slow internet connection and so short amount of time, the best thing i could think of was grabbing the number from available currency rate site like this. With curl and PCRE function, i finished the script in no time. :p

That’s evil of course.

So, i create the following script as my apology. I use FoxRate currency converter API. Be careful though, you can not run the script too fast, wait for awhile before sending the next request. That’s what happen when you use a free web service. I guess.

Anyway, it’s 2 a.m in the morning here. Gotto go to bed. Night night.

function convertcurrency($from,$to,$amount)
{
  $xml = "
<?xml version='1.0'?>
<methodcall>
  <methodname>foxrate.currencyConvert</methodname>
  <params>
    <param>
      <value>
        <string>$from</string>
      </value>
    </param>
    <param>
      <value>
        <string>$to</string>
      </value>
    </param>
    <param>
      <value>
        <double>$amount</double>
      </value>
    </param>
  </params>
</methodcall>";

  $url = "http://www.foxrate.org";

  $header  = "POST /rpc/ HTTP/1.0 \\r\\n";
  $header .= "Host: foxrate.org \\r\\n";
  $header .= "MIME-Version: 1.0 \\r\\n";
  $header .= "Content-length: ".strlen($xml)." \\r\\n";
  $header .= "Content-transfer-encoding: text \\r\\n";
  $header .= "Document-type: Request \\r\\n";
  $header .= "Connection: close \\r\\n\\r\\n";
  $header .= $xml;

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  $xmlresponse = curl_exec($ch);
  curl_close($ch);

  $sxml = new SimpleXMLElement($xmlresponse);
  $xxml = $sxml->xpath("params/param/value/struct/member");

  foreach ( $xxml as $v )
  {
    if ( $v->name == "flerror" )
    {
      $errflag = $v->value->int;
    }

    if ( !$errflag )
    {
      return false;
      break;
    }

    if ( $v->name == "amount" )
    {
      return $v->value->double;
    }
  }
}

Sample usage:

$ret = convertcurrency("JPY","IDR",1);

if ( $ret )
{
  echo "1 JPY = $ret IDR";
}
else
{
  echo "Wrong currency code or you're too fast to fetch, wait for awhile.";
}

Join the Conversation

1 Comment

Leave a comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.