• Главная
  • Карта сайта
Не найдено

Курс валют і конвертатор НБУ PHP + XML

Наш, всіма улюблений, Національний Банк ніяк не спроможеться запустити власне API

Наш, всіма улюблений, Національний Банк ніяк не спроможеться запустити власне API. Доводиться обхідними шляхами отримувати актуальну інформацію. Я для цього вирішив використовувати кошти комерційного банку - ПриватБанк. У них на офіційному сайті функціонує сторінка з XML розміткою, на якій і представлені курси обміну найосновніших валют: UAH, RUR, EUR, USD і золото XAU. PHP скрипт може отримувати курс валют за котируваннями НБУ і за власними, внутрішнім курсам. Взаємодія без використання CURL запитів , А задіяна функція file_get_contents.

Від себе додав, функцію збереження XML файлу на локальному сервері, на випадок якщо посилання Привату зламається. Файл зберігатися рівно день, потім в нього завантажується нова, актуальна інформація про обмінні курси валют.

Ось сам PHP клас:

class ExchangeRate {// URL, файл у форматі XML public $ exchange_url = 'https://privat24.privatbank.ua/p24/accountorder?oper=prp&exchange&PUREXML&coursid=3'; // встановивши coursid = 5, розрахунок буде відносно ставок Привату private $ xml; private $ carrency = 'cache / currency.xml'; function __construct () {$ this-> getXML (); return $ this-> xml = simplexml_load_file ($ this-> carrency); } Private function getXML () {if (! File_exists ($ this-> carrency) or (time () - filemtime ($ this-> carrency)> 86400)) file_put_contents ($ this-> carrency, file_get_contents ($ this-> exchange_url)); } Private function getExchangeVal ($ val, $ do) {if ($ this-> xml! == FALSE) {// все добре, можна працювати далі - // в XML-даних немає помилки foreach ($ this-> xml as $ currency) {if ($ currency-> exchangerate [ 'ccy'] == $ val) {$ curs = floatval ($ currency-> exchangerate [$ do]); }}} Return $ curs; } Public function getExchange ($ val1, $ val2, $ summ = 0, $ round = 6) {$ valuta1 = $ this-> getExchangeVal ($ val1, 'buy'); $ Valuta2 = $ this-> getExchangeVal ($ val2, 'sale'); if ($ val1 == 'UAH') {if ($ summ> 0) $ valuta2 = $ summ / $ valuta2; return round ($ valuta2, $ round); } Elseif ($ val2 == 'UAH') {if ($ summ> 0) $ valuta1 = $ summ * $ valuta1; return round ($ valuta1, $ round); } Else {$ rate = $ valuta1 / $ valuta2; if ($ summ> 0) $ rate = $ rate * $ summ; return round ($ rate, $ round); }}}

Приклади використання:

$ Er = new ExchangeRate (); // инициализируем клас echo $ er-> getExchange ( 'USD', 'RUR', 100, 2); // міняємо Долар на Рублі; сума 100; округляємо до десятих (2 знака після коми). echo $ er-> getExchange ( 'RUR', 'UAH', 800, 3); // міняємо рублі на Гривні; сума 800 рублів; округляємо до тисячних (3 знаки після коми). echo $ er-> getExchange ( 'UAH', 'RUR', 100); // стандартне округлення в 6 знаків після нуля. echo $ er-> getExchange ( 'EUR', 'USD'); // курс 1 одиниці валюти.

Пам'ятайте, що курс розраховується щодо Гривні за ставками НБУ.

Ua/p24/accountorder?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью