Acesse de maneira programática as taxas de câmbio [fechado]


112

Estou configurando um sistema de pedidos online, mas estou na Austrália e, para clientes internacionais, gostaria de mostrar os preços em dólares americanos ou euros, para que eles não tenham que fazer nenhum esforço mental para converter em dólares australianos.

Alguém sabe se posso obter taxas de câmbio atualizadas da rede em algum lugar em um formato fácil de analisar que possa acessar a partir do meu script PHP?


ATUALIZAÇÃO: agora escrevi uma classe PHP que implementa isso. Você pode obter o código do meu site .


1
@Kelly: Ótima sugestão, porque o Google é gratuito e tem grandes chances de continuar existindo em um futuro próximo: gostaria de sugerir que você a envie como uma resposta.
Eric O Lebigot

1
Não consigo editar o comentário. Aqui está o novo link jarloo.com/exchange-rate-api
Kelly

1
obrigado por compartilhar @Adam Pierce! Existe alguma maneira de obter taxas históricas também?
Aris

Você também pode usar este link. É gratuito. Basta se inscrever e obter a API KEY. jsonrates.com/docs
Gajendra K Chauhan

Use currencylayer.com - eles fornecem taxas históricas e em tempo real no formato JSON, junto com alguns exemplos de PHP ( currencylayer.com/documentation )
Frank

Respostas:


71

Você pode obter conversões de moeda em um formato simples do Yahoo:

Por exemplo, para converter de GBP para EUR: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv


Isso é atualizado e fácil de analisar. Isso é o que estou procurando.
Adam Pierce,

4
Também estou interessado nisso, há alguma informação sobre o que os parâmetros representam? Especificamente o parâmetro "f". Não consigo encontrar nenhuma informação em qualquer lugar.
Fishcake

9
É legal ler esses dados se você tiver um site comercial?
Junior Mayhé

4
Outras experiências mostram que você pode solicitar várias taxas de conversão de uma vez separando os símbolos no parâmetro 's' por vírgula, da seguinte forma: download.finance.yahoo.com/d/…
Myster

3
Existe uma maneira de especificar uma data?
Maxim Egorushkin,

40

Esta resposta está MUITO atrasada, mas há uma informação importante faltando nas respostas acima.

Se você deseja mostrar preços precisos aos seus clientes, é importante entender como funcionam as taxas de câmbio.

A maioria dos serviços de câmbio apenas cita a taxa à vista (no meio do caminho entre Bid e Ask). O spot é uma espécie de abreviatura para a taxa de câmbio, mas ninguém consegue porque você só pode vender na oferta ou comprar na venda. Normalmente, você está procurando pelo menos 1% de spread entre eles, então a taxa à vista é de 0,5% de desconto para seus clientes.

Mas não para por aí, seus clientes quase certamente estão usando um cartão de crédito e Visa / Mastercard / Amex cobram taxas de câmbio. Na minha experiência, eles não são triviais, pelo menos 2,5%. Por exemplo, o Citibank Australia cobra 3,3%. Eles variam de cartão para cartão, portanto não há como prever o preço final que será cobrado de seus clientes.

Se você deseja cotar um preço "preciso" para seus clientes com base em uma taxa de câmbio, você precisa levar em consideração o acima e fornecer um buffer para que você não acabe cobrando mais do que o que você cotou.

FWIW, adicionei 4% ao que a conversão F / X indicaria.


Além disso, as taxas de câmbio mudam o tempo todo e os bancos só podem levar em consideração a taxa à meia-noite, horário local. Com -2% volatilidade diária, não é incerteza.
Alexandre C.

1
Esse é um ótimo ponto. Definitivamente, reforça a necessidade de algum tipo de buffer se você estiver exibindo uma moeda, mas cobrando outra. Pelo que vale a pena, com meu preenchimento de 4%, nunca ninguém fez um estorno.
philoye,

Nem todos os bancos cobram isso. Os cartões de crédito e débito do México, por exemplo, apenas converterão a moeda pelo preço que eles têm naquele dia para a venda da moeda, e nada mais.
Francisco Zarabozo

26

Pode ser bom adicionar

  http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

para a lista.

As taxas de referência oficiais fornecidas pelo Banco Central Europeu com base no procedimento regular de concertação diária entre os bancos centrais dentro e fora do Sistema Europeu de Bancos Centrais.

O feed está em XML e alguns outros formatos .
A atualização normalmente ocorre às 14h15 (14h15), horário do BCE (= horário de Frankfurt).


4
Apenas verifiquei (20 minutos após seu comentário) e está disponível para mim.
Jacco

Acabo de tentar usar isso, mas VB.NET se recusa a XPath corretamente. É porque os URLs que definem os namespaces são ambos 404ing?
Rikki

este link sempre mostra as taxas de ontem, não de hoje.
erkanyildiz

12

Recentemente implementei a mesma coisa, mas usando a API do Google. O URL da consulta é semelhante a este:

http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD

Leva 3 parâmetros. O primeiro parâmetro é o valor, seguido pelo código de moeda ISO 4217 do qual você está convertendo, um sinal de igual e um ponto de interrogação e o código de moeda para o qual você está convertendo. Você pode encontrar uma lista de códigos compatíveis com o Google aqui . A resposta à consulta será semelhante a esta:

{lhs: "1 British pound",rhs: "1.6132 U.S. dollars",error: "",icc: true}

Isso é bastante autoexplicativo, então não entrarei em detalhes aqui. É assim que lidei com a resposta da consulta:

function convert_currency($amount, $from_code, $to_code){
    ini_set('max_execution_time', 60);
    $temp = 'http://www.google.com/ig/calculator?hl=en&q=' . $amount . $from_code . '=?' . $to_code;

    $response = file_get_contents($temp);
    $result_string = explode('"', $response);

    $final_result = $result_string['3'];

    $float_result = preg_replace("/[^0-9\.]/", '', $full_result);

    return $float_result;
}

Tenho certeza de que está longe de ser a maneira mais elegante de fazer isso, mas sou muito novo em PHP. Espero que ajude!


2
Você pode usar json_decode em vez de explodir se quiser que seja mais confiável.
diolemo

existem limitações com este serviço?
sites de

Isso é muito fácil de expressar e usar ... Obrigado
IWIH

5
"iGoogle foi retirado em 1 de novembro de 2013", seu aplicativo não funciona mais
yegor256

Usei um código semelhante que foi alterado para usar o método Yahoo quotes.csv com apenas duas alterações de linha no código.
Marcus

12

outro ótimo link gratuito e de código aberto é este:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(encontrei sobre isso aqui: http://josscrowcroft.github.com/open-exchange-rates/ )

[Atualizar] :
Os dados do projeto de taxas de câmbio abertas foram movidos do GitHub.
Já está disponível em: http://openexchangerates.org/ Os
dados em formato JSON estão disponíveis em: http://openexchangerates.org/latest.json

Sem taxas de acesso, há limites de frequência , Sem XML feio - apenas livre , taxas de câmbio atualizados a cada hora no formato JSON.
Isso não é "totalmente" gratuito agora. O novo licenciamento afirma que são permitidos até 1000 acessos por mês, e então você precisa pagar. Você também precisa pagar se quiser usar o conversor de moeda única (funcionalidade básica).

[Observação: você também pode querer olhar para esta resposta. ]


1
Talvez não esteja mais funcionando
shasi kanth

1
Obrigado @dskanth por lembrar. Link e informações atualizadas. :)
zeFree

1
Um plano OpenExchangeRates grátis está disponível aqui com 1000 solicitações por mês .. é um link minúsculo, então você não vai localizá-
TheFlash

6

Eu adicionei a tabela Open Data ao YQL, você pode usá-la para recuperar dados de taxa de câmbio de yahoo.finance.

Experimente no console YQL

O formato separado por vírgulas é preferível ao invés de "onde emparelhar ('EURUSD', 'GBPUSD')", mas de qualquer forma, você pode usar ambos e até mesclá-los.


Valeu cara. Isso combinado com os documentos YQL em PHP me ajudou muito!
miCRoSCoPiC_eaRthLinG

oi, podemos adicionar o parâmetro de data, por exemplo, eu quero obter a taxa de câmbio histórica.
Elisa



3

Tente este RESTful (não tenho certeza se este é realmente um REST, já que o obtive originalmente de um SOAP, apenas tentei acessá-lo usando HTTP GET)


Não vejo onde você forneceu a "quantia" a ser convertida, mas você recebe algum número de volta ... pode explicar isso?
SpokaneDude,

1
Não aceita quantia. Isso só converterá de Moeda em Moeda, onde a quantia de Moeda é sempre um (1). Então, depende de você fazer seu algoritmo de conversão de sua quantia
Kevin,

Obrigado ... isso faz sentido. agora ...
SpokaneDude

3

O iGoogle foi retirado em 1 de novembro de 2013. Esta API não funciona mais.

Para obter a taxa de câmbio, você pode usar algo assim:

function get_exchange_rate($from, $to){
    $data = file_get_contents("http://www.google.com/ig/calculator?hl=en&q=1{$from}=?{$to}");
    preg_match('/rhs\:\s?"([0-9\.]+)/', $data, $m);
    return $m[1];
}

Você pode adicionar um cache de banco de dados lá para se certificar de que não seja limitado, etc.

Como foi observado em outras postagens / comentários, você então usaria essa taxa para calcular suas moedas




1

coinnill.com tem uma espécie de serviço da web.

http://coinmill.com/rss/AUD_USD.xml

fornecerá a taxa AUD -> USD, por exemplo. Você só precisa analisar o XML que retorna.


Esses dados parecem desatualizados. Diz que o AUD é 0,77, mas sei que é 0,69 hoje.
Adam Pierce,

Além disso, os dados úteis (as taxas de câmbio) são os únicos bits não codificados em XML! É apenas um texto simples em um CDATA ...
Rikki

1

Sinto-me compelido a acrescentar:

http://www.exchangerate-api.com/

Simples de usar com uma API RESTful limpa e a inscrição leva 5 segundos. Inclui exemplos de codificação para a maioria das principais linguagens, a maioria com 2 a 3 linhas.

As taxas são atualizadas de hora em hora, por isso é bom para a maioria dos usos e você pode obter 30.000 consultas mensais por $ 7 por mês. Nunca precisei de mais do que isso, mas as taxas são muito razoáveis ​​para volumes maiores.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.