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; }
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; }