Перейти к содержимому


Фото
- - - - -

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

Cron обновлние валют

  • Чтобы отвечать, сперва войдите на форум
11 ответов в теме

#1 ABSORBER

ABSORBER
  • Модератор
  • 382 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Хабаровск

Опубликовано 10.03.2017 - 12:57

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

 

Что делает? 

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

 

Для запуска 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));			
			}
		}	
	}
}

?>

 

Прикрепленные файлы:



#2 Julius123

Julius123
  • Пользователь
  • 216 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 13.03.2017 - 11:15

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



#3 Noxter

Noxter
  • Пользователь
  • 5 711 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 13.03.2017 - 12:53

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

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

#4 Julius123

Julius123
  • Пользователь
  • 216 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 13.03.2017 - 12:55

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

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



#5 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 13.03.2017 - 14:36

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

 

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

 

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

 

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

 

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



#6 Kosjak76

Kosjak76
  • Модератор
  • 3 575 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 13.03.2017 - 14:39

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

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



#7 Kosjak76

Kosjak76
  • Модератор
  • 3 575 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 13.03.2017 - 14:43

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

http://gavnokod.com/...rivat-bank-api/



#8 Julius123

Julius123
  • Пользователь
  • 216 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 13.03.2017 - 14:44

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

http://gavnokod.com/...rivat-bank-api/

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



#9 Kosjak76

Kosjak76
  • Модератор
  • 3 575 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 13.03.2017 - 14:49

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

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

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



#10 Julius123

Julius123
  • Пользователь
  • 216 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 13.03.2017 - 15:00

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

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

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

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

42aff79cae45.png


Изменено: Julius123, 13.03.2017 - 15:12


#11 larenso

larenso
  • Пользователь
  • 61 сообщений
  • Дизайн, Программирование, Верстка, SEO
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 14.04.2017 - 18:26

Спасибо за модуль.



#12 Julius123

Julius123
  • Пользователь
  • 216 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 20.07.2017 - 15:56

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

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

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

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






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых