/**
  * Void the card transaction through gateway
  *
  * @param Mage_Payment_Model_Info $payment
  * @param Varien_Object $card
  * @return bool|Mage_Sales_Model_Order_Payment_Transaction
  */
 protected function _voidCardTransaction($payment, $card)
 {
     $authTransactionId = $card->getLastTransId();
     $authTransaction = $payment->getTransaction($authTransactionId);
     //$captureTransactionId = $card->getLastCaptureTransId();
     $balance = $card->getProcessedAmount() - $card->getCapturedAmount();
     $realAuthTransactionId = $authTransaction->getAdditionalInformation($this->_realTransactionIdKey);
     $payment->setChasePaymentechTransType(Gorilla_ChasePaymentech_Model_Profile::TRANS_TYPE_VOID);
     $payment->setTransId($realAuthTransactionId);
     $payment->setAmount($this->_formatAmount($balance));
     //$payment->setTransId($captureTransactionId);
     //$payment->setTransRefIdx($card->getTransRefIdx());
     $result = $this->_postRequest($payment);
     switch ($result->getResponseCode()) {
         case self::RESPONSE_CODE_NEW_ORDER_SUCCESS:
             if ($result->getApprovalCode() == self::RESPONSE_APPROVAL_STATUS) {
                 $voidTransactionId = $result->getTransactionId() . '-void';
                 $card->setLastTransId($voidTransactionId);
                 return $this->_addTransaction($payment, $voidTransactionId, Mage_Sales_Model_Order_Payment_Transaction::TYPE_VOID, array('is_transaction_closed' => 1, 'should_close_parent_transaction' => 1, 'parent_transaction_id' => $authTransactionId), array($this->_realTransactionIdKey => $result->getTransactionId()), Mage::helper('paygate')->getTransactionMessage($payment, Mage_Paygate_Model_Authorizenet::REQUEST_TYPE_VOID, $result->getTransactionId(), $card));
             }
             $exceptionMessage = $this->_wrapGatewayError($result->getResponseReasonText());
             break;
         default:
             $exceptionMessage = $this->_getHelper()->__('Payment voiding error.');
             //Mage::log($result->getResponseReasonText());
             if ($result->getResponseReasonText()) {
                 $exceptionMessage = $this->_wrapGatewayError($result->getResponseReasonText());
             }
             //Mage::log($exceptionMessage);
             break;
     }
     $exceptionMessage = Mage::helper('paygate')->getTransactionMessage($payment, Mage_Paygate_Model_Authorizenet::REQUEST_TYPE_VOID, $realAuthTransactionId, $card, false, $exceptionMessage);
     Mage::throwException($exceptionMessage);
     return false;
 }