/** * Capture payment * * @param Varien_Object $payment * @param float $amount * @return Mage_Payment_Model_Abstract */ public function capture(Varien_Object $payment, $amount) { //parent::capture($payment, $amount); $authTransactionId = $payment->getParentTransactionId(); if (!$authTransactionId) { return false; //$this->authorize($payment, $amount); } $request = $this->_getApiRequest(); $request->setData('transaction_id', $authTransactionId)->setData('is_capture_complete', (int) $payment->getShouldCloseParentTransaction())->setData('amount', $amount)->setData('currency_code', $payment->getOrder()->getBaseCurrencyCode())->setData('order_id', $payment->getOrder()->getIncrementId())->setData('is_first_capture', $payment->hasFirstCaptureFlag() ? $payment->getFirstCaptureFlag() : true); $api = $this->_getApi()->doCapture($request); $this->_importResultToPayment($payment, $api->getResponse()); $apiResponse = $api->getResponse(); if (isset($apiResponse['fraud']) && (bool) $apiResponse['fraud']) { $message = Mage::helper('enterprise_pbridge')->__('Merchant review is required for further processing.'); $payment->getOrder()->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATUS_FRAUD, $message); } return $apiResponse; }