资讯专栏INFORMATION COLUMN

magento 货币换算

venmos / 804人阅读

摘要:需要注意的是,凡是涉及到两个币种之间转换的,都必须确保系统中已经导入了两币种之间的汇率。更多币种之间的方法可以到助手类中找到。将人民币转换为美金将美金转换为人民币汇率的导入后台页面有个按钮点击导入货币汇率。

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的货币汇率

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21532.html

相关文章

  • Magento 1 设置多站点、多域名、多语言、多货币

    摘要:多域名设置的最后一步,修改项目根木的文件打开文件在最后加入这里的新建时的输入框的值多货币的设置或设置多货币再选择下方的依次设置基础货币默认货币所允许的货币在选择多个值后,保存,实现多货币的设置在去设置货币汇率。 1、登录后台system->manage stores多站点选择create website: showImg(https://segmentfault.com/img/bVv...

    dackel 评论0 收藏0
  • 漫谈 | 小雪的第38次相亲,和一个矿工

    摘要:小雪又问你到底挖的啥矿呀比特币。据说,世界上第一个区块链矿工叫中本聪。但随着以比特币为首的虚拟货币暴涨,挖矿成为了一个完整的产业链,有专门的矿机矿场矿池等。 某个夏日,晴。某闹市区的一个咖啡厅里,一男一女对桌而坐。两人相看无言,不太自在,于是各自开始看自己的手机。 女孩叫小雪,大学毕业5年了,至今还没对象,父母急得团团转,到处找人安排她相亲。这是小雪的第38次相亲。爸妈说这人是挖矿的,...

    B0B0 评论0 收藏0
  • [译]Magento2 高级路由

    摘要:以上是的的目录路由器配置。考虑重写模块以上文件文件使用的操作字符串。例如,如果你想回到第一个模块在这个系列和添加前端端点,所有你需要做的就是添加以下配置和以下控制器文件。默认操作字符串段我们从先进的路由移动之前,有一些最后要提。 今天,我们要介绍的几个Magento的路由系统的高级功能,并讨论一些看似急性锐边的历史。虽然所有在这篇文章中提供的技术可能不是最好的方式来实现自己的目标,作为...

    PumpkinDylan 评论0 收藏0
  • 用云服务器挖矿可以赚钱?云服务器挖矿的优点和缺点

    摘要:云服务器挖矿的缺点这就是为什么你可能不想考虑云服务器的原因欺诈风险不透明的挖矿作业不能感受到折腾挖矿硬件的乐趣利润降低,云服务器需要支付一定的成本根据比特币的价格,采矿作业可能停止的合同警告缺乏控制和灵活性。用云服务器挖矿可以赚钱?如果你想嫌购买挖矿机或者自己管理硬件设备的麻烦,但是依旧想投资比特币的开采,那么这或许可以利用现在所谓的云服务器来实现云挖矿,简单地说,云挖掘就是使用来自远程数据...

    xiaolinbang 评论0 收藏0
  • Magento2.x 如何创建一个Module?

    摘要:今天记录下如何创建一个,直接进入正题。创建好我们的和之后,接下来就需要创建一系列的文件,我们依次来说每个文件如何创建。 Magento2.x版本已经发布一段时间了,到现在为止已经到2.2了,最新版本可以关注Magento在github上的更新。今天记录下Magento2.1如何创建一个module,直接进入正题。 安装Magento2后,进入项目的根目录后,进入/app目录,只有app...

    bbbbbb 评论0 收藏0

发表评论

0条评论

venmos

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<