Η ακόλουθη λύση που είναι συμβατή με εκδόσεις 2.x.x και 3.x.x, επιλύει το πρόβλημα μέσω της δωρεάν υπηρεσίας λήψης ισοτιμιών free.currencyconverterapi.com.
1. Στο https://free.currencyconverterapi.com/ πατάμε το κουμπί "Get Your Free API Key".
Στο επόμενο βήμα δίνουμε το email μας όπου θα λάβουμε το API key για δωρεάν κλήσεις στην υπηρεσία.
2. Σε ένα text editor ανοίγουμε το αρχείο: admin/model/localisation/currency.php
3. Βρίσκουμε το ακόλουθο:
public function refresh($force = false) {
Και το μετονομάζουμε σε:
public function old_refresh($force = false) {
4. Επάνω από την γραμμή:
public function old_refresh($force = false) {
Προσθέτουμε την ακόλουθη μέθοδο αντικαθιστώντας το XXXXXXX στη μεταβλητή $api_key, με το API key που λάβαμε στο email.
public function refresh($force = false) {
/* Compatible with currencyconverterapi.com - API v7.0 */
$api_key = 'XXXXXXXX';
$default_currency = $this->config->get('config_currency');
if ($force) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
} else {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND date_modified < '" . $this->db->escape(date('Y-m-d H:i:s', strtotime('-1 day'))) . "'");
}
if ($query->num_rows) {
foreach ($query->rows as $result) {
$currency = $result['code'];
$currency_pair = $default_currency . '_' . $currency;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://free.currconv.com/api/v7/convert?q=' . $currency_pair . '&compact=ultra&apiKey=' . $api_key);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$response = curl_exec($curl);
curl_close($curl);
$response = json_decode($response);
if (is_object($response) && !isset($response->error)) {
$value = round($response->$currency_pair, 8);
if (!empty((float)$value) && (float)$value > 0) {
$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($currency) . "'");
}
$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $default_currency . "'");
$this->cache->delete('currency');
} else {
$this->log->write(var_export($response, true));
}
}
}
}
Σημείωση: Η κλήση στο API γίνεται ξεχωριστά για κάθε νόμισμα γιατί η δωρεάν υπηρεσία ελέγχου ισοτιμιών υποστηρίζει έως δύο νομίσματα ανά κλήση.
OpenCart-Hellas.gr - Administrator & Founder
PeoplesCode.com - Επίσημος Αντιπρόσωπος OpenCart | Extensions - Φιλοξενία - Αναβάθμιση - Μεταφορά - Τεχνική Υποστήριξη OpenCart
Ελληνική μετάφραση & Επεκτάσεις OpenCart