ABO.CMS: Расскажите подробнее про курсы валют и магазин

toty

Постоялец
Регистрация
1 Авг 2011
Сообщения
136
Реакции
3
Добрый день.
+ 1) Расскажите, как добавить валюту, например UAH
+ 2) Расскажите, как изменить валюту по умолчанию, т.е. чтобы гривна была основной
+ 3) Как добиться мультивалютности? т.е. некого функционала схожего с demo.opencart.com (опенкартом) когда по нажатию на валюту она пересчитывается автоматически в валюту платежа (удобную пользователю)?

Осталось:
4) Как в платежные системы, ввести оплату на "соответствующий кошелек" с соответствующей валютой платежа?

Еще назрел один вопрос, каким образом интегрировать Я.Кассу (Для просмотра ссылки Войди или Зарегистрируйся) в платежные системы, может есть наработки?

С мультивалютностью и новой валютой разобрался, только не ясно как подгрузить курсы из Для просмотра ссылки Войди или Зарегистрируйся

function get_central_bank_rates($xml_file_url)

Непонятно как работает, отдельно запустить не удалось.

Код:
<?php

include "inc/domxml-php4-to-php5.php";

$xml_file_url = "http://www.nbrb.by/Services/XmlExRates.aspx?ondate=09/14/15";

/**
* Функция получает значения курса валют с сайта НБРБ и выдает нужные параметры в виде массива
*
* @param string $xml_file_url - URL адрес страницы
* @return mixed массив с данными или false
*/
function get_central_bank_rates($xml_file_url)
{
    // Загрузим XML валют.
    $content = file_get_contents($xml_file_url);
    //$content = iconv('windows-1251', 'UTF-8', $content);

    $xml = domxml_open_mem($content);
    if (!$xml)
    {
        return false;
    }

    // Получаем верхний узел.
    $child_nodes = $xml->child_nodes();
    if (count($child_nodes) == 0)
    {
        return false;
    }
    $xml = $child_nodes[0];

    // Получим список узлов валют.
    $child_nodes = $xml->child_nodes();

    if (!$child_nodes)
    {
        return false;
    }

    $result = array();


    // Ищем интересующие нас курсы.
    foreach ($child_nodes as $xml)
    {
        $sub_nodes = $xml->child_nodes();

        //print_r($sub_nodes);

        if (!$sub_nodes)
        {
            continue;
        }

        // Ищем название валюты.
        $currency_name = '';
        foreach ($sub_nodes as $node)
        {
            $node_name = trim(strtolower($node->node_name()));
            if ($node_name != 'CharCode')
            {
                continue;
            }

            // Извлекаем значение.
            $value_nodes = $node->child_nodes();
            foreach ($value_nodes as $value_node)
            {
                if ($value_node->node_type() == XML_TEXT_NODE)
                {
                    $currency_name .= trim(strtolower($value_node->node_value()));
                }
            }
        }

        if (empty($currency_name))
        {
            continue;
        }

        $value = '';

        reset($sub_nodes);
        foreach ($sub_nodes as $node)
        {
            $node_name = strtolower($node->node_name());
            if ($node_name != 'Rate')
            {
                continue;
            }

            // Извлекаем значение.
            $value_nodes = $node->child_nodes();
            foreach ($value_nodes as $value_node)
            {
                if ($value_node->node_type() == XML_TEXT_NODE)
                {
                    $value .= strtolower($value_node->node_value());
                }
            }
        }

        // Заменяем запятую на точку и преобразуем в вещественное число.
        $value = str_replace(',', '.', $value);
        $value = floatval($value);
        if (!$value)
        {
            continue;
        }

        // Добавим валюту.
        switch ($currency_name)
        {
            case 'rur':
            {
                $result['BYR/RUR'] = $value;
                break;
            }
            case 'usd':
            {
                $result['USD/BYR'] = $value;
                break;
            }
            case 'eur':
            {
                $result['EUR/BYR'] = $value;
            }
        }

    }

    if (count($result))
    {
        // Произведем дополнительные расчеты между иностранными валютами.
        if (isset($result['USD/BYR']) && isset($result['EUR/BYR']))
        {
            $result['EUR/USD'] = round($result['EUR/BYR'] / $result['USD/BYR'], 4);
        }

        return $result;
    }
    else
    {
        return false;
    }
}
echo "<a href='$xml_file_url'>$xml_file_url</a>";
echo "<br>";
echo "**** Curs **** <br>";
echo get_central_bank_rates($xml_file_url);
var_dump(get_central_bank_rates($xml_file_url));

?>

Сделано! Чувствительность к регистру XML
 
Последнее редактирование модератором:
Сверху