У меня есть сайт на magento
Моя проблема в том, что отображение валют работает хорошо. Каждый вид магазина имеет свою индивидуальную цену (без автоматической конвертации). Вроде все работает и в порядке. Тем не менее, на окончательный платеж электронной почты и фактическое соединение с поставщиками платежей (PayPal / Sage). Базовая валюта всегда используется. Хотя дисплей отображается в валюте для каждого вида магазина.
Мой вопрос: почему валюты представлений магазина не используются с PayPal, электронными письмами и т. Д. Хотя суммы, отображаемая валюта и т. Д. Работают нормально?
Оказывается, что базовая валюта может быть установлена в каждом представлении магазина. Однако эта опция не была представлена на стороне администратора. Я должен был изменить system.xml
Приложение / код / ядро / Mage / Каталог / и т.д. / System.Xml
<label>Base Currency</label>
Я должен установить соответствующий, чтобы измениться от 0 до 1
<show_in_store>1</show_in_store>
Как только это было сделано, я мог видеть Базовую валюту в разделе «Параметры валюты» даже в представлении магазина. Теперь это работает хорошо, и все, кажется, работает нормально.
Никаких изменений кода PHP или каких-либо дополнительных плагинов не требуется.
Когда я столкнулся с этой проблемой в довольно большом магазине Magento, это быстрое исправление мне очень помогло: Настройка базы знаний PayPal в Magento
Просто отметьте, что это исправление, вероятно, не будет работать из коробки, но потребуется некоторая настройка
Вот несколько решений.
Вы можете настроить некоторые коды
Если вы используете 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;
}