/** * Perform transaction for void/Reversal * * @param Mage_Payment_Model_Info $payment * @return string $directResponse|bool */ public function createReversalTransaction($payment) { /** * Set the order in its own object */ $order = $payment->getOrder(); $amount = $payment->getAmount() * 100; // Must set 100.00 to 10000 per api /** * Create the transaction */ $data = array('txRefNum' => $payment->getTransId(), 'txRefIdx' => null, 'orderID' => $this->_getUniqueOrderId($payment, $order), 'adjustedAmount' => $amount > 0 ? $amount : null, 'reversalRetryNumber' => null, 'onlineReversalInd' => "N"); $soap_env = array(self::TRANS_REFUND_TRANS_REQUEST => array_merge($this->_getAuthentication(), $data)); if (!($response = $this->doCall(self::TRANS_REFUND, $soap_env))) { return false; } $response = $response->return; //Mage::log("full response"); //Mage::log($response); /* if ($response->error != null) { foreach ($response->error as $error) { if (strpos($error, self::SOAPFAULT_LOCKED_DOWN)) { $this->debugData($error); $this->c($paymentInfo, $amount); } else { //$this->addError($this->_response->procStatusMessage); $this->addError($error); } } } */ $hasErrors = $this->_checkErrors(); if ($response) { if (!$hasErrors) { $response->return->respCode = '0'; // set for successful request (this is not set on a reversal...) return $response; } else { return false; } } else { return false; } }