/**
  * Test case for oePayPalIPNRequestPaymentSetter::getRequestOrderPayment
  * Test case for oePayPalIPNRequestPaymentSetter::setRequestOrderPayment
  * Test case for oePayPalIPNRequestPaymentSetter::_prepareOrderPayment
  * Test case for oePayPalIPNRequestPaymentSetter::getRequest
  * Test case for oePayPalIPNRequestPaymentSetter::getAction
  * Test case for oePayPalIPNRequestPaymentSetter::getAmount
  *
  * @param array  $aParams        parameters for POST imitating PayPal.
  * @param string $expectedAction Expected action for resulting payment.
  *
  * @dataProvider providerGetRequestOrderPayment
  */
 public function testGetRequestOrderPayment($aParams, $expectedAction)
 {
     $oPayPalExpectedPayment = new oePayPalOrderPayment();
     if (!empty($aParams)) {
         $oPayPalExpectedPayment->setStatus($aParams['payment_status']);
         $oPayPalExpectedPayment->setTransactionId($aParams['txn_id']);
         $oPayPalExpectedPayment->setCurrency($aParams['mc_currency']);
         $oPayPalExpectedPayment->setAmount(abs($aParams['mc_gross']));
         $oPayPalExpectedPayment->setAction($expectedAction);
         $correlationId = empty($aParams['correlation_id']) ? $aParams['ipn_track_id'] : $aParams['correlation_id'];
         $oPayPalExpectedPayment->setCorrelationId($correlationId);
         $oPayPalExpectedPayment->setDate(date('Y-m-d H:i:s', strtotime($aParams['payment_date'])));
     } else {
         $oPayPalExpectedPayment->setStatus(null);
         $oPayPalExpectedPayment->setTransactionId(null);
         $oPayPalExpectedPayment->setCurrency(null);
         $oPayPalExpectedPayment->setAmount(null);
         $oPayPalExpectedPayment->setCorrelationId(null);
         $oPayPalExpectedPayment->setDate(null);
         $oPayPalExpectedPayment->setAction('capture');
     }
     $_POST = $aParams;
     $oRequest = new oePayPalRequest();
     $oPayPalPayment = new oePayPalOrderPayment();
     $oPayPalIPNRequestSetter = new oePayPalIPNRequestPaymentSetter();
     $oPayPalIPNRequestSetter->setRequest($oRequest);
     $oPayPalIPNRequestSetter->setRequestOrderPayment($oPayPalPayment);
     $oRequestOrderPayment = $oPayPalIPNRequestSetter->getRequestOrderPayment();
     $this->assertEquals($oPayPalExpectedPayment, $oRequestOrderPayment, 'Payment object do not have request parameters.');
 }
 /**
  * @covers oePayPalOrderRefundAction::process
  * @covers oePayPalOrderRefundActionHandler::getPayPalResponse
  * @covers oePayPalOrderRefundActionHandler::getPayPalRequest
  * @covers oePayPalOrderRefundActionData::getAmount
  * @covers oePayPalOrderRefundActionData::getType
  */
 public function testActionRefund()
 {
     $aRequestParams = array('refund_amount' => '10', 'refund_type' => 'Complete', 'transaction_id' => 'capturedTransaction');
     $aResponseParams = array('REFUNDTRANSACTIONID' => 'TransactionId', 'REFUNDSTATUS' => 'Pending', 'GROSSREFUNDAMT' => '9.01', 'CURRENCYCODE' => 'EUR');
     $oCapturedPayment = new oePayPalOrderPayment();
     $oCapturedPayment->setOrderId('testOrderId');
     $oCapturedPayment->setTransactionId('capturedTransaction');
     $oCapturedPayment->save();
     $oAction = $this->_createAction('refund', 'testOrderId', $aRequestParams, $aResponseParams);
     $oAction->process();
     $oOrder = $this->_getOrder('testOrderId');
     $this->assertEquals('9.01', $oOrder->getRefundedAmount());
     $aPaymentList = $oOrder->getPaymentList()->getArray();
     $this->assertEquals(2, count($aPaymentList));
     $oPayment = array_shift($aPaymentList);
     $this->assertEquals('refund', $oPayment->getAction());
     $this->assertEquals('testOrderId', $oPayment->getOrderId());
     $this->assertEquals('9.01', $oPayment->getAmount());
     $this->assertEquals('Pending', $oPayment->getStatus());
     $this->assertEquals('EUR', $oPayment->getCurrency());
     $oCapturedPayment = array_shift($aPaymentList);
     $this->assertEquals('9.01', $oCapturedPayment->getRefundedAmount());
     $oPayment->delete();
     $oCapturedPayment->delete();
     $oOrder->delete();
 }
 /**
  * Testing new payment creation with correct data after PayPal request is processed
  */
 public function testProcess_NewPaymentCreated_WithCorrectData()
 {
     $sTransactionId = 'transactionId';
     $sCorrelationId = 'correlationId';
     $sStatus = 'Completed';
     $dAmount = 59.67;
     $sCurrency = 'EUR';
     $sDate = 'date';
     $aPayPalResponseMethods = array('getTransactionId' => $sTransactionId, 'getCorrelationId' => $sCorrelationId, 'getPaymentStatus' => $sStatus, 'getCapturedAmount' => $dAmount, 'getCurrency' => $sCurrency);
     $oPayPalResponse = $this->_createStub('oePayPalResponseDoCapture', $aPayPalResponseMethods);
     $oPayment = new oePayPalOrderPayment();
     $oPayment->setDate($sDate);
     $oPayment->setTransactionId($sTransactionId);
     $oPayment->setCorrelationId($sCorrelationId);
     $oPayment->setAction('capture');
     $oPayment->setStatus($sStatus);
     $oPayment->setAmount($dAmount);
     $oPayment->setCurrency($sCurrency);
     $oPaymentList = $this->_getPaymentList(array('addPayment'));
     $oPaymentList->expects($this->once())->method('addPayment')->with($oPayment)->will($this->returnValue($oPayment));
     $oOrder = $this->_getOrder(array('getPaymentList'));
     $oOrder->expects($this->once())->method('getPaymentList')->will($this->returnValue($oPaymentList));
     $oAction = $this->_getAction($oPayPalResponse, $oOrder);
     $oAction->process();
 }
 /**
  * Test loading of payment by transaction id
  */
 public function testGetPaymentBeingRefunded_LoadedByTransactionId_TransactionIdSet()
 {
     $sTransactionId = 'test_transId';
     $oPayment = new oePayPalOrderPayment();
     $oPayment->setTransactionId($sTransactionId);
     $oPayment->setOrderId('_testOrderId');
     $oPayment->save();
     $aParams = array('transaction_id' => $sTransactionId);
     $oRequest = $this->_createStub('oePayPalRequest', array('getPost' => $aParams));
     $oOrder = $this->_getOrder();
     $oActionData = new oePayPalOrderRefundActionData($oRequest, $oOrder);
     $oPayment = $oActionData->getPaymentBeingRefunded();
     $this->assertEquals($sTransactionId, $oPayment->getTransactionId());
 }
 /**
  * Testing new payment creation with correct data after PayPal request is processed
  */
 public function testProcess_NewPaymentCreated_WithCorrectData()
 {
     $sAuthentificationId = 'authentificationId';
     $sCorrelationId = 'correlationId';
     $dAmount = 2.99;
     $sDate = 'date';
     $aPayPalResponseMethods = array('getAuthorizationId' => $sAuthentificationId, 'getCorrelationId' => $sCorrelationId);
     $oPayPalResponse = $this->_createStub('oePayPalResponseDoVoid', $aPayPalResponseMethods);
     $oPayment = new oePayPalOrderPayment();
     $oPayment->setDate($sDate);
     $oPayment->setTransactionId($sAuthentificationId);
     $oPayment->setCorrelationId($sCorrelationId);
     $oPayment->setAction('void');
     $oPayment->setStatus('Voided');
     $oPayment->setAmount($dAmount);
     $oPaymentList = $this->_getPaymentList(array('addPayment'));
     $oPaymentList->expects($this->once())->method('addPayment')->with($oPayment)->will($this->returnValue($this->_getPayment()));
     $oOrder = $this->_getOrder(array('getPaymentList', 'getRemainingOrderSum'));
     $oOrder->expects($this->once())->method('getRemainingOrderSum')->will($this->returnValue($dAmount));
     $oOrder->expects($this->once())->method('getPaymentList')->will($this->returnValue($oPaymentList));
     $oAction = $this->_getAction($oPayPalResponse, $oOrder);
     $oAction->process();
 }
 /**
  * Testing loading payment by transaction id
  */
 public function testLoadByTransactionId()
 {
     $oOrderPayment = new oePayPalOrderPayment();
     $oOrderPayment->setOrderId('orderId');
     $oOrderPayment->setTransactionId('transactionId');
     $oOrderPayment->save();
     $oOrderPayment = new oePayPalOrderPayment();
     $oOrderPayment->loadByTransactionId('transactionId');
     $this->assertEquals('orderId', $oOrderPayment->getOrderId());
 }
 /**
  * Prepare PayPal payment. Fill up with request values.
  *
  * @param oePayPalOrderPayment $oRequestOrderPayment order to set params.
  */
 protected function _prepareOrderPayment($oRequestOrderPayment)
 {
     $oRequest = $this->getRequest();
     $oRequestOrderPayment->setStatus($oRequest->getRequestParameter(self::PAYPAL_PAYMENT_STATUS));
     $oRequestOrderPayment->setTransactionId($oRequest->getRequestParameter(self::PAYPAL_TRANSACTION_ID));
     $oRequestOrderPayment->setCurrency($oRequest->getRequestParameter(self::MC_CURRENCY));
     $oRequestOrderPayment->setAmount($this->getAmount());
     $oRequestOrderPayment->setAction($this->getAction());
     $correlationId = $oRequest->getRequestParameter(self::CORRELATION_ID);
     if (!$correlationId) {
         $correlationId = $oRequest->getRequestParameter(self::IPN_TRACK_ID);
     }
     $oRequestOrderPayment->setCorrelationId($correlationId);
     $date = 0 < strlen($oRequest->getRequestParameter(self::PAYMENT_DATE)) ? date('Y-m-d H:i:s', strtotime($oRequest->getRequestParameter(self::PAYMENT_DATE))) : null;
     $oRequestOrderPayment->setDate($date);
 }
 /**
  * Wrapper to create order payment.
  *
  * @param string $sTransactionId     transaction id.
  * @param bool   $blValid            if payment should be marked as not valid.
  * @param string $sValidationMessage validation message
  *
  * @return oePayPalOrderPayment
  */
 protected function _prepareOrderPayment($sTransactionId, $blValid = true, $sValidationMessage = '')
 {
     $oOrderPayment = new oePayPalOrderPayment();
     $oOrderPayment->setPaymentId('__a24das5das45');
     $oOrderPayment->setOrderId('_sOrderId');
     $oOrderPayment->setTransactionId($sTransactionId);
     if (!$blValid) {
         $oOrderPayment->setIsValid(false);
     }
     if ($sValidationMessage) {
         $sDate = date('Y-m-d H:i:s', oxRegistry::get("oxUtilsDate")->getTime());
         $oOrderPayment->addComment($sDate, $sValidationMessage);
     }
     return $oOrderPayment;
 }
 /**
  * Prepare OrderPayment object.
  *
  * @return oePayPalOrderPayment
  */
 protected function getOrderPayment()
 {
     oePayPalEvents::addOrderPaymentsTable();
     oePayPalEvents::addOrderTable();
     $oOrderPayment = new oePayPalOrderPayment();
     $oOrderPayment->setTransactionId('asdadsd45a4sd5a4sd54a5');
     $oOrderPayment->setOrderId('order');
     return $oOrderPayment;
 }
 /**
  * Create order payment with some transaction id and same order id as order in _prepareOrder().
  *
  * @param string $sOrderId order id.
  *
  * @return oePayPalOrderPayment
  */
 protected function _prepareOrderPayment($sOrderId)
 {
     $oOrderPayment = new oePayPalOrderPayment();
     $oOrderPayment->setTransactionId('_asdadsd45a4sd5a4sd54a5');
     $oOrderPayment->setOrderId($sOrderId);
     return $oOrderPayment;
 }