/** * Returns the currency compliant to ISO 4217 (3 char code) * @return string 3 Character long currency code * * @param Mage_Sales_Model_Quote|Mage_Sales_Model_Order|Mage_Sales_Model_Order_Invoice|Mage_Sales_Model_Order_Creditmemo $object * @return string */ public function getCurrency($object) { $currency = $object->getBaseCurrencyCode(); if (!Mage::helper('paymill/optionHelper')->isBaseCurrency()) { if ($object instanceof Mage_Sales_Model_Quote) { $currency = $object->getQuoteCurrencyCode(); } else { $currency = $object->getOrderCurrencyCode(); } } return $currency; }
/** * Get Shopping Cart XML for MasterPass * @param Mage_Sales_Model_Quote|Mage_Sales_Model_Order $quote * @return string */ public function getShoppingCartXML($quote) { $dom = new DOMDocument('1.0', 'utf-8'); $ShoppingCart = $dom->createElement('ShoppingCart'); $dom->appendChild($ShoppingCart); if ($quote instanceof Mage_Sales_Model_Order) { $currency = $quote->getOrderCurrencyCode(); } else { $currency = $quote->getQuoteCurrencyCode(); } $ShoppingCart->appendChild($dom->createElement('CurrencyCode', $currency)); $ShoppingCart->appendChild($dom->createElement('Subtotal', (int) (100 * $quote->getGrandTotal()))); // Add Order Lines $items = $quote->getAllVisibleItems(); /** @var $item Mage_Sales_Model_Quote_Item */ foreach ($items as $item) { $product = $item->getProduct(); if ($quote instanceof Mage_Sales_Model_Order) { $qty = $item->getQtyOrdered(); } else { $qty = $item->getQty(); } $ShoppingCartItem = $dom->createElement('ShoppingCartItem'); $ShoppingCartItem->appendChild($dom->createElement('Description', $item->getName())); $ShoppingCartItem->appendChild($dom->createElement('Quantity', (double) $qty)); $ShoppingCartItem->appendChild($dom->createElement('Value', (int) bcmul($product->getFinalPrice(), 100))); $ShoppingCartItem->appendChild($dom->createElement('ImageURL', $product->getThumbnailUrl())); $ShoppingCart->appendChild($ShoppingCartItem); } return str_replace("\n", '', $dom->saveXML()); }
/** * Gets all needed Informations for payment Block of the Request * * @param Mage_Sales_Model_Quote|Mage_Sales_Model_Order $object * @param float amount * @param string $request * @return array */ public function getRequestPayment($object, $amount = '', $request = '') { $paymentMethod = $object->getPayment()->getMethod(); $payment = array(); switch ($paymentMethod) { case 'ratepay_rechnung': $payment['method'] = 'INVOICE'; break; case 'ratepay_rate0': case 'ratepay_rate': if ($request == 'PAYMENT_REQUEST') { $payment['installmentNumber'] = Mage::getSingleton('ratepaypayment/session')->{'get' . Mage::helper('ratepaypayment')->convertUnderlineToCamelCase($paymentMethod) . 'NumberOfRatesFull'}(); $payment['installmentAmount'] = Mage::getSingleton('ratepaypayment/session')->{'get' . Mage::helper('ratepaypayment')->convertUnderlineToCamelCase($paymentMethod) . 'Rate'}(); $payment['lastInstallmentAmount'] = Mage::getSingleton('ratepaypayment/session')->{'get' . Mage::helper('ratepaypayment')->convertUnderlineToCamelCase($paymentMethod) . 'LastRate'}(); $payment['interestRate'] = Mage::getSingleton('ratepaypayment/session')->{'get' . Mage::helper('ratepaypayment')->convertUnderlineToCamelCase($paymentMethod) . 'InterestRate'}(); if ($this->isDynamicDue()) { $payment['paymentFirstDay'] = Mage::getSingleton('ratepaypayment/session')->getRatepayPaymentFirstDay(); } else { $payment['paymentFirstDay'] = '28'; } } $payment['method'] = 'INSTALLMENT'; if (Mage::getSingleton('ratepaypayment/session')->getDirectDebitFlag()) { $payment['debitType'] = 'DIRECT-DEBIT'; } else { $payment['debitType'] = 'BANK-TRANSFER'; } break; case 'ratepay_directdebit': $payment['method'] = 'ELV'; break; } if ($object instanceof Mage_Sales_Model_Order) { $payment['currency'] = $object->getOrderCurrencyCode(); } else { $payment['currency'] = $object->getQuoteCurrencyCode(); } if (is_numeric($amount)) { $payment['amount'] = $amount; } else { $payment['amount'] = $object->getGrandTotal(); } // Ensure that the basket amout is never less than zero // In certain cases (i.e. in case of maloperation) the amount can become < 0 if ($payment['amount'] < 0) { $payment['amount'] = 0; } return $payment; }