Конвертер валют Google больше не работает
Похоже, что Конвертер валют Google Finance вообще перестал работать. Неделю назад я начал получать уведомления по электронной почте от моего магазина Magento 1.9.2:
Предупреждения об обновлении валюты: ПРЕДУПРЕЖДЕНИЕ. Невозможно получить курс из https://finance.google.com/finance/converter?a=1&from=GBP&to=EUR. ПРЕДУПРЕЖДЕНИЕ. Невозможно получить оценку с https://finance.google.com/finance/converter?a=1&from=GBP&to=USD.
Эти URL действительно больше не действительны. Кто-нибудь знает, есть ли новые URL, которые мы можем использовать, или нам нужно настроить другой сервис?
6 ответов
Эта ссылка больше не работает.
protected $_url = 'https://finance.google.com/finance/converter?a=1&from={{CURRENCY_FROM}}&to={{CURRENCY_TO}}';
Я исследовал и нашел эти коды.
Найдите этот файл:
app/code/local/Payserv/GoogleFinance/Model/Google.php
Замените коды этим:
class Payserv_GoogleFinance_Model_Google extends Mage_Directory_Model_Currency_Import_Abstract {
protected $_url = 'http://free.currencyconverterapi.com/api/v3/convert?q={{CURRENCY_FROM}}_{{CURRENCY_TO}}';
protected $_messages = array();
protected function _convert($currencyFrom, $currencyTo, $retry=0) {
$url = str_replace('{{CURRENCY_FROM}}', $currencyFrom, $this->_url);
$url = str_replace('{{CURRENCY_TO}}', $currencyTo, $url);
try {
$resultKey = $currencyFrom.'_'.$currencyTo;
$response = file_get_contents($url);
$data = Mage::helper('core')->jsonDecode($response);
$results = $data['results'][$resultKey];
$queryCount = $data['query']['count'];
if( !$queryCount && !isset($results)) {
$this->_messages[] = Mage::helper('directory')->__('Cannot retrieve rate from %s.', $url);
return null;
}
return (float)$results['val'];
} catch (Exception $e) {
if ($retry == 0) {
$this->_convert($currencyFrom, $currencyTo, 1);
} else {
$this->_messages[] = Mage::helper('directory')->__('Cannot retrieve rate from %s', $url);
}
}
}
}
Google больше не предоставляет API конвертера валют. Есть несколько альтернативных API, предлагающих данные о конвертации валют. Некоторые из них уже упоминались в сообщениях (Fixer, Currencylayer...)
Другой вариант - API обменного курса валюты SWOP, быстрый, простой в использовании, надежный и прозрачный API обменного курса, созданный разработчиками для разработчиков. Полный отказ от ответственности: я один из разработчиков SWOP:)
- SWOP API предлагает текущие и исторические курсы для 180+ валют. Они собираются непосредственно из надежных источников (различных центральных банков и других важных банков).
- SWOP API имеет две конечные точки: GraphQL и REST/JSON для удобства разработчика.
- Есть бесплатный план, разрешающий 1000 запросов в месяц.
Это кажется прерывистым (показывает, загружаю ли я страницу примерно 10 раз, но только один раз каждые 10 кликов). Но я лично начал настраивать другие сервисы. Я использую банковские API (в настоящее время это шведский, так что он может вам не помочь). Но посоветуйтесь с вашим банком, у них обычно есть API.
Удачи!
По-видимому, Google больше не предлагает эту услугу.
Основная альтернатива выглядит так:
Оба предлагают 1000 запросов бесплатно в месяц (необходимо создать аккаунт на их домашней странице)
Я столкнулся с той же проблемой с прошлой недели. Но новый URL решил мою проблему, и теперь конвертация валюты работает нормально. попробуйте это: https://finance.google.com/bctzjpnsun/converter
Проблема со ссылкой, Google недавно обновил API-ссылку, и я однажды добился успеха при 10-й проверке существующей ссылки. Попробуйте перейти по этой ссылке https://www.google.com/finance/converter
Финансовый URL Google пока не работает, я подготовил обходной путь для использования MSN Money (Microsoft) API. Он возвращает JSON, так что вы можете использовать его на любом языке программирования, я поместил пример с использованием PHP:
function msn($from, $to, $amount) {
$url = 'https://finance.services.appex.bing.com/Market.svc/ChartDataV5?symbols=245.20.'.strtoupper($from).strtoupper($to).'LITE&chartType=1y';
$request = curl_init();
$timeOut = 0;
curl_setopt($request, CURLOPT_URL, $url);
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($request, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)');
curl_setopt($request, CURLOPT_CONNECTTIMEOUT, $timeOut);
$response = json_decode(curl_exec($request));
curl_close($request);
$rate = array_last($response[0]->Series)->P;
return $rate * $amount;
}
Вышеупомянутая функция принимает валюту, которая у вас есть, целевую валюту и сумму. Отправьте запрос GET на MSN URL и проанализируйте JSON, чтобы получить текущий курс обмена. Наконец, он умножает ставку на вашу сумму, чтобы конвертировать ее в целевую валюту.
Я надеюсь, что это решит вашу потребность, в коде есть много возможностей для оптимизации. Я только что дал вам простую реализацию. Например, вы можете сохранить курс обмена в своей базе данных и использовать этот курс в течение одного дня, так что вы будете вызывать только API один раз в день.