Перейти к содержанию
Официальный форум поддержки Simpla

Обновление Курса Валют По Курсу Нац. Банка, Обновление Цен По Крону


Рекомендуемые сообщения

За основу взял код от сюда 

 

Что делает? 

Проверяет если валюта на сайте нац. банка поменялась, обновляет её в системе.

 

Для запуска Cron/задания по расписанию ищите соответствующий раздел в панели управления хостингом.

Пример запуска через cron.sh

#!/bin/bash 
wget --output-document=/dev/null http://you-site.ru/cron.php?key=wQF4zu57Mc9K5rk1SnybPC7ukZd 2>&1

Сам код.

<?php

require_once('api/Simpla.php');
$simpla = new Simpla();


/* 
* Обновление курса валют по расписанию 
* http://forum.simplacms.ru/topic/2033-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA%D1%83%D1%80%D1%81%D0%B0-%D0%B2%D0%B0%D0%BB%D1%8E%D1%82-%D0%BF%D0%BE-%D0%BA%D1%83%D1%80%D1%81%D1%83-%D0%BD%D0%B0%D1%86-%D0%B1%D0%B0%D0%BD%D0%BA%D0%B0-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2/
*/
class ExchangeRatesCBRF
{
	var $rates;
	function __construct($date = null)
	//В PHP версии ниже 5 это метод объекта следует переименовать в ExchangeRatesCBRF
	{
		$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); 
		if (!isset($date)) $date = date("Y-m-d"); 
		$curs = $client->GetCursOnDate(array("On_date" => $date));
		$this->rates = new SimpleXMLElement($curs->GetCursOnDateResult->any);
	}

	function GetRate ($code)
	{
	//Этот метод получает в качестве параметра цифровой или буквенный код валюты и возвращает ее курс
		$code1 = (int)$code;
		if ($code1!=0) 
		{
			$result = $this->rates->xpath('ValuteData/ValuteCursOnDate/Vcode[.='.$code.']/parent::*');
		}
		else
		{
			$result = $this->rates->xpath('ValuteData/ValuteCursOnDate/VchCode[.="'.$code.'"]/parent::*');
		}
		if (!$result)
		{
			return false; 
		}
		else 
		{
			$vc = (float)$result[0]->Vcurs;
			$vn = (int)$result[0]->Vnom;
			return ($vc/$vn);
		}

	}
}

// Делаем ключ для запуска крон, что бы каждый левый не запускал cron.php
if($simpla->request->get('key') == 'wQF4zu57Mc9K5rk1SnybPC7ukZd') {

	$rates = new ExchangeRatesCBRF();
	$currencies = $simpla->money->get_currencies();
	$currency = $simpla->money->get_currency();


	foreach($currencies as $cu) {
		if($cu->id != $currency->id) {
			$value = $rates->GetRate($cu->code);
			
			// Обновляем валюту, если курс поменялся.
			if($cu->rate_to != $value) {
				$simpla->money->update_currency($cu->id, array('rate_to'=>$value));			
			}
		}	
	}
}

?>

 

Автообновление курса валют.zip

Ссылка на сообщение
Поделиться на другие сайты

Полезная доработка. А как сделать чтобы курс доллара к гривне обновлялся, я запустил файл и курс обновился 1$ = 59.22 грн, при курсе в 27 в среднем

Ссылка на сообщение
Поделиться на другие сайты

Полезная доработка. А как сделать чтобы курс доллара к гривне обновлялся, я запустил файл и курс обновился 1$ = 59.22 грн, при курсе в 27 в среднем

Эта доработка предназначена для рублевой валюты, гривны там и в помине нет.
Ссылка на сообщение
Поделиться на другие сайты

Эта доработка предназначена для рублевой валюты, гривны там и в помине нет.

Понял, спасибо. Очень жаль.

Ссылка на сообщение
Поделиться на другие сайты

Полезная доработка. А как сделать чтобы курс доллара к гривне обновлялся, я запустил файл и курс обновился 1$ = 59.22 грн, при курсе в 27 в среднем

 

Это произошло оттого, что автор как следует не указал возможности разработки и способ применения.

 

Предложенный способ работает правильно, только если основная валюта сайта - российский рубль. Иначе, как в цитированном случае, владелец сайта получит курсы и  цены товаров самые неадекватные.

 

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

 

Пожелание автору: переделать, что работало в произвольном случае по-настоящему автоматически.

Ссылка на сообщение
Поделиться на другие сайты

Я считаю, что такого делать не стоит.

Потому что обновлять курс гривны через Нацбанк России - как минимум глупо, а почему тогда не через Зимбабве? Или Молдову?

Ссылка на сообщение
Поделиться на другие сайты

Для Украины можно поискать решения от местных банков, например:

http://gavnokod.com/php-skript-dlya-polucheniya-kursov-valyut-s-privat-bank-api/

Ссылка на сообщение
Поделиться на другие сайты

Для Украины можно поискать решения от местных банков, например:

http://gavnokod.com/php-skript-dlya-polucheniya-kursov-valyut-s-privat-bank-api/

Было бы очень круто сделать версию для России и для Украины

Ссылка на сообщение
Поделиться на другие сайты

Ну, для этого нужно знать, что именно вы хотите - какой курс, какие валюты и т.д.

В принципе - сделать можно.

Если будет время - посмотрю

Ссылка на сообщение
Поделиться на другие сайты

Ну, для этого нужно знать, что именно вы хотите - какой курс, какие валюты и т.д.

В принципе - сделать можно.

Если будет время - посмотрю

В принципе в Украине все закупки идут в долларах, очень редко в евро, поэтому 99% случаев это курс доллара к гривне и все

Изменено пользователем Julius123
Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...
  • 3 месяца спустя...

Ну, для этого нужно знать, что именно вы хотите - какой курс, какие валюты и т.д.

В принципе - сделать можно.

Если будет время - посмотрю

никакие новости по модулю для Украины не появились?

Ссылка на сообщение
Поделиться на другие сайты
  • 8 месяцев спустя...

Не подскажите в чём ошибка : 

 

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL' : failed to load external entity "http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL" in /var/www/html/123.ru/cron.php:14
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...