Magento — Виды магазина и несколько валют — всегда оформлять заказ с использованием базовой валюты

У меня есть сайт на magento

  • У нас есть магазин
  • В магазине у нас есть несколько просмотров магазина (США, ЕС и Великобритания)
  • Каждый вид магазина имеет свою собственную валюту и т. Д.
  • Базовая валюта — GBP в конфигурации по умолчанию (основная)

Моя проблема в том, что отображение валют работает хорошо. Каждый вид магазина имеет свою индивидуальную цену (без автоматической конвертации). Вроде все работает и в порядке. Тем не менее, на окончательный платеж электронной почты и фактическое соединение с поставщиками платежей (PayPal / Sage). Базовая валюта всегда используется. Хотя дисплей отображается в валюте для каждого вида магазина.

Мой вопрос: почему валюты представлений магазина не используются с PayPal, электронными письмами и т. Д. Хотя суммы, отображаемая валюта и т. Д. Работают нормально?

2

Решение

Оказывается, что базовая валюта может быть установлена ​​в каждом представлении магазина. Однако эта опция не была представлена ​​на стороне администратора. Я должен был изменить system.xml

Приложение / код / ​​ядро ​​/ Mage / Каталог / и т.д. / System.Xml

<label>Base Currency</label>

Я должен установить соответствующий, чтобы измениться от 0 до 1

<show_in_store>1</show_in_store>

Как только это было сделано, я мог видеть Базовую валюту в разделе «Параметры валюты» даже в представлении магазина. Теперь это работает хорошо, и все, кажется, работает нормально.

Никаких изменений кода PHP или каких-либо дополнительных плагинов не требуется.

1

Другие решения

Когда я столкнулся с этой проблемой в довольно большом магазине Magento, это быстрое исправление мне очень помогло: Настройка базы знаний PayPal в Magento

Просто отметьте, что это исправление, вероятно, не будет работать из коробки, но потребуется некоторая настройка

0

Вот несколько решений.
Вы можете настроить некоторые коды
Если вы используете Paypal Express,
\ Приложение \ код \ ядро ​​\ Mage \ Paypal \ Model \ 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;
}

\ Приложение \ код \ ядро ​​\ Mage \ Paypal \ Model \ 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;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector