Подключение API курсов НАЦБАНКа

kuminov

Постоялец
Регистрация
20 Окт 2013
Сообщения
173
Реакции
36
Сайт (wordpress) предоставляет услуги физлицам.
На сайте необходимо сделать привязку ценника к курсу USD, который отдается нацбанком.Курс валют меняется нацбанком 1 раз в день.

То есть, чтобы я смог сделать так, чтобы в таблице были указаны цены в разных валютах, но с привязкой к USD. API нацбанка
Для просмотра ссылки Войди или Зарегистрируйся (инструкция)
Для просмотра ссылки Войди или Зарегистрируйся

Пример:
Цена в USD – 20, BYR (белорусские рубли) – 40, EUR,RUR – такие то (то что отдает нацбанком).
желательно прописать это через "ID" – чтобы можно было добавить ручками в обычную таблицу.
Важная валюта от которой должна меняться цена это USD.


<tr>
<td>USD</td>
<td>55</td>
</tr>
<tr>
<td>EUR</td>
<td><span id="EUR">столько то</td>
</tr>
<tr>
<td>BYR</td>
<td><span id="BYR">110</td>
</tr>
и т.д.

Важно. я не готов дать доступ к сайту, так как фрилансеры ложили его не раз. Проверяем вместе (за 2е суток, так как меняются курсы) далее оплачиваю.
 
простите, но я отписал почему. 2 раза не смог восстановить сайт, поэтому повторится не хочу. Спасибо за понимание.
 
PHP:
<?php
$count = $_GET["n"];
$tmp = simplexml_load_string(file_get_contents("http://www.nbrb.by/Services/XmlExRates.aspx"));
$USD = $tmp->Currency[4]->Rate;
$EUR = $tmp->Currency[5]->Rate;
$RUB = $tmp->Currency[16]->Rate;

$result_byr = round($count * "$USD", 2, PHP_ROUND_HALF_UP);
$result_eur = round($result_byr * "$EUR", 2, PHP_ROUND_HALF_UP);
$result_rub = round($result_byr * "$RUB", 2, PHP_ROUND_HALF_UP);
echo <<<HTML
<table>
<tr> 
<td>USD</td> 
<td>$count</td> 
</tr> 
<tr> 
<td>EUR</td> 
<td><span id="EUR">$result_eur</td> 
</tr> 
<tr> 
<td>BYR</td> 
<td><span id="BYR">$result_byr</td> 
</tr>
<tr> 
<td>RUB</td> 
<td><span id="RUB">$result_rub</td> 
</tr>
</table>
HTML;
?>

если дергать xml, почти без затыков отдает. дергать также file.php?n=сумма_в_уях
округляет до сотых, в большую сторону
 
Ранее было так:
Код:
function xmlReader($pathFile,$code){
    $xml = simplexml_load_file($pathFile);
            foreach ($xml->Currency as $item) {
            if ($item['Id'] == $code) {
                $result = $item->Rate;
                break;
                }
            }
    return $result;      
  
}
function inbel($atts) {
extract(shortcode_atts(array(
"val" => 0
), $atts));
$localFilePath=$_SERVER['DOCUMENT_ROOT'].'/'.'Currency.xml';
$currentDate= date('m/d/Y');
$url = "http://www.nbrb.by/Services/XmlExRates.aspx?ondate=$currentDate";
$code = 145;
if (file_exists($localFilePath)) {
            $xml = simplexml_load_file($localFilePath);
            if ($xml){
                $result=xmlReader($localFilePath,$code);
            }
            else {
                $result=xmlReader($url,$code);
            }  
}

return number_format($result*$val);


} function inrur($atts) {extract(shortcode_atts(array("val" => 0), $atts));$localFilePath=$_SERVER['DOCUMENT_ROOT'].'/'.'Currency.xml';$currentDate= date('m/d/Y');$url = "http://www.nbrb.by/Services/XmlExRates.aspx?ondate=$currentDate";$code = 190;if (file_exists($localFilePath)) {            $xml = simplexml_load_file($localFilePath);            if ($xml){                $result=xmlReader($localFilePath,$code);            }            else {                $result=xmlReader($url,$code);            }    }$currancyInBel= preg_replace("/\D/","",inbel($atts));return number_format($currancyInBel/$result);} function ineuro($atts) {extract(shortcode_atts(array("val" => 0), $atts));$localFilePath=$_SERVER['DOCUMENT_ROOT'].'/'.'Currency.xml';$currentDate= date('m/d/Y');$url = "http://www.nbrb.by/Services/XmlExRates.aspx?ondate=$currentDate";$code = 19;if (file_exists($localFilePath)) {            $xml = simplexml_load_file($localFilePath);            if ($xml){                $result=xmlReader($localFilePath,$code);            }            else {                $result=xmlReader($url,$code);            }    }$currancyInBel= preg_replace("/\D/","",inbel($atts));return number_format($currancyInBel/$result);}
add_shortcode('inbel', 'inbel');add_shortcode('inrur', 'inrur');add_shortcode('ineuro', 'ineuro');

Крон дергал и закачивал фаил с курсами в корень хостинга. Раз в 4 часа обращался к сайту НБРБ.
Шоткодом добавлял в таблицу:
Код:
<td>$50</td>
<td>[val ineuro="50"]</td> цена в EURO
<td>[val inbel="50"]</td> цена в белках
<td>[val inrur="50"]</td> цена в рос.рублях
</tr>
 
Назад
Сверху