/** * Capture payment * * @param Mage_Sales_Model_Order_Payment $payment * @return Mage_Paypal_Model_Payflowpro */ public function capture(Varien_Object $payment, $amount) { if ($payment->getReferenceTransactionId()) { $request = $this->_buildPlaceRequest($payment, $amount); $request->setTrxtype(self::TRXTYPE_SALE); $request->setOrigid($payment->getReferenceTransactionId()); } elseif ($payment->getParentTransactionId()) { $request = $this->_buildBasicRequest($payment); $request->setTrxtype(self::TRXTYPE_DELAYED_CAPTURE); $request->setOrigid($payment->getParentTransactionId()); } else { $request = $this->_buildPlaceRequest($payment, $amount); $request->setTrxtype(self::TRXTYPE_SALE); } $response = $this->_postRequest($request); $this->_processErrors($response); switch ($response->getResultCode()) { case self::RESPONSE_CODE_APPROVED: $payment->setTransactionId($response->getPnref())->setIsTransactionClosed(0); break; case self::RESPONSE_CODE_FRAUDSERVICE_FILTER: $payment->setTransactionId($response->getPnref())->setIsTransactionClosed(0); $payment->setIsTransactionPending(true); $payment->setIsFraudDetected(true); break; } return $this; }