我正在寻找一种方法,可以在网站上将任何金额从一种货币转换为另一种货币.用户输入类似"100"的内容并选择USD作为货币,然后选择澳元或加元作为转换的货币.当他点击"转换"按钮时,我想通过某些API自动转换该金额,并向他显示他选择转换为的货币金额.
有任何想法吗?
小智 8
此方法使用Yahoo货币API完整教程:PHP,Python,Javascript和jQuery中的货币转换器
function currencyConverter($currency_from, $currency_to, $currency_input) {
$yql_base_url = "http://query.yahooapis.com/v1/public/yql";
$yql_query = 'select * from yahoo.finance.xchange where pair in ("' . $currency_from . $currency_to . '")';
$yql_query_url = $yql_base_url . "?q=" . urlencode($yql_query);
$yql_query_url .= "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
$yql_session = curl_init($yql_query_url);
curl_setopt($yql_session, CURLOPT_RETURNTRANSFER, true);
$yqlexec = curl_exec($yql_session);
$yql_json = json_decode($yqlexec, true);
$currency_output = (float) $currency_input * $yql_json['query']['results']['rate']['Rate'];
return $currency_output;
}
$currency_input = 2;
//currency codes : http://en.wikipedia.org/wiki/ISO_4217
$currency_from = "USD";
$currency_to = "INR";
$currency = currencyConverter($currency_from, $currency_to, $currency_input);
echo $currency_input . ' ' . $currency_from . ' = ' . $currency . ' ' . $currency_to;
Run Code Online (Sandbox Code Playgroud)
小智 7
找了很多,找到了这个。
// Fetching JSON
$req_url = 'https://api.exchangerate-api.com/v4/latest/USD';
$response_json = file_get_contents($req_url);
// Continuing if we got a result
if(false !== $response_json) {
// Try/catch for json_decode operation
try {
// Decoding
$response_object = json_decode($response_json);
// YOUR APPLICATION CODE HERE, e.g.
$base_price = 12; // Your price in USD
$EUR_price = round(($base_price * $response_object->rates->EUR), 2);
}
catch(Exception $e) {
// Handle JSON parse error...
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常。片段来自:https : //www.exchangerate-api.com/docs/php-currency-api
将欧元兑换成美元的一个例子
$url = 'http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=EUR&ToCurrency=USD';
$xml = simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA);
if($xml === FALSE)
{
//deal with error
}
else {
$rate = $xml;
}
Run Code Online (Sandbox Code Playgroud)
小智 2
我喜欢第一个解决方案,但它似乎存在很大的问题。我试图将它实现到支付网关中,但我一直得到1的结果。这让我很困惑,我最终发现这是因为谷歌为数千个sparator使用了一个空间。因此,由于其余部分已被分解,因此 1 500.00 的金额作为 1 返还。我已经为它创建了一个快速而肮脏的修复程序。让我知道是否有其他人遇到过这个问题。这是我的解决方案:
function currency($from_Currency,$to_Currency,$amount) {
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$rawdata = curl_exec($ch);
curl_close($ch);
$data = explode('"', $rawdata);
$data = explode('.', $data['3']);
$data[0] = str_replace(" ", "",preg_replace('/\D/', '', $data[0]));
if(isset($data[1])){
$data[1] = str_replace(" ", "",preg_replace('/\D/', '', $data[1]));
$var = $data[0].".".$data[1];
} else{
$var = $data[0];
}
return round($var,2); }
Run Code Online (Sandbox Code Playgroud)