如何用ExchangeRatesApi.io设置货币兑换器

472 阅读6分钟

越来越多的产品和服务是在网上获取和购买的。由于我们生活在一个地球村,如果我们有一个网上商店,我们的许多访问者很可能是在一个与我们自己不同的国家,并使用与我们自己不同的货币。

如果我们想为他们提供一个良好的用户体验,以增加他们购买我们的产品的机会,并再次访问网站,有一些非常简单的事情我们可以做。用他们自己的货币显示购物项目的价格。为了达到这个目的,我们可以利用当时两种货币之间的汇率,将商品的价格从基础货币(如欧元)转换成访问者的货币(如人民币)。

货币汇率不断变化,以小时为单位(甚至更快)。这意味着,我们不能在我们的应用程序中存储一个预先定义的汇率列表;这些汇率必须实时收集。然而,这在今天并不是一个问题。由于有了提供货币兑换数据的API,我们可以毫不费力地在我们的在线商店中添加一个货币兑换器。

在这篇文章中,我们将介绍[ExchangeRatesApi.io],一个流行的API解决方案,提供168种货币的当前和历史汇率数据。

我们想要实现的目标

简单地说,我们想做亚马逊正在做的事。让用户在我们的网上商店选择以他们自己选择的货币显示价格。

当访问amazon.co.uk的一个产品页面时,我们会看到以英镑为单位的价格。

但是,如果我们愿意,我们也可以看到不同货币的价格。在国家/地区设置中,有一个选项可以改变货币。

点击 "更改 "后,我们会看到一个选择输入,其中包含几种预定义的货币。在这些货币中,我选择了欧元。

最后,回到产品页面,价格以欧元显示。

通过API访问汇率数据,我们可以为我们自己的在线商店实现同样的功能。

我们如何做到这一点

ExchangeRatesApi.io提供一个REST API,提供168种货币的最新外汇数据。它总是最新的,从世界各地的商业来源和银行的广泛基础上汇编数据。

[在注册了他们的服务]后(提示:他们有一个[免费层]),我们将被分配一个API访问密钥。

我们抓住我们的API访问密钥,并将其附加到端点

https://api.exchangeratesapi.io/v1/latest
 ?access_key=YOUR_API_KEY

为了可视化响应,在你的浏览器中复制/粘贴端点。

从上图中可以看出,所有168种货币的数据都已被检索出来。为了将结果缩小到其中的几个,我们[通过参数表示货币代码][symbols].

例如,为了检索美元、英镑、澳元、日元和人民币的数据(与欧元比较,欧元是默认的基础货币),我们执行这个端点。

https://api.exchangeratesapi.io/v1/latest
 ?access_key=YOUR_API_KEY
 &symbols=USD,GBP,AUD,JPY,CNY

响应是以下内容。

{
 "success": true,
 "timestamp": 1620904263,
 "base": "EUR",
 "date": "2021-05-13",
 "rates": {
   "USD": 1.207197,
   "GBP": 0.860689,
   "AUD": 1.568196,
   "JPY": 132.334216,
   "CNY": 7.793428
 }
}

我们可以检索到什么数据

ExchangeRatesApi.io提供几个REST端点,以获取不同的数据集。根据订阅的计划,端点可能有,也可能没有(他们的定价页面解释了每个层级涵盖的功能)。

下面指出的端点必须连接到https://api.exchangeratesapi.io/v1/ (例如:latest 变成https://api.exchangeratesapi.io/v1/latest ),并在access_key 参数中加入你的API访问密钥。

最新费率

latest端点实时返回所有可用货币或特定货币的汇率数据。

货币转换

convert端点可以将一个金额从任何货币转换为支持的168种货币中的任何其他货币。

历史汇率

这个端点的形状YYYY-MM-DD(如2021-03-20),对应于我们要检索历史汇率信息的日期。

时间序列数据

timeseries端点返回两个指定日期之间的每日汇率历史数据,最大时间范围为365天。

波动数据

fluctuation端点返回指定日期之间的波动数据,最大时间范围为365天。

从API中获取数据

为了实现货币转换,我们可以使用convert 端点(为此我们需要订阅基本层)。

https://api.exchangeratesapi.io/v1/convert
 ?access_key=YOUR_API_KEY
 &from=GBP
 &to=JPY
 &amount=25

我们将获得的响应看起来像这样。

{
 "success": true,
 "query": {
   "from": "GBP",
   "to": "JPY",
   "amount": 25
 },
 "info": {
   "timestamp": 1620904845,
   "rate": 154.245331
 },
 "historical": "",
 "date": "2021-05-14",
 "result": 3856.079212
}

由于数据是通过REST API暴露的,我们可以方便地检索任何基于任何堆栈的应用程序,无论它是在客户端还是在服务器端运行,而不需要安装任何额外的库。

客户端

下面的JavaScript代码连接到API,并在控制台中打印出转换后的金额和汇率。

// Set endpoint and your access key
const access_key = 'YOUR_API_KEY';
const from = 'GPB';
const to = 'JPY';
const amount = 25;
const url = https://api.exchangeratesapi.io/v1/convert?access_key=${ access_key }&from=${ from }&to=${ to }&amount=${ amount };

// Get the most recent exchange rates via the "latest" endpoint:
fetch(url)
 .then(response => response.json())
 .then(data => {
   // If our tier does not support the requested endpoint, we will get an error
   if (data.error) {
     console.log('Error:', data.error);
     return;
   }

   // We got the data
   console.log('Success:', data);
   console.log('Converted amount: ' + data.result);
   console.log('(Exchange rate: ' + data.info.rate + ')');
 })
 .catch((error) => {
   console.error('Error:', error);
 });

服务器端

下面的代码演示了如何在一个PHP应用程序中连接到REST API,并打印出转换后的结果。

同样的程序也可以在其他语言中实现。

  • 定义端点的URL,附上你的API访问密钥。
  • 连接到端点,以JSON格式检索其响应。
  • 将JSON数据解码成一个对象/数组。
  • result 属性下获取转换后的金额。
// Set endpoint and your access key
$access_key = 'YOUR_API_KEY';
$from = 'GBP';
$to = 'JPY';
$amount = 25;

// Initialize CURL:
$ch = curl_init("https://api.exchangeratesapi.io/v1/convert?access_key=${access_key}&from=${from}&to=${to}&amount=${amount}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Get the JSON data:
$json = curl_exec($ch);
curl_close($ch);

// Decode JSON response:
$conversionResult = json_decode($json, true);

// Access the converted amount
echo $conversionResult['result'];

结论

ExchangeRatesApi.io是作为一个开源项目诞生的,目的是提供由欧洲中央银行发布的当前和历史外汇汇率,并以Python语言编写。

如果你想为你的网上商店纳入货币转换,模仿亚马逊,为你的访问者提供一个引人注目的用户体验,那么你可以下载并安装这个开源项目。

而且你还可以让它变得更容易。如果你想让你的货币转换器在短时间内工作,适用于任何编程语言,访问总是最新的数据,包括广泛的商业来源,并从一个超快的API,正常运行时间几乎为100%(在过去12个月中为99.9%),然后检查ExchangeRatesApi.io