Example #1
0
 /**
  * Call Cancel API, the transaction must be Authorized beforehand
  *
  * @param Mage_Sales_Model_Order_Payment $payment
  * @return Eway_Rapid31_Model_Request_Direct
  */
 public function doCancel(Mage_Sales_Model_Order_Payment $payment)
 {
     // Empty Varien_Object's data
     $this->unsetData();
     $transactionId = $payment->getLastTransId();
     $this->setTransactionId($transactionId);
     $response = $this->_doRapidAPI('CancelAuthorisation');
     if ($response->isSuccess()) {
         $payment->setTransactionId($response->getTransactionID());
         $payment->setIsTransactionClosed(1);
         return $this;
     } else {
         Mage::throwException(Mage::helper('ewayrapid')->__('An error occurred while doing the cancel. Please try again. (Error message: %s)', $response->getMessage()));
     }
 }
Example #2
0
 /**
  * Set Payment Transaction Information
  *
  * @param Mage_Sales_Model_Order_Payment $payment Sales Payment Model
  * @param array $params Request params
  * @param string $action Action (accept|cancel|decline|wait|exception)
  */
 protected function setPaymentTransactionInformation(Mage_Sales_Model_Order_Payment $payment, $params, $action)
 {
     $payment->setTransactionId($params['PAYID']);
     $code = $payment->getMethodInstance()->getCode();
     $isInline = false;
     /* In authorize mode we still have no authorization transaction for CC and DirectDebit payments,
      * so capture or cancel won't work. So we need to create a new authorization transaction for them
      * when a payment was accepted by Barclaycard
      *
      * In exception-case we create the authorization-transaction too because some exception-cases can turn into accepted
      */
     if (('accept' === $action || 'exception' === $action) && in_array($code, array('ops_cc', 'ops_directDebit'))) {
         $payment->setIsTransactionClosed(false);
         $isInline = $this->isInlinePayment($payment);
         /* create authorization transaction for non-inline pms */
         if (false === $isInline || (array_key_exists('HTML_ANSWER', $params) || 0 < strlen($payment->getAdditionalInformation('HTML_ANSWER')))) {
             $payment->addTransaction("authorization", null, true, $this->__("Process outgoing transaction"));
         }
         $payment->setLastTransId($params['PAYID']);
     }
     /* Barclaycard sends parameter HTML_ANSWER to trigger 3D secure redirection */
     if (isset($params['HTML_ANSWER']) && 'ops_cc' == $code) {
         $payment->setAdditionalInformation('HTML_ANSWER', $params['HTML_ANSWER']);
         $payment->setIsTransactionPending(true);
     }
     $payment->setAdditionalInformation('paymentId', $params['PAYID']);
     $payment->setAdditionalInformation('status', $params['STATUS']);
     if (array_key_exists('ACCEPTANCE', $params) && 0 < strlen(trim($params['ACCEPTANCE']))) {
         $payment->setAdditionalInformation('acceptance', $params['ACCEPTANCE']);
     }
     if (array_key_exists('BRAND', $params) && 'ops_cc' == $code && 0 < strlen(trim($params['BRAND']))) {
         $payment->setAdditionalInformation('CC_BRAND', $params['BRAND']);
     }
     if (false === $isInline || array_key_exists('HTML_ANSWER', $params)) {
         $payment->setIsTransactionClosed(true);
     }
     $payment->setDataChanges(true);
     $payment->save();
 }
Example #3
0
 /**
  * @param Mage_Sales_Model_Order_Payment $payment
  * @return bool
  */
 public function setTransaction(Mage_Sales_Model_Order_Payment $payment)
 {
     $payment->setTransactionId(Mage::getSingleton('core/session')->getTransactionId());
     $payment->setIsTransactionClosed(0);
     return $payment;
 }
Example #4
0
 /**
  * Set Payment Transaction Information
  *
  * @param Mage_Sales_Model_Order_Payment $payment Sales Payment Model
  * @param array                  $params Request params
  */
 protected function setPaymentTransactionInformation($payment, $params)
 {
     $payment->setTransactionId($params['PAYID']);
     $code = $payment->getMethodInstance()->getCode();
     if (in_array($code, array('postfinance_cc', 'postfinance_directDebit'))) {
         $payment->setIsTransactionClosed(false);
         $payment->addTransaction("authorization", null, true, $this->__("Process outgoing transaction"));
         $payment->setLastTransId($params['PAYID']);
         if (isset($params['HTML_ANSWER'])) {
             $payment->setAdditionalInformation('HTML_ANSWER', $params['HTML_ANSWER']);
         }
     }
     $payment->setAdditionalInformation('paymentId', $params['PAYID']);
     $payment->setAdditionalInformation('status', $params['STATUS']);
     $payment->setIsTransactionClosed(true);
     $payment->setDataChanges(true);
     $payment->save();
 }