PHP скрипт для получения курсов валют с Приват Банк API

Приветствую!
Сегодня поговорим об очень актуальном скрипте, который позволяет рассчитывать цену в гривне исходя из текущего курса Приват Банка. Учитывая ситуацию в Украине, это сейчас важный момент, что-бы не менять руками цену через день.

php конвертер валютПримеры, где можно задействовать такой скрипт:
— к примеру вы владелец интернет сервиса, который предлагает пользователю определенные услуги. Например массовая рассылка электронных писем — очень востребованная услуга на сегодняшний день среди блоггеров, инфобизнесменов и компаний, у которых налажена работа отдела интернет маркетинга. Услуга email-рассылок используется пользователями из разных стран, и посетителю гораздо удобнее видеть цену в валюте его страны.

Для этого вы указываете стоимость тарифных планов в долларах, и виде подсказки указываете цену в гривне или рублях.

Алгоритм работы:
1. Получаем XML файл с курсом основных валют (USD, EUR, RUB) в виде с помощью библиотеки Curl c ПриватБанк API https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=5.

<exchangerates>
<row>
<exchangerate ccy="RUR" base_ccy="UAH" buy="0.30500" sale="0.34000"/>
</row>
<row>
<exchangerate ccy="EUR" base_ccy="UAH" buy="15.00000" sale="15.90000"/>
</row>
<row>
<exchangerate ccy="USD" base_ccy="UAH" buy="11.10000" sale="11.50000"/>
</row>
</exchangerates>

2. С помощью библиотеки SimpleXMLElement превращаем этот код в обьект.
3. Конвертируем доллары в гривну по курсу продажи

Сам скрипт

Код получения курса:

<?php
function _is_curl_installed() {
	if  (in_array  ('curl', get_loaded_extensions())) {
    	return true;
	}
	else {
    	return false;
	}
}
function getKurs() {
	global $dna; $dna = true;
	if ( _is_curl_installed() ){
    	$url = "https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=5";
      	$curl = curl_init($url);
    	if ( $curl ){
        	// Скачанные данные не выводить поток
        	curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        	// Скачиваем
        	$page = curl_exec($curl);	//В переменную $page помещается страница

        	curl_close($curl);
           	unset($curl);

           	$xml = new SimpleXMLElement($page);
           	return $xml->row[2]->exchangerate['sale'][0];
    	}
	}
}
?>

Вывод суммы в гривне

$summa = '35$';
$kursUAH = (float)getKurs();
if ($kursUAH > 0){
        // если курс пришёл
       echo $summa . ' = <span title="по курсу Приватбанка">' . (int)$summa * $kursUAH . '</span> грн. **';
      } else {
        echo $summa;
      }
  • Виктор

    А как вывести всю валюту, просто вывести, что-то не получается у меня…

    • ****
      $page = curl_exec($curl);
       
      curl_close($curl);
      unset($curl);
      
      $xml = new SimpleXMLElement($page);
      echo $xml->row[1]->exchangerate['sale'][0];
      echo $xml->row[2]->exchangerate['sale'][0];
      ****
      

      И не забывайте посмотреть через var_dump($xml), что пришло в ответе.

  • Антон

    Здравствуйте Максим. А можете по подробнее (для не профи) рассказать как это дело «воткнуть» в стр. WordPress? (HTML кодом, shortcod-ом)
    Спасибо.

  • Приветствую!
    Теперь инфу о курсах валют можно свободно без ограничений забирать с официального сервера НБУ, т.к. недавно был запущен API
    http://www.roomian.org/ukraine-news/na-saite-nbu-poyavilsya-api-dlya-kursov-valyut-2016

  • Сергей

    При выполнении пишет:
    Fatal error: Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in Z:\home\Pr1.loc\www\index.php:24 Stack trace: #0 Z:\home\Pr1.loc\www\index.php(24): SimpleXMLElement->__construct(») #1 Z:\home\Pr1.loc\www\index.php(31): getKurs() #2 {main} thrown in Z:\home\Pr1.loc\www\index.php on line 24