当前位置: 首页 > news >正文

magento 货币换算

1、获取当前店铺的货币方法:
  当前店铺的基准货币:$baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode();
 $CurrentCurrencyCode = Mage::app()->getStore()->getCurrentCurrencyCode();
 $CurrentCurrencySymnol = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol();
 $CurrentCurrencyName = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getName();
2、获取自定义货币的符号,code,返回的是一个二维数组
  $currencyDate = Mage::getModel('currencysymbol/system_currencysymbol')->getCurrencySymbolsData();
//获取系统默认的结算币种
$baseCurrencyCode = Mage::app()->getBaseCurrencyCode();

//获取所有系统可用结算币种
$allowedCurrencies = Mage::getModel('directory/currency')
    ->getConfigAllowCurrencies();

//获取两个币种之间的汇率
$currencyRates = Mage::getModel('directory/currency')
    ->getCurrencyRates($baseCurrencyCode, array_values($allowedCurrencies));

下面是几个常用的货币转换方法。需要注意的是,凡是涉及到两个币种之间转换的,都必须确保系统中已经导入了两币种之间的汇率。更多币种之间的方法可以到directory/data助手类中找到。

// 将100人民币转换为美金
$Price = Mage::helper('directory')->currencyConvert(100, 'CNY', 'USD');
//将100美金转换为人民币
$Price = Mage::helper('directory')->currencyConvert(100, 'USD', 'CNY');

汇率的导入:
magento后台currency rate页面有个Import按钮:
图片描述
点击import导入货币汇率。
汇率导入的方法:

class Mage_Adminhtml_System_CurrencyController extends Mage_Adminhtml_Controller_Action
{
    public function fetchRatesAction()
    {
        try {
            $service = $this->getRequest()->getParam('rate_services');/*后台Import Service 的值*/
            $this->_getSession()->setCurrencyRateService($service);
            if( !$service ) {
                throw new Exception(Mage::helper('adminhtml')->__('Invalid Import Service Specified'));
            }
            try {/*实例化Webservicex这个Model,magento自带的是Webservicex*/
                $importModel = Mage::getModel(
                    Mage::getConfig()->getNode('global/currency/import/services/' . $service . '/model')->asArray()
                );
            } catch (Exception $e) {
                Mage::throwException(Mage::helper('adminhtml')->__('Unable to initialize import model'));
            }
            $rates = $importModel->fetchRates();
            $errors = $importModel->getMessages();
            if( sizeof($errors) > 0 ) {
                foreach ($errors as $error) {
                    Mage::getSingleton('adminhtml/session')->addWarning($error);
                }
                Mage::getSingleton('adminhtml/session')->addWarning(Mage::helper('adminhtml')->__('All possible rates were fetched, please click on "Save" to apply'));
            } else {
                Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('All rates were fetched, please click on "Save" to apply'));
            }

            Mage::getSingleton('adminhtml/session')->setRates($rates);
        }
        catch (Exception $e){
            Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        }
        $this->_redirect('*/*/');
    }
}

下面是Webservicx的文件路径:
图片描述

说明:
$rates = $importModel->fetchRates();这不调用的方法在下面可以找到:

abstract class Mage_Directory_Model_Currency_Import_Abstract
{
/*Webservicex继承这个Model*/
 public function fetchRates()
    {
        $data = array();
        $currencies = $this->_getCurrencyCodes();/*获取website所有允许的货币code*/
        $defaultCurrencies = $this->_getDefaultCurrencyCodes();/*获取website中默认货币code*/
        @set_time_limit(0);/*设置程序执行时间,为零表示,执行直到程序结束(因为要去第三方获取资源,所以较长)*/
        foreach ($defaultCurrencies as $currencyFrom) {
            if (!isset($data[$currencyFrom])) {
                $data[$currencyFrom] = array();
            }

            foreach ($currencies as $currencyTo) {
                if ($currencyFrom == $currencyTo) {
                    $data[$currencyFrom][$currencyTo] = $this->_numberFormat(1);
                }
                else {
                    $data[$currencyFrom][$currencyTo] = $this->_numberFormat($this->_convert($currencyFrom, $currencyTo));
                }
            }
            ksort($data[$currencyFrom]);
        }

        return $data;
    }
}

根据以上几个方法,可以写一个定时任务,按时更新store的货币汇率

相关文章:

  • iOS -- tableView顶部留白
  • C链表的简单案例
  • Java与面向对象设计
  • TCP与UDP的区别
  • Mysql Order By 字符串排序,mysql 字符串order by
  • Java7,AutoClosable
  • Java循环练习:婚礼上的谎言
  • yum命令使用大全   软件安装
  • Linux信号
  • 云计算如何结合DevOps推动软件交付成功
  • gnome-boxes 的安装与使用
  • ETL简介
  • 前端学习笔记之观察者模式
  • LeetCode: Min Stack 最小栈 Java
  • HTTP 之 套接字
  • C++入门教程(10):for 语句
  • CentOS6 编译安装 redis-3.2.3
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • exif信息对照
  • HTTP请求重发
  • Python3爬取英雄联盟英雄皮肤大图
  • rc-form之最单纯情况
  • React系列之 Redux 架构模式
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • v-if和v-for连用出现的问题
  • 测试如何在敏捷团队中工作?
  • 分享几个不错的工具
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 聊聊flink的BlobWriter
  • 聊聊flink的TableFactory
  • 全栈开发——Linux
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 事件委托的小应用
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 微信支付JSAPI,实测!终极方案
  • mysql面试题分组并合并列
  • 函数计算新功能-----支持C#函数
  • 选择阿里云数据库HBase版十大理由
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #每日一题合集#牛客JZ23-JZ33
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (06)金属布线——为半导体注入生命的连接
  • (1)(1.11) SiK Radio v2(一)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)Windows2003安全设置/维护
  • .net core 控制台应用程序读取配置文件app.config
  • .Net Remoting常用部署结构
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。