Изменение курсов валют через cron для Украины с сайта ПриватБанк
xelaxela13
6 апреля 2015 г.
В файле /cron/update_currency.php
<?php
/**
* Обновление валют на текущий день по курсу ПриватБанк и НБУ для Украины.
* Внимание! Текущей валютой должен быть установлена гривна с коэффициентом пересчета 1.
* Так как валют не много с циклами и массивами не заворачивался! просто віполнил действие 4 раза ))
*/
require_once(dirname(__FILE__) . '/../' . 'bootstrap.php');
setlocale(LC_NUMERIC, 'POSIX');
$url = 'https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=5'; //приватбанк наличный
$xml = simplexml_load_file($url);
$rur_s = (string)$xml->row[0]->exchangerate->attributes()->sale; //рубль продажа
$eur_s = (string)$xml->row[1]->exchangerate->attributes()->sale; //евро
$usd_s = (string)$xml->row[2]->exchangerate->attributes()->sale; //доллар
$rur = (string)$xml->row[0]->exchangerate->attributes()->ccy; //код валюты RUR
$eur = (string)$xml->row[1]->exchangerate->attributes()->ccy;
$usd = (string)$xml->row[2]->exchangerate->attributes()->ccy;
$url = 'https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=3'; //НБУ
$xml_nbu = simplexml_load_file($url);
$rur_s_nbu = (string)$xml_nbu->row[0]->exchangerate->attributes()->sale; //рубль продажа
$eur_s_nbu = (string)$xml_nbu->row[1]->exchangerate->attributes()->sale;
$usd_s_nbu = (string)$xml_nbu->row[2]->exchangerate->attributes()->sale;
/* второй раз код валюты не нужет, т.к. не может быть 2 валюты с одинаковым кодом, в админке создаем валюту и присваеваем код
например: USD - UNB доллар нацбанк
EUR - ENB евро нацбанк
$rur_nbu = (string)$xml_nbu->row[0]->exchangerate->attributes()->ccy; //код валюты RUR
$eur_nbu = (string)$xml_nbu->row[1]->exchangerate->attributes()->ccy;
$usd_nbu = (string)$xml_nbu->row[2]->exchangerate->attributes()->ccy;*/
if (is_object($xml) && is_object($xml_nbu))
{ // приватбанк наличный
$CharCode = strval($usd);
$oCurrency = Core_Entity::factory('Shop_Currency')->getByCode($CharCode);
if (!is_null($oCurrency))
{
$iNominal = intval(1); //коэффициент пересчета = 1, хотя это не обязательный параметр
$Value = floatval(str_replace(',', '.', strval($usd_s)) / $iNominal);
$oCurrency->exchange_rate = $Value;
$oCurrency->save();
echo "Updated currency {$CharCode} = {$Value}; \n";
}
$CharCode = strval($eur);
$oCurrency = Core_Entity::factory('Shop_Currency')->getByCode($CharCode);
if (!is_null($oCurrency))
{
$iNominal = intval(1);
$Value = floatval(str_replace(',', '.', strval($eur_s)) / $iNominal);
$oCurrency->exchange_rate = $Value;
$oCurrency->save();
echo "{$CharCode} = {$Value}; \n";
}
// НБУ
$CharCode = strval('UNB');
$oCurrency = Core_Entity::factory('Shop_Currency')->getByCode($CharCode);
if (!is_null($oCurrency))
{
$iNominal = intval(1);
$Value = floatval(str_replace(',', '.', strval($usd_s_nbu)) / $iNominal);
$oCurrency->exchange_rate = $Value;
$oCurrency->save();
echo "{$CharCode} = {$Value}; \n";
}
$CharCode = strval('ENB');
$oCurrency = Core_Entity::factory('Shop_Currency')->getByCode($CharCode);
if (!is_null($oCurrency))
{
$iNominal = intval(1);
$Value = floatval(str_replace(',', '.', strval($eur_s_nbu)) / $iNominal);
$oCurrency->exchange_rate = $Value;
$oCurrency->save();
echo "{$CharCode} = {$Value}; \n";
}
}
else {echo "Что то пошло не так!";}
/**
* Обновление валют на текущий день по курсу ПриватБанк и НБУ для Украины.
* Внимание! Текущей валютой должен быть установлена гривна с коэффициентом пересчета 1.
* Так как валют не много с циклами и массивами не заворачивался! просто віполнил действие 4 раза ))
*/
require_once(dirname(__FILE__) . '/../' . 'bootstrap.php');
setlocale(LC_NUMERIC, 'POSIX');
$url = 'https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=5'; //приватбанк наличный
$xml = simplexml_load_file($url);
$rur_s = (string)$xml->row[0]->exchangerate->attributes()->sale; //рубль продажа
$eur_s = (string)$xml->row[1]->exchangerate->attributes()->sale; //евро
$usd_s = (string)$xml->row[2]->exchangerate->attributes()->sale; //доллар
$rur = (string)$xml->row[0]->exchangerate->attributes()->ccy; //код валюты RUR
$eur = (string)$xml->row[1]->exchangerate->attributes()->ccy;
$usd = (string)$xml->row[2]->exchangerate->attributes()->ccy;
$url = 'https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=3'; //НБУ
$xml_nbu = simplexml_load_file($url);
$rur_s_nbu = (string)$xml_nbu->row[0]->exchangerate->attributes()->sale; //рубль продажа
$eur_s_nbu = (string)$xml_nbu->row[1]->exchangerate->attributes()->sale;
$usd_s_nbu = (string)$xml_nbu->row[2]->exchangerate->attributes()->sale;
/* второй раз код валюты не нужет, т.к. не может быть 2 валюты с одинаковым кодом, в админке создаем валюту и присваеваем код
например: USD - UNB доллар нацбанк
EUR - ENB евро нацбанк
$rur_nbu = (string)$xml_nbu->row[0]->exchangerate->attributes()->ccy; //код валюты RUR
$eur_nbu = (string)$xml_nbu->row[1]->exchangerate->attributes()->ccy;
$usd_nbu = (string)$xml_nbu->row[2]->exchangerate->attributes()->ccy;*/
if (is_object($xml) && is_object($xml_nbu))
{ // приватбанк наличный
$CharCode = strval($usd);
$oCurrency = Core_Entity::factory('Shop_Currency')->getByCode($CharCode);
if (!is_null($oCurrency))
{
$iNominal = intval(1); //коэффициент пересчета = 1, хотя это не обязательный параметр
$Value = floatval(str_replace(',', '.', strval($usd_s)) / $iNominal);
$oCurrency->exchange_rate = $Value;
$oCurrency->save();
echo "Updated currency {$CharCode} = {$Value}; \n";
}
$CharCode = strval($eur);
$oCurrency = Core_Entity::factory('Shop_Currency')->getByCode($CharCode);
if (!is_null($oCurrency))
{
$iNominal = intval(1);
$Value = floatval(str_replace(',', '.', strval($eur_s)) / $iNominal);
$oCurrency->exchange_rate = $Value;
$oCurrency->save();
echo "{$CharCode} = {$Value}; \n";
}
// НБУ
$CharCode = strval('UNB');
$oCurrency = Core_Entity::factory('Shop_Currency')->getByCode($CharCode);
if (!is_null($oCurrency))
{
$iNominal = intval(1);
$Value = floatval(str_replace(',', '.', strval($usd_s_nbu)) / $iNominal);
$oCurrency->exchange_rate = $Value;
$oCurrency->save();
echo "{$CharCode} = {$Value}; \n";
}
$CharCode = strval('ENB');
$oCurrency = Core_Entity::factory('Shop_Currency')->getByCode($CharCode);
if (!is_null($oCurrency))
{
$iNominal = intval(1);
$Value = floatval(str_replace(',', '.', strval($eur_s_nbu)) / $iNominal);
$oCurrency->exchange_rate = $Value;
$oCurrency->save();
echo "{$CharCode} = {$Value}; \n";
}
}
else {echo "Что то пошло не так!";}
Авторизация