Example #1
0
 public function _place(Mage_Sales_Model_Order_Payment $payment, $amount)
 {
     $order = $payment->getOrder();
     $items = Mage::helper('iugu')->getItemsFromOrder($payment->getOrder());
     $payer = Mage::helper('iugu')->getPayerInfoFromOrder($payment->getOrder());
     $data = new Varien_Object();
     $data->setMethod(Inovarti_Iugu_Model_Api::PAYMENT_METHOD_BOLETO)->setEmail($order->getCustomerEmail())->setItems($items)->setPayer($payer)->setNotificationUrl(Mage::getUrl('iugu/notification'));
     // Discount
     if ($order->getBaseDiscountAmount()) {
         $data->setDiscountCents(Mage::helper('iugu')->formatAmount(abs($order->getBaseDiscountAmount())));
     }
     // Tax
     if ($order->getBaseTaxAmount()) {
         $data->setTaxCents($this->formatAmount($order->getBaseTaxAmount()));
     }
     $result = Mage::getSingleton('iugu/api')->charge($data);
     if ($result->getErrors()) {
         $messages = array();
         if (is_array($result->getErrors())) {
             foreach ($result->getErrors() as $field => $errors) {
                 foreach ($errors as $error) {
                     $messages[] = $field . ': ' . $error . '.';
                 }
             }
         } else {
             $messages[] = $result->getErrors();
         }
         Mage::throwException(implode("\n", $messages));
     }
     // iugu info
     $payment->setIuguInvoiceId($result->getInvoiceId())->setIuguUrl($result->getUrl())->setIuguPdf($result->getPdf());
     return $this;
 }
Example #2
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;
 }