исключение «Viewflex \ Forex \ ForexException» с сообщением «Ошибка получения обменного курса - PullRequest
0 голосов
/ 03 октября 2018

я использую версию этого пакета "viewflex / forex": "^ 0.1.1", но при обновлении курса валюты для -

$usdRate = $server->getRate('USD', 'INR');

получаю ошибку, как показано ниже, исключение 'Viewflex \ Forex \ ForexException'с сообщением «Ошибка при получении обменного курса.

Любая помощь !!!Спасибо,

1 Ответ

0 голосов
/ 03 октября 2018

Глядя на их исходный код, я вижу это:

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, он также генерирует исключение.Так что на самом деле не похоже, что вы сделали что-то не так.</p>

Глядя дальше, я вижу, что это делает этот вызов:

$response = $this->request('https://api.fixer.io/latest?base='.$source.'&symbols='.$target);

Я перевел это, основываясь на вашем коде:

https://api.fixer.io/latest?base=USD&symbols=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, и либо отправьте запрос на извлечение, либо измените имя пакета составителя https://github.com/viewflex/forex/blob/master/composer.json#L2 и зарегистрируйте свой новый пакет с помощью https://packagist.org/ (измените все пространства имен файлаи если вы это сделаете.)

Если вы подпишетесь на новый API и отправите новую конечную точку, я могу отправить парню запрос на извлечение с исправлением.

...