Akses nilai tukar mata uang secara terprogram [ditutup]

112

Saya menyiapkan sistem pemesanan online tetapi saya berada di Australia dan untuk pelanggan internasional saya ingin menunjukkan harga dalam dolar AS atau Euro sehingga mereka tidak perlu berusaha keras untuk mengonversi dari dolar Australia.

Adakah yang tahu jika saya dapat menarik nilai tukar terkini dari internet di suatu tempat dalam format yang mudah diurai yang dapat saya akses dari skrip PHP saya?


UPDATE: Saya sekarang telah menulis kelas PHP yang mengimplementasikan ini. Anda bisa mendapatkan kode dari situs saya .

Adam Pierce
sumber
1
@ Kelly: Saran yang sangat bagus, karena Google gratis, dan memiliki peluang besar untuk tetap ada di masa mendatang: Saya ingin menyarankan Anda mengirimkannya sebagai jawaban.
Eric O Lebigot
1
Sepertinya tidak bisa mengedit komentar. Ini adalah tautan baru jarloo.com/exchange-rate-api
Kelly
1
terima kasih telah berbagi @Adam Pierce! Apakah ada cara lain untuk mendapatkan harga historis?
Aris
Anda juga dapat menggunakan tautan ini. Gratis. Cukup daftar dan dapatkan KUNCI API. jsonrates.com/docs
Gajendra K Chauhan
Gunakan currencylayer.com - mereka menyediakan kurs real-time & historis dalam format JSON, bersama dengan beberapa contoh PHP ( currencylayer.com/documentation )
Frank

Jawaban:

71

Anda bisa mendapatkan konversi mata uang dalam format sederhana dari yahoo:

Misalnya, untuk mengonversi dari GBP ke EUR: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv

Greg
sumber
Itu mutakhir dan mudah diurai. Inilah yang saya kejar.
Adam Pierce
4
Saya juga tertarik dengan ini, apakah ada informasi tentang apa kepanjangan dari parameter? Secara khusus, parameter "f". Saya tidak dapat menemukan info apa pun di mana pun.
Fishcake
9
Apakah legal untuk membaca data ini jika Anda memiliki situs web komersial?
Junior Mayhé
4
Eksperimen lebih lanjut menunjukkan Anda dapat meminta beberapa tingkat konversi sekaligus dengan memisahkan koma simbol dalam parameter 's' seperti: download.finance.yahoo.com/d/…
Myster
3
Apakah ada cara untuk menentukan tanggal?
Maxim Egorushkin
40

Jawaban ini SANGAT terlambat, tetapi ada sedikit info penting yang hilang dari jawaban di atas.

Jika Anda ingin menunjukkan harga yang akurat kepada pelanggan Anda, penting untuk memahami cara kerja nilai tukar mata uang asing.

Sebagian besar layanan FX hanya mengutip harga spot (pertengahan antara Bid dan Ask). Spot adalah semacam kependekan dari nilai tukar, tetapi tidak ada yang mendapat spot karena Anda hanya dapat menjual saat penawaran atau membeli saat diminta. Anda biasanya melihat setidaknya 1% spread di antara mereka, jadi harga spot diskon 0,5% untuk pelanggan Anda.

Namun tidak berhenti sampai di situ, pelanggan Anda hampir pasti menggunakan kartu kredit dan Visa / Mastercard / Amex semuanya membebankan biaya valuta asing. Ini tidak sepele dalam pengalaman saya, setidaknya 2,5%. Misalnya, Citibank Australia mengenakan biaya 3,3%. Ini bervariasi dari satu kartu ke kartu lainnya sehingga tidak ada cara bagi Anda untuk memprediksi harga akhir yang akan ditagih pelanggan Anda.

Jika Anda ingin mengutip harga yang "akurat" kepada pelanggan Anda berdasarkan nilai tukar, Anda perlu memperhitungkan faktor di atas dan menyediakan penyangga sehingga Anda tidak akan mengenakan biaya lebih dari yang Anda kutip.

FWIW, saya telah menambahkan 4% ke apa yang ditunjukkan oleh konversi F / X.

philoye
sumber
Selain itu, kurs valas berubah sepanjang waktu, dan bank hanya dapat memperhitungkan kurs pada tengah malam, waktu setempat. Dengan ~ 2% volatilitas harian, ada adalah ketidakyakinan.
Alexandre C.
1
Itu poin yang bagus. Jelas memperkuat kebutuhan akan buffer dari beberapa jenis jika Anda menampilkan satu mata uang, tetapi menagih yang lain. Untuk apa nilainya, dengan bantalan 4% saya, saya tidak pernah meminta siapa pun melakukan tolak bayar.
philoye
Tidak semua bank mengenakan biaya itu. Kartu kredit dan debit dari Meksiko, misalnya, hanya akan mengonversi mata uang pada harga yang mereka miliki hari itu untuk mata uang yang dijual, dan tidak lebih.
Francisco Zarabozo
26

Mungkin menyenangkan untuk ditambahkan

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

ke daftar.

Suku bunga referensi resmi yang diberikan oleh Bank Sentral Eropa berdasarkan prosedur konser harian reguler antara bank sentral di dalam dan di luar Sistem Bank Sentral Eropa.

Umpan dalam XML dan beberapa format lainnya .
Pembaruan biasanya dilakukan pada pukul 2.15 siang (14:15) waktu ECB (= waktu Frankfurt).

Jacco
sumber
4
Baru saja diperiksa (20 menit setelah komentar Anda) dan tersedia untuk saya.
Jacco
Saya baru saja mencoba menggunakan ini, tetapi VB.NET menolak untuk melakukan XPath dengan benar. Apakah ini karena URL yang menentukan ruang nama sama-sama 404?
Rikki
tautan ini selalu menunjukkan tarif kemarin, bukan hari ini.
erkanyildiz
12

Saya baru-baru ini menerapkan hal yang sama, tetapi menggunakan API Google. URL kueri terlihat seperti ini:

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

Dibutuhkan 3 parameter. Parameter pertama adalah jumlah, diikuti dengan kode mata uang ISO 4217 yang Anda konversi, tanda sama dengan dan tanda tanya, dan kode mata uang yang Anda konversi. Anda dapat menemukan daftar kode yang didukung Google di sini . Tanggapan atas kueri akan terlihat seperti ini:

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

Ini cukup jelas, jadi saya tidak akan membahas detailnya di sini. Beginilah cara saya menangani respons kueri:

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;
}

Saya yakin ini jauh dari cara paling elegan untuk melakukan ini, tetapi saya cukup baru mengenal PHP. Semoga membantu!

Natsukane
sumber
2
Anda dapat menggunakan json_decode daripada explode jika Anda ingin lebih dapat diandalkan.
diolemo
apakah ada batasan dengan layanan ini?
situs
Ini terlalu mudah untuk diucapkan dan digunakan ... Terima kasih
IWIH
5
"iGoogle telah dihentikan pada tanggal 1 November 2013", aplikasi Anda tidak berfungsi lagi
yegor256
Saya menggunakan kode serupa yang telah diubah untuk menggunakan metode Yahoo quotes.csv dengan hanya dua baris perubahan dalam kode.
Marcus
12

Tautan sumber terbuka dan gratis lainnya yang sangat bagus adalah ini:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(Saya menemukannya di sini: http://josscrowcroft.github.com/open-exchange-rates/ )

[Pembaruan] :
Data proyek Nilai Tukar Terbuka telah dipindahkan dari GitHub.
Sekarang tersedia di: http://openexchangerates.org/
Data dalam format JSON tersedia di: http://openexchangerates.org/latest.json

Tanpa biaya akses, tanpa batas nilai , Tanpa XML jelek - hanya gratis , nilai tukar yang diperbarui setiap jam dalam format JSON.
Ini tidak "sepenuhnya" gratis sekarang. Pemberian lisensi baru menyatakan bahwa hingga 1000 klik per bulan diperbolehkan, dan kemudian Anda harus membayar. Anda juga perlu membayar jika ingin menggunakan konverter mata uang tunggal (fungsi dasar).

[Catatan: Anda mungkin ingin melihat jawaban ini juga. ]

zeGratis
sumber
1
Mungkin itu tidak berfungsi lagi
shasi kanth
1
Terima kasih @dskanth untuk mengingatkan. Tautan dan informasi diperbarui. :)
zeFree
1
Sebuah OpenExchangeRates rencana bebas tersedia di sini dengan 1000 permintaan sebulan .. yang link kecil sehingga Anda tidak akan menemukannya dalam kebanyakan kasus .. openexchangerates.org/signup/free
TheFlash
6

Saya menambahkan tabel Open Data ke YQL, Anda dapat menggunakannya untuk mengambil data nilai tukar dari yahoo.finance.

Cobalah di konsol YQL

Format yang dipisahkan koma lebih disukai daripada "di mana pasangan dalam ('EURUSD', 'GBPUSD')" tetapi bagaimanapun, Anda dapat menggunakan keduanya dan bahkan mencampurkannya.

mtelis
sumber
Terima kasih Bung. Ini dikombinasikan dengan dokumen YQL di PHP sangat membantu saya!
miCRoSCoPiC_eaRthLinG
hai, dapatkah kita menambahkan parameter tanggal misalnya saya ingin mendapatkan nilai tukar historis.
Elisa
4

Berikut adalah layanan Sabun yang menawarkan nilai tukar

http://www.newyorkfed.org/markets/pilotfx.html

Ólafur Waage
sumber
4
Malu itu SOAP dan bukan REST. Selain itu, ini adalah fasilitas yang berguna
David Arno
Apakah ini gratis dan stabil? Apakah saya dapat mengirimkan perangkat lunak yang mengandalkan ini?
4
tampaknya mereka berhenti melakukan ini @ 31.12.2008
Sevki
3

Coba RESTful ini (Saya tidak yakin apakah ini benar-benar REST, karena saya mendapatkan ini awalnya dari SOAP, saya hanya mencoba mengaksesnya menggunakan HTTP GET)

Kevin
sumber
Saya tidak melihat di mana Anda memberikan "jumlah" untuk dikonversi, namun Anda mendapatkan beberapa nomor kembali ... dapatkah Anda menjelaskan ini?
SpokaneDude
1
Itu tidak menerima jumlah. Ini hanya akan mengubah fromCurrency ke toCurrency di mana jumlah fromCurrency selalu satu (1). Maka terserah Anda untuk membuat algoritme untuk mengonversi jumlah Anda
Kevin
Terima kasih ... itu masuk akal. sekarang ...
SpokaneDude
3

iGoogle telah dihentikan pada tanggal 1 November 2013. API ini tidak lagi berfungsi.

Untuk mendapatkan nilai tukar Anda bisa menggunakan sesuatu seperti ini:

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];
}

Anda dapat menambahkan cache DB di sana untuk memastikan Anda tidak terhambat dll.

Seperti yang telah dicatat pada posting / komentar lain, Anda kemudian akan menggunakan tarif ini untuk menghitung mata uang Anda

oodavid
sumber
2

XE.com menyediakan umpan untuk nilai tukar mereka. Tidak gratis.

jop
sumber
2

Oanda.com memperlihatkan nilai tukar mata uang sebagai API XML, tetapi tidak gratis

Eugene Osovetsky
sumber
1

coinnill.com memiliki semacam layanan web.

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

akan memberi Anda kurs AUD -> USD misalnya. Anda hanya perlu mengurai XML yang kembali.

cagcowboy.dll
sumber
Data itu sepertinya sudah usang. Dikatakan AUD adalah 0,77 tetapi saya tahu itu 0,69 hari ini.
Adam Pierce
Selain itu, bagian data yang berguna (nilai tukar) adalah satu-satunya bit yang tidak dikodekan dalam XML! Ini hanya teks biasa dalam CDATA ...
Rikki
1

Saya merasa terdorong untuk menambahkan:

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

Sangat mudah digunakan dengan RESTful API yang bersih dan pendaftaran membutuhkan waktu 5 detik. Termasuk contoh pengkodean untuk sebagian besar bahasa utama, sebagian besar terdiri dari 2-3 baris.

Tarif diperbarui setiap jam, jadi tidak masalah untuk sebagian besar penggunaan, dan Anda bisa mendapatkan 30.000 kueri bulanan seharga $ 7 sebulan. Saya tidak pernah membutuhkan lebih dari itu, tetapi tarifnya sangat wajar untuk volume yang lebih tinggi.

Alex Recarey
sumber