เข้าถึงอัตราแลกเปลี่ยนสกุลเงินแบบเป็นโปรแกรม [ปิด]


112

ฉันกำลังตั้งค่าระบบการสั่งซื้อออนไลน์ แต่ฉันอยู่ในออสเตรเลียและสำหรับลูกค้าต่างชาติฉันต้องการแสดงราคาเป็นดอลลาร์สหรัฐหรือยูโรพวกเขาจึงไม่ต้องใช้ความพยายามอย่างมากในการแปลงจากดอลลาร์ออสเตรเลีย

มีใครรู้บ้างว่าฉันสามารถดึงอัตราแลกเปลี่ยนที่ทันสมัยออกจากเน็ตที่ไหนสักแห่งในรูปแบบที่ง่ายต่อการแยกวิเคราะห์ที่ฉันสามารถเข้าถึงได้จากสคริปต์ PHP ของฉัน


UPDATE:ตอนนี้ฉันได้เขียนคลาส PHP ซึ่งใช้สิ่งนี้ คุณจะได้รับรหัสจากเว็บไซต์ของฉัน


1
@Kelly: ข้อเสนอแนะที่ดีมากเนื่องจาก Google ให้บริการฟรีและมีโอกาสที่ดีที่จะยังคงอยู่ในอนาคตอันใกล้นี้: ฉันอยากจะแนะนำให้คุณส่งเป็นคำตอบ
Eric O Lebigot

1
ดูเหมือนจะแก้ไขความคิดเห็นไม่ได้ นี่คือลิงค์ใหม่jarloo.com/exchange-rate-api
Kelly

1
ขอบคุณสำหรับการแบ่งปัน @Adam Pierce! มีวิธีใดบ้างที่จะได้รับอัตราย้อนหลังด้วย?
Aris

คุณสามารถใช้ลิงค์นี้ได้เช่นกัน ฟรีเพียงสมัครและรับ API KEY jsonrates.com/docs
Gajendra K Chauhan

ใช้currencylayer.com - ให้อัตราเรียลไทม์และย้อนหลังในรูปแบบ JSON พร้อมกับตัวอย่าง PHP บางส่วน ( currencylayer.com/documentation )
Frank

คำตอบ:


71

คุณสามารถรับการแปลงสกุลเงินในรูปแบบง่ายๆจาก yahoo:

ตัวอย่างเช่นในการแปลงจาก GBP เป็น EUR: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv


ที่ทันสมัยและง่ายต่อการแยกวิเคราะห์ นี่คือสิ่งที่ฉันเป็น
Adam Pierce

4
ฉันสนใจเรื่องนี้ด้วยมีข้อมูลเกี่ยวกับสิ่งที่พารามิเตอร์นี้หมายถึงหรือไม่? โดยเฉพาะพารามิเตอร์ "f" ฉันไม่พบข้อมูลใด ๆ
Fishcake

9
การอ่านข้อมูลนี้ถูกกฎหมายหรือไม่หากคุณมีเว็บไซต์เชิงพาณิชย์
Junior Mayhé

4
การทดลองเพิ่มเติมแสดงให้เห็นว่าคุณสามารถขออัตรา Conversion หลายรายการพร้อมกันได้โดยใช้ลูกน้ำคั่นสัญลักษณ์ในพารามิเตอร์ "s" ดังนี้: download.finance.yahoo.com/d/…
Myster

3
มีวิธีระบุวันหรือไม่?
Maxim Egorushkin

40

คำตอบนี้ล่าช้ามาก แต่มีข้อมูลสำคัญที่ขาดหายไปจากคำตอบข้างต้น

หากคุณต้องการแสดงราคาที่ถูกต้องแก่ลูกค้าของคุณสิ่งสำคัญคือต้องเข้าใจว่าอัตราแลกเปลี่ยนเงินตราต่างประเทศทำงานอย่างไร

บริการ FX ส่วนใหญ่อ้างเฉพาะอัตราสปอต (ตรงกลางระหว่าง Bid และ Ask) จุดนี้เป็นชวเลขชนิดหนึ่งสำหรับอัตราแลกเปลี่ยน แต่ไม่มีใครได้รับจุดนี้เพราะคุณสามารถขายในราคาเสนอหรือซื้อตามคำขอเท่านั้น โดยปกติคุณจะมองหาสเปรดระหว่างกันอย่างน้อย 1% ดังนั้นอัตราสปอตจึงลดลง 0.5% สำหรับลูกค้าของคุณ

แต่มันไม่ได้หยุดเพียงแค่นั้นลูกค้าของคุณเกือบจะใช้บัตรเครดิตและ Visa / Mastercard / Amex ก็เรียกเก็บค่าธรรมเนียมการแลกเปลี่ยนเงินตราต่างประเทศ สิ่งเหล่านี้ไม่สำคัญในประสบการณ์ของฉันอย่างน้อย 2.5% ตัวอย่างเช่นธนาคารซิตี้แบงก์ออสเตรเลียเรียกเก็บเงิน 3.3% สิ่งเหล่านี้แตกต่างกันไปในแต่ละการ์ดดังนั้นคุณจึงไม่สามารถคาดเดาราคาสุดท้ายที่ลูกค้าของคุณจะถูกเรียกเก็บเงินได้

หากคุณต้องการเสนอราคาที่ "ถูกต้อง" ให้กับลูกค้าของคุณตามอัตราแลกเปลี่ยนคุณต้องคำนึงถึงด้านบนและจัดเตรียมบัฟเฟอร์เพื่อที่คุณจะได้ไม่ต้องเรียกเก็บเงินมากกว่าที่คุณเสนอ

FWIW ฉันได้เพิ่ม 4% ให้กับสิ่งที่การแปลง F / X จะระบุ


นอกจากนี้อัตราแลกเปลี่ยนยังมีการเปลี่ยนแปลงตลอดเวลาและธนาคารอาจคำนึงถึงอัตราเวลาเที่ยงคืนตามเวลาท้องถิ่นเท่านั้น ด้วยความผันผวนรายวัน ~ 2% จึงมีความไม่แน่นอน
Alexandre C.

1
นั่นเป็นจุดที่ดี ตอกย้ำความต้องการบัฟเฟอร์บางประเภทอย่างแน่นอนหากคุณกำลังแสดงสกุลเงินหนึ่ง แต่เรียกเก็บเงินอีกสกุลหนึ่ง สำหรับสิ่งที่คุ้มค่าด้วยการเพิ่ม 4% ของฉันฉันไม่เคยมีใครทำการปฏิเสธการชำระเงิน
philoye

ไม่ใช่ทุกธนาคารเรียกเก็บเงิน ตัวอย่างเช่นบัตรเครดิตและบัตรเดบิตจากเม็กซิโกจะแปลงสกุลเงินตามราคาที่มีในวันนั้นสำหรับการขายสกุลเงินและไม่มีอะไรเพิ่มเติม
Francisco Zarabozo

26

อาจจะดีที่จะเพิ่ม

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

ไปยังรายการ

อัตราอ้างอิงอย่างเป็นทางการจัดทำโดยธนาคารกลางยุโรปตามขั้นตอนการประสานงานประจำวันระหว่างธนาคารกลางภายในและภายนอกระบบธนาคารกลางยุโรป

ฟีดอยู่ใน XML และบางรูปแบบอื่น
โดยปกติการอัปเดตจะเกิดขึ้นในเวลา 14:15 น. (14:15 น.) ตามเวลา ECB (= เวลาแฟรงค์เฟิร์ต)


4
เพิ่งตรวจสอบ (20 นาทีหลังจากความคิดเห็นของคุณ) และสามารถใช้ได้สำหรับฉัน
Jacco

ฉันเพิ่งพยายามใช้สิ่งนี้ แต่ VB.NET ปฏิเสธที่จะใช้ XPath อย่างถูกต้อง นี่เป็นเพราะ URL ที่กำหนดเนมสเปซมีทั้ง 404ing หรือไม่
Rikki

ลิงค์นี้แสดงอัตราของเมื่อวานเสมอไม่ใช่ของวันนี้
erkanyildiz

12

ฉันเพิ่งติดตั้งสิ่งเดียวกันนี้ แต่ใช้ API ของ Google URL การสืบค้นมีลักษณะดังนี้:

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

ต้องใช้ 3 พารามิเตอร์ พารามิเตอร์แรกคือจำนวนเงินตามด้วยรหัสสกุลเงินISO 4217 ที่คุณกำลังแปลงเครื่องหมายเท่ากับและเครื่องหมายคำถามและรหัสสกุลเงินที่คุณกำลังแปลง คุณสามารถค้นหารายการของรหัสที่ Google สนับสนุนที่นี่ การตอบสนองต่อแบบสอบถามจะมีลักษณะดังนี้:

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

นี่ค่อนข้างอธิบายตัวเองได้ดังนั้นฉันจะไม่ลงรายละเอียดที่นี่ นี่คือวิธีที่ฉันจัดการกับการตอบกลับแบบสอบถาม:

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

ฉันแน่ใจว่ามันยังห่างไกลจากวิธีที่ดีที่สุดในการทำเช่นนี้ แต่ฉันยังใหม่กับ PHP หวังว่าจะช่วยได้!


2
คุณสามารถใช้ json_decode แทนการระเบิดได้หากต้องการให้เชื่อถือได้มากขึ้น
diolemo

บริการนี้มีข้อ จำกัด หรือไม่?
ไซต์

นี่เป็นวลีและใช้ง่ายเกินไป ... ขอบคุณ
IWIH

5
"iGoogle ถูกยกเลิกในวันที่ 1 พฤศจิกายน 2013" แอปของคุณใช้งานไม่ได้อีกต่อไป
yegor256

ฉันใช้รหัสที่คล้ายกันซึ่งเปลี่ยนมาใช้วิธี Yahoo quotes.csv โดยมีการเปลี่ยนแปลงโค้ดเพียงสองบรรทัด
Marcus

12

อีกลิงค์ฟรีและโอเพนซอร์ซที่ยอดเยี่ยมมากคือ:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(ฉันพบเกี่ยวกับเรื่องนี้ที่นี่: http://josscrowcroft.github.com/open-exchange-rates/ )

[อัปเดต] :
ข้อมูลโครงการเปิดอัตราแลกเปลี่ยนถูกย้ายออกจาก GitHub
สามารถดูได้ที่: http://openexchangerates.org/ สามารถดู
ข้อมูลในรูปแบบ JSON ได้ที่: http://openexchangerates.org/latest.json

ไม่มีค่าธรรมเนียมการเข้าถึงไม่ จำกัด อัตราไม่มี XML ที่น่าเกลียด - ฟรีอัตราแลกเปลี่ยนที่อัปเดตทุกชั่วโมงในรูปแบบ JSON
ตอนนี้ยังไม่ฟรี "ทั้งหมด" ใบอนุญาตใหม่ระบุว่าอนุญาตให้เข้าชมได้สูงสุด 1,000 ครั้งต่อเดือนจากนั้นคุณต้องจ่าย นอกจากนี้คุณยังต้องจ่ายหากคุณต้องการใช้ตัวแปลงสกุลเงินเดียว (ฟังก์ชันพื้นฐาน)

[หมายเหตุ: คุณอาจต้องการดูคำตอบนี้เช่นกัน ]


1
บางทีมันอาจจะไม่ทำงานอีกต่อไป
shasi kanth

1
ขอบคุณ @dskanth ที่เตือน อัปเดตลิงก์และข้อมูลแล้ว :)
zeFree

1
แผน OpenExchangeRates ฟรีมีให้ที่นี่พร้อมคำขอ 1,000 รายการต่อเดือน .. เป็นลิงก์เล็ก ๆ ดังนั้นคุณจะไม่เห็นในกรณีส่วนใหญ่ .. openexchangerates.org/signup/free
TheFlash

6

ฉันเพิ่ม Open Data table ไปยัง YQL คุณสามารถใช้เพื่อดึงข้อมูลอัตราแลกเปลี่ยนจาก yahoo.finance

ลองใช้ในคอนโซล YQL

รูปแบบที่คั่นด้วยจุลภาคเป็นที่นิยมมากกว่า "โดยที่คู่ใน ('EURUSD', 'GBPUSD')" แต่อย่างไรก็ตามคุณสามารถใช้ทั้งคู่และผสมกันได้


ขอบคุณครับ. สิ่งนี้รวมกับเอกสาร YQL บน PHP ช่วยฉันได้มาก!
miCRoSCoPiC_eaRthLinG

สวัสดีเราสามารถเพิ่มพารามิเตอร์วันที่เช่นฉันต้องการรับอัตราแลกเปลี่ยนย้อนหลัง
Elisa

4

นี่คือบริการสบู่ที่เสนออัตราแลกเปลี่ยน

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


4
น่าเสียดายที่มันเป็น SOAP ไม่ใช่ REST นอกจากนั้นยังมีสิ่งอำนวยความสะดวกที่เป็นประโยชน์
David Arno

ฟรีและมีเสถียรภาพหรือไม่? ฉันจะสามารถจัดส่งซอฟต์แวร์ที่ใช้สิ่งนี้ได้หรือไม่

4
เห็นได้ชัดว่าพวกเขาหยุดทำสิ่งนี้ @ 31.12.2008
Sevki


3

ลองใช้ RESTful นี้ (ฉันไม่แน่ใจว่านี่เป็น REST จริง ๆ หรือไม่เนื่องจากฉันได้รับสิ่งนี้มาจาก SOAP ฉันเพิ่งพยายามเข้าถึงโดยใช้ HTTP GET)


ฉันไม่เห็นว่าคุณให้ "จำนวน" ที่จะแปลงจากที่ใด แต่คุณได้รับตัวเลขกลับคืนมา ... โปรดอธิบายเรื่องนี้ได้ไหม
SpokaneDude

1
ไม่รับจำนวนเงิน สิ่งนี้จะแปลงจากสกุลเงินเป็นสกุลเงินเป็นสกุลเงินเท่านั้นโดยที่จำนวนเงินจากสกุลเงินจะเป็นหนึ่ง (1) เสมอ จากนั้นก็ขึ้นอยู่กับคุณที่จะสร้างอัลกอริทึมในการแปลงจำนวนเงินของคุณ
Kevin

ขอบคุณ ... ที่เข้าท่า ตอนนี้ ...
SpokaneDude

3

iGoogle ถูกยกเลิกในวันที่ 1 พฤศจิกายน 2013 API นี้ใช้งานไม่ได้อีกต่อไป

หากต้องการรับอัตราแลกเปลี่ยนคุณสามารถใช้สิ่งนี้:

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

คุณสามารถเพิ่มแคช DB ในนั้นเพื่อให้แน่ใจว่าคุณจะไม่ถูกควบคุม ฯลฯ

ตามที่ได้ระบุไว้ในโพสต์ / ความคิดเห็นอื่น ๆ คุณจะใช้อัตรานี้ในการคำนวณสกุลเงินของคุณ




1

coinnill.com มีบริการเว็บประเภทต่างๆ

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

จะให้อัตรา AUD -> USD เป็นต้น คุณจะต้องแยกวิเคราะห์ XML ที่กลับมา


ข้อมูลนั้นดูเหมือนล้าสมัย มันบอกว่า AUD คือ 0.77 แต่วันนี้ฉันรู้ว่ามันคือ 0.69
Adam Pierce

นอกจากนี้ข้อมูลที่มีประโยชน์ (อัตราแลกเปลี่ยน) เป็นบิตเดียวที่ไม่ได้เข้ารหัสใน XML! เป็นเพียงข้อความธรรมดาใน CDATA ...
Rikki

1

ฉันรู้สึกว่าจำเป็นต้องเพิ่ม:

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

ใช้งานง่ายด้วย RESTful API ที่สะอาดและการสมัครใช้เวลา 5 วินาที รวมถึงตัวอย่างการเข้ารหัสสำหรับภาษาหลัก ๆ ส่วนใหญ่มีความยาว 2-3 บรรทัด

ราคาได้รับการอัปเดตทุกชั่วโมงดังนั้นจึงเหมาะสำหรับการใช้งานส่วนใหญ่และคุณจะได้รับ 30000 คำค้นหารายเดือนในราคา $ 7 ต่อเดือน ฉันไม่เคยต้องการมากกว่านั้น แต่อัตรานี้เหมาะสมมากสำหรับปริมาณที่สูงขึ้น


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.