Алексей
мужики, мне поставили такую задачу, клиент вбивает в админке цену товара в баксах, а на сайте оно должно выводиться в гривнах согласно курсу нбу, как мне это сделать? может кто уже делал подобную задачу?
Am
Сделайте простой обработчик цены по курсу НБУ. api скорее всего есть где можно брать цену при загрузки страницы
Am
будет сниппет такой себе
Алексей
я так и думал, думал может готовый у кого есть
Am
Вот напишите и не забудьте выложить в доступ (((:
Am
Делов на 20 минут.
Алексей
))))
Алексей
буду сейчас пробовать
Andrews
У меня где-то был снипет, сейчас скину)
Алексей
вот спасибо)
Am
(((%
и в общий доступ выложить, да?
Andrews
Он не так хорош :D
Am
(((%
Антон
Помогут сделать хорошим
Am
довести до ума, тем более помогут (;
Алексей
ну хоть посмотреть и взять за основу
Andrews
Ай блин он оказывается по курсу ЦБ и из евро в рубли, давно дело было уже забыл
Andrews
$data = json_decode(file_get_contents('http://www.cbr-xml-daily.ru/daily_json.js'));
$rub = number_format((double)$price * $data->Valute->EUR->Value, 0, '', ' ');
$usd = number_format(((double)$price * $data->Valute->EUR->Value)/$data->Valute->USD->Value, 0, '', ' ');
echo $$output;
Andrews
Но выглядело это как-то так
Алексей
все равно спасибо
Andrews
Как не сложно догадаться как параметры он берет price - цену в рублях и output
Dark
Немного подправить и можно из доллара в гривны сделать.
правда через рубли (они в этом json базовая валюта)
Andrews
Ну ему же нужно не по цб, а по нбу
Dark
В этом и проблема
Алексей
вот я нашел на сайте нбу https://bank.gov.ua/control/uk/publish/article?art_id=38441973
Алексей
сейчас буду парсить
Алексей
как напишу выложу
Andrews
С xml повеселее будет :D
Алексей
там и JSON есть
Алексей
что лучше использовать?
Раньше Здесь Был Мат_
Джейсон
Алексей
ок, спасибо
Dark
json
Dark
json обычно меньше весит
Dark
А так json_decode и вперед разбирать что получил
Алексей
угу, буду вспоминать как с ним работать)))
Dark
http://php.net/manual/ru/function.json-decode.php
Andrews
Да че с ним работать, если второй параметр в json_decode в true передашь вообще обычный массив получится
Алексей
блин, NULL возвращает
Алексей
$jsonURL = 'https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?valcode=USD&date='.date('Ymd').'&json';
var_dump(json_decode($jsonURL, true));
Dmytro
При работе с курсами не забывайте что такие сервисы любят падать 🙂 поэтому ставьте проверку на то отдал ли сервер коректный ответ что б ваш сайт не падал вместе с курсом )
Dmytro
ну и курсы логично тянуть кроном и кешировать резхулаьтат на пару часов 🙂
Dmytro
можно просто кроном файлик обновлять 1 )
Dmytro
если не обновился то и ладно 🙂
Dmytro
а сайт будет уже с локального работать 🙂
Am
именно
Dmytro
просто на днях тупил ipgeobase ) и многие клиенты задавали вопросы а чего это у нас за беда )
Dmytro
Приходилось отвечать что не захотели по уму сделать вот и результат
Женечка
Am
сами себе Буратины (;
Алексей
ага, хотелось бы)
Dmytro
Женечка
в личку
Раньше Здесь Был Мат_
Либо маны курить)))
Алексей
😊
Dmytro
ага, хотелось бы)
Если надо обращайтесь можем хоть часть работы сделать хоть всю 🙂
Andrews
https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?valcode=USD&json
Попробуй просто без даты обращаться, он последнюю возвращает
Алексей
of
Алексей
ща
Алексей
неа, все равно NULL
Andrews
Andrews
Сначала же надо файл получить
Andrews
file_get_content('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?valcode=USD&json') и потом уже это разбирай джейсоном
Andrews
file_get_contents*
Алексей
спасибо
Алексей
сейчас попробую
Женечка
Алексей
👍
Andrews
Это борьба с конкуренцией
No
Просто вместо file_get_contents используйте curl с норм параметрами и дефолтные значения, тогда не страшны будут падения зависимых сервисов
Andrey
Ну кстати да, вот тот же jino любит вырубать file_get_contents. Рандомно так, причём. Хуякс - и нетю.
Andrews
Да какая разница если сервер ничего не отдает то хоть курлом ты собирай хоть через проксю
No
Большая 🙂 php не падает при запросе курлом
Алексей
уряяя, заработало! теперь буду мудрить с кешированием)
Andrews
Но само собой курлом кошернее
No
на курл и лимиты можно наставить и набаловаться по нормальному 🙂
Алексей
о не, курл для меня вообще темный лес)
Andrews
Хотя конечно такой подход все ровно не особо правильный, надо как Dmytro надо в файлик писать, а то даже при каждом запросе это тьма запросов лишних
Andrews
А то даже при небольших нагрузках это тьма лишних запросов*
No
Ну да, раз в сутки забирать и радоваться в идеале, просто если уж делать каждый раз то лучше курлом 🙂