Вход • Регистрация

Конвертация валюты по текущему курсу ЦБР

  • 23 декабря 2014 г.
  • В общем может кому пригодится да и сбе чтоб не забыть.

    Задача перевести стоимость в USD в рубли по текущему курсу.


    1. Тянем курс USD

    Код пишем в shop.view.buy_form.php или туда где все это дело надо получить

    Код



    /*КУРС ЦБР*/

    class ExchangeRatesCBRF
    {

    public $rates = array('byChCode' => array(), 'byCode' => array());

    public function __construct($date = null)
    {
    if (!isset($date)) $date = date("Y-m-d");
    $client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL");



    $curs = $client->GetCursOnDate(array("On_date" => $date));
    $rates = new SimpleXMLElement($curs->GetCursOnDateResult->any);

    foreach ($rates->ValuteData->ValuteCursOnDate as $rate)
    {
    $r = (float)$rate->Vcurs / (int)$rate->Vnom;
    $this->rates['byChCode'][(string)$rate->VchCode] = $r;
    $this->rates['byCode'][(int)$rate->Vcode] = $r;
    }

    // Adding an exchange rate of Russian Ruble
    $this->rates['byChCode']['RUB'] = 1;
    $this->rates['byCode'][643] = 1;
    }


    public function GetRate($code)
    {
    if (is_string($code))
    {
    $code = strtoupper(trim($code));
    return (isset($this->rates['byChCode'][$code])) ? $this->rates['byChCode'][$code] : false;

    }
    elseif (is_numeric($code))
    {
    return (isset($this->rates['byCode'][$code])) ? $this->rates['byCode'][$code] : false;
    }
    else
    {
    return false;
    }
    }


    public function GetCrossRate($CurCodeToSell, $CurCodeToBuy)
    {
    $CurToSellRate = $this->GetRate($CurCodeToSell);
    $CurToBuyRate = $this->GetRate($CurCodeToBuy);

    if ($CurToSellRate && $CurToBuyRate)
    {
    return $CurToBuyRate / $CurToSellRate;
    }
    else
    {
    return false;
    }

    }


    public function GetRates()
    {
    return $this->rates;
    }
    }

    $rates = new ExchangeRatesCBRF();
    $course = $rates->GetRate("USD"); /*Например, будет 62.1223*/

    /*КУРС ЦБР*/



    2. Переводим стоимость USD -> RUB +3 рубля

    Код

    $price_rub =$price["price"] * ($course+3);


    3. И можно уже выводить 2 суммы:
    Код

    echo 'Стоимость в USD: '.$price["price"].' '.$result["result"]["currency"];
    echo 'Стоимость в RUB: '.$price_rub.' RUB';
    • 24 декабря 2014 г.
    • Охх.. я чувствую запах лихих 90-х
      • 24 декабря 2014 г.
      • Чувствуется рост доллара когда в аэропорту пиво по 8 баксов покупаешь))))
        • 25 декабря 2014 г.
        • Александр, куда это драпать собрались?
          • 25 декабря 2014 г.
          • Наоборот только с египта прилетел. по магазинам там уже много меньше наших ходит, все в отелях сидят. деньги берегут. А про аэропорт вообще молчу, в ресторане там уже с шиком не посидишь. Ну щас курс вроде уже падает. Прорвемся.

            Кстати, если кому путевочка со скидкой надо, обращайтесь.
    • 31 января 2015 г.
    • Подскажите, а как можно осуществить автоматом запись курса валют в exchange_rate (таблица diafan_shop_currency) в место ручного ввода значения?
      Пробовал прикрутить Ваш код, выходят ошибки, что то вроде двойного объявления класса ExchangeRatesCBRF .
      В общем не получилось к сожалению.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум