/** * Capture an authorized payment. This should only be available if there * is an open authorized transaction already. * * @param Varien_Object $payment * @param int|float $amount */ public function capture(Varien_Object $payment, $amount) { $order = $payment->getOrder(); $transactionId = $payment->getParentTransactionId(); if (empty($transactionId)) { // @see Made_Dibs_Model_Observer ~ line 58 $transactionId = $payment->getAuthorizeTransactionId(); $payment->setParentTransactionId($transactionId); } $parameters = array('transactionId' => $transactionId, 'amount' => $this->formatAmount($amount, $order->getOrderCurrencyCode()), 'doReAuthIfExpired' => (bool) $this->getConfigData('reauth_expired') ? 'true' : 'false'); $result = $this->_apiCall('CaptureTransaction', $parameters); $transactionString = $transactionId . '-capture-' . $this->formatAmount($order->getBaseTotalDue(), $order->getOrderCurrencyCode()); $payment->setTransactionId($transactionString)->setIsTransactionClosed(true)->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, array_merge($result, $parameters)); return $this; }