Курс валют

Блог Фрилансера 13 трав. 2019 р.
 Курс валют

Курс валют часто використовують в інтернет магазинах. І для моніторингу  Зміни курсу можна використовувати сайти банків. Великі банки надають відкритий API для отримання поточного курсу валют.

Візьмемо для прикладу НБУ — у них є Api тут

>

Як видно у них можна отримати дані у двох форматах XML та JSON

Для зручності будемо використовувати JSON

Для запиту до сервера можна використовувати file_get_content() або URL.
Нещодавно по роботі з курлом була стаття з прикладами на PHP.
Будемо юзати СURL

Простий приклад, як повернути вміст 

$ch = curl_init('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
print_r($html); 

Response

[
{
r030: 36,
txt: "Австралійський долар",
rate: 18.191247,
cc: "AUD",
exchangedate: "14.05.2019",
},
{
r030: 124,
txt: "Канадський долар",
rate: 19.424695,
cc: "CAD",
exchangedate: "14.05.2019",
},
.
.
.

{
r030: 941,
txt: "Сербський динар",
rate: 0.250404,
cc: "RSD",
exchangedate: "14.05.2019",
},
{
r030: 964,
txt: "Паладій",
rate: 34260.539,
cc: "XPD",
exchangedate: "14.05.2019",
},
]

Для того, щоб отримати курс певної валюти  можна написати невелику функцію.

$ch = curl_init('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);

// print_r(json_decode($html,true));

function getCurs($array,$val){
    foreach($array as $key => $value){
        if($value['cc'] == $val){
            return $value;
        }
        
    }
}
//Приклад використання
print_r(getCurs(json_decode($html,true),'MAD'));
//Array ( [r030] => 504 [txt] => Марокканський дирхам [rate] => 2.7394 [cc] => MAD [exchangedate] => 14.05.2019 ]

Примітка. Уважно читайте умови використання API. Часті запити до серверів банку не бажані, інакше вашу ip можуть заблокувати.
Правильно один раз зберегти собі дані в базу або файл та брати інфу потім звідти. І оновлювати ці дані 2-3 рази на день.