예제 #1
0
파일: Pro.php 프로젝트: aiesh/magento2
 /**
  * Get payflow transaction id from parent transaction
  *
  * @param \Magento\Framework\Object $payment
  * @return string
  */
 protected function _getParentTransactionId(\Magento\Framework\Object $payment)
 {
     if ($payment->getParentTransactionId()) {
         return $payment->getTransaction($payment->getParentTransactionId())->getAdditionalInformation(self::TRANSPORT_PAYFLOW_TXN_ID);
     }
     return $payment->getParentTransactionId();
 }
예제 #2
0
파일: Pro.php 프로젝트: aiesh/magento2
 /**
  * Parent transaction id getter
  *
  * @param \Magento\Framework\Object $payment
  * @return string
  */
 protected function _getParentTransactionId(\Magento\Framework\Object $payment)
 {
     return $payment->getParentTransactionId();
 }
예제 #3
0
 /**
  * Refund the amount with transaction id
  *
  * @param \Magento\Framework\Object $payment
  * @param float $amount
  * @return $this
  * @throws \Magento\Framework\Model\Exception
  */
 protected function _refund(\Magento\Framework\Object $payment, $amount)
 {
     if ($amount <= 0) {
         throw new \Magento\Framework\Model\Exception(__('Invalid amount for refund.'));
     }
     if (!$payment->getParentTransactionId()) {
         throw new \Magento\Framework\Model\Exception(__('Invalid transaction ID.'));
     }
     $payment->setAnetTransType(self::REQUEST_TYPE_CREDIT);
     $payment->setAmount($amount);
     $payment->setXTransId($this->_getRealParentTransactionId($payment));
     $request = $this->_buildRequest($payment);
     $result = $this->_postRequest($request);
     switch ($result->getResponseCode()) {
         case self::RESPONSE_CODE_APPROVED:
             if ($result->getResponseReasonCode() == self::RESPONSE_REASON_CODE_APPROVED) {
                 if ($result->getTransactionId() != $payment->getParentTransactionId()) {
                     $payment->setTransactionId($result->getTransactionId());
                 }
                 $shouldCloseCaptureTransaction = $payment->getOrder()->canCreditmemo() ? 0 : 1;
                 $payment->setIsTransactionClosed(1)->setShouldCloseParentTransaction($shouldCloseCaptureTransaction)->setTransactionAdditionalInfo($this->_realTransactionIdKey, $result->getTransactionId());
                 return $this;
             }
             throw new \Magento\Framework\Model\Exception($this->_wrapGatewayError($result->getResponseReasonText()));
         case self::RESPONSE_CODE_DECLINED:
         case self::RESPONSE_CODE_ERROR:
             throw new \Magento\Framework\Model\Exception($this->_wrapGatewayError($result->getResponseReasonText()));
         default:
             throw new \Magento\Framework\Model\Exception(__('Payment refunding error.'));
     }
 }