/** * Void/Cancel */ protected function _void(Varien_Object $payment) { $orderTransaction = $payment->lookupTransaction(false, Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER); if (!$orderTransaction) { $orderTransactionId = $payment->getAdditionalInformation('order_reference'); } else { $orderTransactionId = $orderTransaction->getTxnId(); } if ($orderTransaction) { $this->_getApi()->cancelOrderReference($orderTransactionId); } return $this; }
/** * Void payment * * @param Mage_Sales_Model_Order_Payment $payment * @return Mage_Paypal_Model_Express */ public function void(Varien_Object $payment) { //Switching to order transaction if needed if ($payment->getAdditionalInformation($this->_isOrderPaymentActionKey) && !$payment->getVoidOnlyAuthorization()) { $orderTransaction = $payment->lookupTransaction(false, Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER); if ($orderTransaction) { $payment->setParentTransactionId($orderTransaction->getTxnId()); $payment->setTransactionId($orderTransaction->getTxnId() . '-void'); } } $this->_pro->void($payment); return $this; }
/** * Refund the last successful transaction * * @param Varien_Object|Mage_Sales_Model_Order_Payment $payment * @param float $amount * * @return EMerchantPay_Genesis_Model_Direct */ public function refund(Varien_Object $payment, $amount) { Mage::log('Refund transaction for order #' . $payment->getOrder()->getIncrementId()); try { $this->getHelper()->initClient($this->getCode()); $capture = $payment->lookupTransaction(null, Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE); $reference_id = $capture->getTxnId(); $genesis = new \Genesis\Genesis('Financial\\Refund'); $genesis->request()->setTransactionId($this->getHelper()->genTransactionId($payment->getOrder()->getIncrementId()))->setRemoteIp($this->getHelper('core/http')->getRemoteAddr(false))->setReferenceId($reference_id)->setCurrency($payment->getOrder()->getBaseCurrencyCode())->setAmount($amount); $genesis->execute(); $payment->setTransactionId($genesis->response()->getResponseObject()->unique_id)->setParentTransactionId($reference_id)->setShouldCloseParentTransaction(true)->setTransactionAdditionalInfo(array(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS => $this->getHelper()->getArrayFromGatewayResponse($genesis->response()->getResponseObject())), null); $payment->save(); } catch (Exception $exception) { Mage::logException($exception); Mage::throwException($exception->getMessage()); } return $this; }