Magento - 商店视图和多种货币 - 始终使用基础货币结帐

时间:2014-12-19 15:02:08

标签: php magento paypal currency

我有一个magento网站

  • 我们有一家商店
  • 在商店中,我们有多个商店视图(美国,欧盟和英国)
  • 每个商店视图都有自己的货币等。
  • 默认配置(主要)
  • 的基础货币为GBP

我的问题是显示货币运作良好。每个商店视图都有自己的个人价格(没有自动转换)。一切似乎都在起作用。但是,在最终付款电子邮件和与支付提供商(PayPal / Sage)的实际连接。始终使用基础货币。虽然显示屏以每个商店视图的货币显示。

我的问题是为什么商店查看货币不用于PayPal,电子邮件等。虽然金额,显示货币等工作正常?

3 个答案:

答案 0 :(得分:1)

事实证明,可以在每个商店视图上设置基本货币。但是,此选项未在管理员方面显示。我不得不更改system.xml

应用程序/代码/核心/法师/目录/ etc /的system.xml

<label>Base Currency</label>

我必须设置适当的从0更改为1

<show_in_store>1</show_in_store>

完成此操作后,即使在商店视图中,我也可以在“货币选项”下看到基础货币。现在效果很好,一切似乎都运转正常。

不需要更改PHP代码或任何其他插件。

答案 1 :(得分:0)

当我遇到一个相当大的Magento商店遇到这个问题时,这个快速解决方案对我来说非常好:Magento knowledge-base paypal base currency tweak

请注意,该修复程序可能无法开箱即用,但它会进行一些调整

答案 2 :(得分:0)

这是一些解决方案。 您可以自定义一些代码 如果您使用的是Paypal Express, \应用\代码\核心\法师\贝宝\模型\ Express.php

protected function _placeOrder(Mage_Sales_Model_Order_Payment $payment, $amount)
{
    $order = $payment->getOrder();

    // prepare api call
    $token = $payment->getAdditionalInformation(Mage_Paypal_Model_Express_Checkout::PAYMENT_INFO_TRANSPORT_TOKEN);
    $api = $this->_pro->getApi()
        ->setToken($token)
        ->setPayerId($payment->
            getAdditionalInformation(Mage_Paypal_Model_Express_Checkout::PAYMENT_INFO_TRANSPORT_PAYER_ID))
        ->setAmount($amount)
        ->setPaymentAction($this->_pro->getConfig()->paymentAction)
        ->setNotifyUrl(Mage::getUrl('paypal/ipn/'))
        ->setInvNum($order->getIncrementId())
        **->setCurrencyCode($order->getOrderCurrencyCode())** // should be used getOrderCurrencyCode();
        ->setPaypalCart(Mage::getModel('paypal/cart', array($order)))
        ->setIsLineItemsEnabled($this->_pro->getConfig()->lineItemsEnabled)
    ;
    if ($order->getIsVirtual()) {
        $api->setAddress($order->getBillingAddress())->setSuppressShipping(true);
    } else {
        $api->setAddress($order->getShippingAddress());
        $api->setBillingAddress($order->getBillingAddress());
    }

    // call api and get details from it
    $api->callDoExpressCheckoutPayment();

    $this->_importToPayment($api, $payment);
    return $this;
}

\应用\代码\核心\法师\贝宝\模型\ Standard.php

public function getStandardCheckoutFormFields()
{
    $orderIncrementId = $this->getCheckout()->getLastRealOrderId();
    $order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
    /* @var $api Mage_Paypal_Model_Api_Standard */
    $api = Mage::getModel('paypal/api_standard')->setConfigObject($this->getConfig());
    $api->setOrderId($orderIncrementId)
        **->setCurrencyCode($order->getOrderCurrencyCode())** // should be used getOrderCurrencyCode();
        //->setPaymentAction()
        ->setOrder($order)
        ->setNotifyUrl(Mage::getUrl('paypal/ipn/'))
        ->setReturnUrl(Mage::getUrl('paypal/standard/success'))
        ->setCancelUrl(Mage::getUrl('paypal/standard/cancel'));

    // export address
    $isOrderVirtual = $order->getIsVirtual();
    $address = $isOrderVirtual ? $order->getBillingAddress() : $order->getShippingAddress();
    if ($isOrderVirtual) {
        $api->setNoShipping(true);
    } elseif ($address->validate()) {
        $api->setAddress($address);
    }

    // add cart totals and line items
    $api->setPaypalCart(Mage::getModel('paypal/cart', array($order)))
        ->setIsLineItemsEnabled($this->_config->lineItemsEnabled)
    ;
    $api->setCartSummary($this->_getAggregatedCartSummary());
    $api->setLocale($api->getLocaleCode());
    $result = $api->getStandardCheckoutRequest();
    return $result;
}