/**
  * 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;
 }
Beispiel #2
0
 /**
  * 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());
 }
Beispiel #3
0
 /**
  * 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;
 }