/** * Authorize payment * * @param Mage_Sales_Model_Order_Payment | Mage_Sales_Model_Quote_Payment $payment * @param mixed $amount * @return Mage_Paypal_Model_Payflowlink */ public function authorize(Varien_Object $payment, $amount) { $txnId = $payment->getAdditionalInformation('authorization_id'); /** @var $transaction Mage_Paypal_Model_Payment_Transaction */ $transaction = Mage::getModel('paypal/payment_transaction'); $transaction->loadByTxnId($txnId); $payment->setTransactionId($txnId)->setIsTransactionClosed(0); if ($payment->getAdditionalInformation('paypal_fraud_filters') !== null) { $payment->setIsTransactionPending(true); $payment->setIsFraudDetected(true); } if ($transaction->getId() && $payment->getAdditionalInformation('authorization_amount') != Mage_Paypal_Model_Config::AUTHORIZATION_AMOUNT_FULL) { $this->_addTransaction($payment, $txnId); } $this->_authorize($payment, $amount, $transaction, $txnId); if ($payment->getAdditionalInformation('authorization_amount') != Mage_Paypal_Model_Config::AUTHORIZATION_AMOUNT_FULL) { $payment->setParentTransactionId($txnId); parent::authorize($payment, $amount); if ($payment->getTransactionId()) { $payment->setAdditionalInformation('authorization_id', $payment->getTransactionId()); } } $transaction->delete(); return $this; }