Example #1
0
 /**
  * Void the payment transaction
  *
  * @param Mage_Sale_Model_Order_Payment $payment
  * @return Mage_Cybersource_Model_Soap
  */
 public function void(Varien_Object $payment)
 {
     $error = false;
     if ($payment->getVoidTransactionId() && $payment->getVoidCybersourceToken()) {
         $soapClient = $this->getSoapApi();
         $this->iniRequest();
         $voidService = new stdClass();
         $voidService->run = "true";
         $voidService->voidRequestToken = $payment->getVoidCybersourceToken();
         $voidService->voidRequestID = $payment->getVoidTransactionId();
         $this->_request->voidService = $voidService;
         try {
             $result = $soapClient->runTransaction($this->_request);
             if ($result->reasonCode == self::RESPONSE_CODE_SUCCESS) {
                 $payment->setLastTransId($result->requestID)->setCcTransId($result->requestID)->setCybersourceToken($result->requestToken);
             } else {
                 $error = Mage::helper('cybersource')->__('There is an error in processing payment. Please try again or contact us.');
             }
         } catch (Exception $e) {
             Mage::throwException(Mage::helper('cybersource')->__('Gateway request error: %s', $e->getMessage()));
         }
     } else {
         $error = Mage::helper('cybersource')->__('Invalid transaction id or token');
     }
     if ($error !== false) {
         Mage::throwException($error);
     }
     return $this;
 }