Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


system

Recommended Posts

Здравствуйте.

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

Спасибо.

Надіслати
Поділитися на інших сайтах


Краткий план действий:

0. Подготовить свободное время от месяца до всей жизни в зависимости от склада ума для реализации задуманного;

1. Выучить язык программирования PHP;

2. Выучить шаблон проектирования MVC;

3. Выучить архитектуру OpenCart (одновременно осознав, что пункт два поможет в этом, но не очень);

4. Выучить базовые принципы парсинга;

5. Написать собственное дополнение с желаемым функционалом.

Надіслати
Поділитися на інших сайтах


Краткий план действий:

0. Подготовить свободное время от месяца до всей жизни в зависимости от склада ума для реализации задуманного;

1. Выучить язык программирования PHP;

2. Выучить шаблон проектирования MVC;

3. Выучить архитектуру OpenCart (одновременно осознав, что пункт два поможет в этом, но не очень);

4. Выучить базовые принципы парсинга;

5. Написать собственное дополнение с желаемым функционалом.

:-D маааленькая инструкция..

CODEONETEAM, а сейчас валюты с какого сайта обновляются? :oops:

Надіслати
Поділитися на інших сайтах


Краткий план действий:

0. Подготовить свободное время от месяца до всей жизни в зависимости от склада ума для реализации задуманного;

1. Выучить язык программирования PHP;

2. Выучить шаблон проектирования MVC;

3. Выучить архитектуру OpenCart (одновременно осознав, что пункт два поможет в этом, но не очень);

4. Выучить базовые принципы парсинга;

5. Написать собственное дополнение с желаемым функционалом.

М-да-а-а...

Не просто оказывается, но спасибо за ответ, спасибо.

Надіслати
Поділитися на інших сайтах


  • 1 month later...

это всё хорошо, но что делать, если курс не подходит? Допустим у меня цена в евро. Выводится в грн или руб, не суть.

Но мне этого курса недостаточно, надо, что бы сумма была по высшему курсу покупки. 

Я перепробовал много вариантов. 

Парсинг с приватбанка https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=5

модуль http://www.opencart.com/index.php?route=extension/extension/info&extension_id=17778&filter_search=currency&filter_license=0

Парсер http://blog.spy-reality.in.ua/avtomaticheskoe-obnovlenie-valyut-opencart.html

Модуль для ЦБРФ.

Переделывал стандартный файл валют под http://bank-ua.com/export/currrate.xml

И не могу найти себе место уже..

Если ставить % наценки на курс, то в зависимости от колебаний % тоже будет разный. а 1% на 400 евро это уже разница дай Бог для кого-то.

И что делать? Вот есть курс например, 1 евро - 18,2 грн.  А мне надо 18,7. Завтра будет 18,35 , а мне надо 19, 

Что делать?

Змінено користувачем Keyser
Надіслати
Поділитися на інших сайтах


Если ставить % наценки на курс, то в зависимости от колебаний % тоже будет разный. а 1% на 400 евро это уже разница дай Бог для кого-то.

А что мешает сделать наценку на курс фиксированной, а не в процентном выражении?

 

И что делать? Вот есть курс например, 1 евро - 18,2 грн. А мне надо 18,7. Завтра будет 18,35 , а мне надо 19

Судя по данной формулировке к текущему курсу евро нужно добавлять ~0,5 - 0,65.

P.S. Уже обсуждалась задача.

Надіслати
Поділитися на інших сайтах


А что мешает сделать наценку на курс фиксированной, а не в процентном выражении?

 

Судя по данной формулировке к текущему курсу евро нужно добавлять ~0,5 - 0,65.

P.S. Уже обсуждалась задача.

 

Уважаемый, смотрите, я лично в пхп не силён, делаю методом тыка и логики  :ugeek:

 

У меня есть такой скрипт - 

<?php
/** 
* @Author Spy-Reality
* Парсер керса валют с ПРИВАТ 24 в OPENCART

*/


// Подключение к БД
include 'config.php';
$dbhost = DB_HOSTNAME;
$dbuser = DB_USERNAME;
$dbpass = DB_PASSWORD;
$dbname = DB_DATABASE;
$sqlchar='utf8';
 
 
$db = new PDO ( 'mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
$db->query ( 'SET character_set_connection = '.$sqlchar );
$db->query ( 'SET character_set_client = '.$sqlchar );
$db->query ( 'SET character_set_results = '.$sqlchar );

$default=$db->query("SELECT code FROM " . DB_PREFIX . "currency WHERE value='1.00000000'")->fetch(PDO::FETCH_ASSOC);

if($default['code']== 'UAH'){
    $xml = simplexml_load_file('https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=4');
    
    $price=1; // одна гривна;

	$eur=$xml->row[7]->exchangerate;
	$eur=(array)$eur;
	$codEUR=$eur['@attributes']['ccy'];
	$valEUR=$eur['@attributes']['sale'];
	$conEUR=$price/$valEUR;  // Корвентация в евро;
	
	$usd=$xml->row[4]->exchangerate;
	$usd=(array)$usd;
	$codUSD=$usd['@attributes']['ccy'];
	$valUSD=$usd['@attributes']['sale'];
	$conUSD=$price/$valUSD;  // Конвертация в доллар;
	
	$rub=$xml->row[6]->exchangerate;
	$rub=(array)$rub;
	$codRUB=$rub['@attributes']['ccy'];
	$valRUB=$rub['@attributes']['sale'];
	$conRUB=$price/$valRUB;  // Конвертация в рубль;
	
	$pln=$xml->row[0]->exchangerate;
	$pln=(array)$pln;
	$codPLN=$pln['@attributes']['ccy'];
	$valPLN=$pln['@attributes']['sale'];
	$conPLN=$price/$valPLN;  // Корвентация в злотый;
	
	
date_default_timezone_set('Europe/Kiev');
$date=date('Y-m-d H:i:s');

$stmt = $db->query("SELECT code FROM " . DB_PREFIX . "currency");
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
//echo $row['code'] ;
switch ($row['code']){
case 'UAH':
		 $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '1.00000000', date_modified = '" .  $date . "' WHERE code = 'UAH'");
         break;
case $codEUR:
if($valEUR==true){
		 $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($conEUR, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codEUR . "'");
		 }else{
		 echo "Валюта EUR не обновлена (нет курса)<br>";
		 }
         break;
case $codRUB:
if($valRUB==true){
         $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($conRUB, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codRUB . "'");
		 }else{
		 echo "Валюта RUB не обновлена (нет курса)<br>";
		 }
         break;
case $codUSD:
if($valUSD==true){
         $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($conUSD, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codUSD . "'");
		 }else{
		 echo "Валюта USD не обновлена (нет курса)<br>";
		 }
         break;
case $codPLN:
if($valPLN==true){
         $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($conEUR, 8, '.', '') . "', date_modified = '" . $date . "' WHERE code = '" . $codEUR . "'");
		 }else{
		 echo "Валюта PLN не обновлена (нет курса)<br>";
		 }
         break; 
            }
			
        }
		$defaultd=$db->query("SELECT date_modified FROM " . DB_PREFIX . "currency WHERE code='UAH'")->fetch(PDO::FETCH_ASSOC);
		echo 'Курс обновился в ('.$defaultd['date_modified'].')';

}elseif($default['code']== 'USD'){

	$xml = simplexml_load_file('https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=4');
	
	$usd=$xml->row[4]->exchangerate;
	$usd=(array)$usd;
	$codUSD=$usd['@attributes']['base_ccy'];
	$valUSD=$usd['@attributes']['sale'];
	$conUSD=$valUSD;  // Конвертация в доллар;
	
	
date_default_timezone_set('Europe/Kiev');
$date=date('Y-m-d H:i:s');

$stmt = $db->query("SELECT code FROM " . DB_PREFIX . "currency");
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
switch ($row['code']){
case 'USD':
		 $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '1.00000000', date_modified = '" .  $date . "' WHERE code = 'USD'");
         break;
case $codUSD:
if($valUSD==true){
         $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($conUSD, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codUSD . "'");
		 }else{
		 echo "Валюта UAH не обновлена (нет курса)<br>";
		 }
         break;
		 }
		 }
		$defaultd=$db->query("SELECT date_modified FROM " . DB_PREFIX . "currency WHERE code='USD'")->fetch(PDO::FETCH_ASSOC);
		echo 'Курс обновился в ('.$defaultd['date_modified'].')';

}elseif($default['code']== 'EUR'){

	$xml = simplexml_load_file('https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=4');
	
	$eur=$xml->row[7]->exchangerate;
	$eur=(array)$eur;
	$codEUR=$eur['@attributes']['base_ccy'];
	$valEUR=$eur['@attributes']['sale'];
	$conEUR=$valEUR;  // Конвертация в доллар;
	
date_default_timezone_set('Europe/Kiev');
$date=date('Y-m-d H:i:s');

$stmt = $db->query("SELECT code FROM " . DB_PREFIX . "currency");

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
		
switch ($row['code']){

case 'EUR':
$db->exec("UPDATE " . DB_PREFIX . "currency SET value = '1.00000000', date_modified = '" .  $date . "' WHERE code = 'EUR'");
break;
case $codEUR:

if($valEUR==true){
         $db->exec("UPDATE " . DB_PREFIX . "currency SET value = '" . number_format($conEUR, 8, '.', '') . "', date_modified = '" .  $date . "' WHERE code = '" . $codEUR . "'");
		 }else{
		 echo "Валюта UAH не обновлена (нет курса)<br>";
		 }
		 
         break;
		 }

		 }
		 
		$defaultd=$db->query("SELECT date_modified FROM " . DB_PREFIX . "currency WHERE code='EUR'")->fetch(PDO::FETCH_ASSOC);
		echo 'Курс обновился в ('.$defaultd['date_modified'].')';
		
		}else{
		echo 'Курс не обновился!';
		}
		
?>

 

Валюта у товара в евро, в настройках указана евро по дефолту. На витрину выводится Грн (system\library\currency.php смена $this->set($this->config->get('config_currency'));     на $this->set('UAH') ;)

Как мне сюда добавить наценку? Сейчас курс 18,20, а я хочу 18,7

Змінено користувачем Keyser
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.