/** * Get reference ID of parent transaction * (e.g. get PNREF of AUTH transaction for request a CAPTURE transaction) * * @param \XLite\Model\Payment\BackendTransaction $backendTransaction Backend transaction object * * @return string */ protected function getTransactionReferenceId(\XLite\Model\Payment\BackendTransaction $backendTransaction) { $referenceId = null; $paymentTransaction = $backendTransaction->getPaymentTransaction(); switch ($backendTransaction->getType()) { case \XLite\Model\Payment\BackendTransaction::TRAN_TYPE_CAPTURE: case \XLite\Model\Payment\BackendTransaction::TRAN_TYPE_VOID: if (\XLite\Model\Payment\BackendTransaction::TRAN_TYPE_AUTH == $paymentTransaction->getType()) { $referenceId = $paymentTransaction->getDataCell($this->getReferenceIdField())->getValue(); } break; case \XLite\Model\Payment\BackendTransaction::TRAN_TYPE_REFUND: if (\XLite\Model\Payment\BackendTransaction::TRAN_TYPE_SALE == $paymentTransaction->getType()) { $referenceId = $paymentTransaction->getDataCell($this->getReferenceIdField())->getValue(); } elseif ($paymentTransaction->isCaptured()) { foreach ($paymentTransaction->getBackendTransactions() as $bt) { if (\XLite\Model\Payment\BackendTransaction::TRAN_TYPE_CAPTURE == $bt->getType() && \XLite\Model\Payment\Transaction::STATUS_SUCCESS == $bt->getStatus()) { $referenceId = $bt->getDataCell($this->getReferenceIdField())->getValue(); break; } } } break; default: break; } return $referenceId; }
/** * {@inheritDoc} */ public function getType() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getType', array()); return parent::getType(); }