Я использую версию этого пакета «viewflex / forex»: «^ 0.1.1», но при обновлении курса валюты для —
$usdRate = $server->getRate('USD', 'INR');
Получение ошибки, как показано ниже
исключение «Viewflex \ Forex \ ForexException» с сообщением «Ошибка получения обменного курса.
Любая помощь!!!
Спасибо,
Глядя на их исходный код, я вижу это:
https://github.com/viewflex/forex/blob/master/src/Forex.php#L57-L68
if (
array_key_exists('rates', $content)
&& array_key_exists($target, $content['rates'])
&& $content['rates'][$target]
) {
$rate = floatval($content['rates'][$target]);
} else {
throw new ForexException('Error retrieving exchange rate.');
}
if($rate <= 0)
throw new ForexException('Error retrieving exchange rate.');
Таким образом, получается, что если ответ не содержит необходимой информации, он выдаст исключение. Кроме того, если он проходит первую проверку, но скорость < 0, это также вызывает исключение. Так что на самом деле не похоже, что вы сделали что-то не так.
Глядя дальше, я вижу, что делает этот вызов:
$response = $this->request('https://api.fixer.io/latest?base='.$source.'&symbols='.$target);
Я перевел это на основе вашего кода:
https://api.fixer.io/latest?base=USD&символы = INR
Который, если вы нажмете эту ссылку, даст вам ответ:
0 "#################################################################################################################################"1 "# #"2 "# IMPORTANT - PLEASE UPDATE YOUR API ENDPOINT #"3 "# #"4 "# This API endpoint is deprecated and has now been shut down. To keep using the Fixer API, please update your integration #"5 "# to use the new Fixer API endpoint, designed as a simple drop-in replacement. #"6 "# You will be required to create an account at https://fixer.io and obtain an API access key. #"7 "# #"8 "# For more information on how to upgrade please visit our Github Tutorial at: https://github.com/fixerAPI/fixer#readme #"9 "# #"a "#################################################################################################################################"
Похоже, что библиотека устарела.
Либо используйте другую библиотеку, либо снова включите ее.
Чтобы обойти это, вы можете сначала создать учетную запись с новым API, зарегистрироваться на GitHub, если вы еще этого не сделали, разветвить хранилище, изменить эту строку https://github.com/viewflex/forex/blob/master/src/Forex.php#L53, и либо отправьте запрос на извлечение, либо измените имя пакета composer https://github.com/viewflex/forex/blob/master/composer.json#L2 и зарегистрируйте свой новый пакет с https://packagist.org/ (также измените все пространства имен файлов, если вы это сделаете.)
Если вы подпишетесь на новый API и отправите новую конечную точку, я могу отправить этому парню запрос с исправлением.
Других решений пока нет …