Example #1
0
 protected function _place($payment, $amount)
 {
     $order = $payment->getOrder();
     $payer = Mage::helper('iugu')->getPayerInfoFromOrder($payment->getOrder());
     $items = Mage::helper('iugu')->getItemsFromOrder($payment->getOrder());
     // Verify if needs add interest
     $interestRate = $this->getInterestRate($payment->getInstallments());
     $totalWithInterest = $this->calcTotalWithInterest($amount, $interestRate);
     if ($totalWithInterest - $amount > 0) {
         $item = new Varien_Object();
         $item->setDescription(Mage::helper('iugu')->__('Interest'));
         $item->setQuantity(1);
         $item->setPriceCents(Mage::helper('iugu')->formatAmount($totalWithInterest - $amount));
         $items[] = $item;
     }
     // Save Payment method
     if (!$payment->getIuguCustomerPaymentMethodId() && $payment->getIuguSave()) {
         $data = new Varien_Object();
         $data->setToken($payment->getIuguToken());
         $data->setCustomerId(Mage::helper('iugu')->getCustomerId());
         $data->setDescription(Mage::getModel('core/date')->timestamp(time()));
         $result = Mage::getSingleton('iugu/api')->savePaymentMethod($data);
         if ($result->getId()) {
             $payment->setIuguCustomerPaymentMethodId($result->getId());
         }
     }
     // Set Charge Data
     $data = new Varien_Object();
     if ($payment->getIuguCustomerPaymentMethodId()) {
         $data->setCustomerPaymentMethodId($payment->getIuguCustomerPaymentMethodId());
     } else {
         $data->setToken($payment->getIuguToken());
     }
     $data->setMonths($payment->getInstallments())->setEmail($order->getCustomerEmail())->setItems($items)->setPayer($payer);
     // Discount
     if ($order->getBaseDiscountAmount()) {
         $data->setDiscountCents(Mage::helper('iugu')->formatAmount(abs($order->getBaseDiscountAmount())));
     }
     // Tax
     if ($order->getBaseTaxAmount()) {
         $data->setTaxCents($this->formatAmount($order->getBaseTaxAmount()));
     }
     // Charge
     $result = Mage::getSingleton('iugu/api')->charge($data);
     if (!$result->getSuccess()) {
         Mage::throwException(Mage::helper('iugu')->__('Transaction failed, please try again or contact the card issuing bank.'));
     }
     // Set iugu info
     $payment->setIuguInvoiceId($result->getInvoiceId())->setIuguTotalWithInterest($totalWithInterest)->setIuguUrl($result->getUrl())->setIuguPdf($result->getPdf())->setTransactionId($result->getInvoiceId())->setIsTransactionClosed(0)->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, array('message' => $result->getMessage()));
     return $this;
 }
Example #2
0
 public function getItemsFromOrder($order)
 {
     $items = array();
     foreach ($order->getAllVisibleItems() as $data) {
         $item = new Varien_Object();
         $item->setDescription($data->getName());
         $item->setQuantity($data->getQtyOrdered());
         $item->setPriceCents($this->formatAmount($data->getBasePrice()));
         $items[] = $item;
     }
     // Shipping
     if ($order->getBaseShippingAmount() > 0) {
         $item = new Varien_Object();
         $item->setDescription($this->__('Shipping & Handling') . ' (' . $order->getShippingDescription() . ')');
         $item->setQuantity(1);
         $item->setPriceCents($this->formatAmount($order->getBaseShippingAmount()));
         $items[] = $item;
     }
     return $items;
 }