/** * Authorizes payment. * * @param OrderPaymentInterface $payment * @param bool $isOnline * @param string|float $amount * @return OrderPaymentInterface */ public function authorize(OrderPaymentInterface $payment, $isOnline, $amount) { // check for authorization amount to be equal to grand total /** * @var $payment Payment */ $payment->setShouldCloseParentTransaction(false); $isSameCurrency = $payment->isSameCurrency(); if (!$isSameCurrency || !$payment->isCaptureFinal($amount)) { $payment->setIsFraudDetected(true); } // update totals $amount = $payment->formatAmount($amount, true); $payment->setBaseAmountAuthorized($amount); // do authorization $order = $payment->getOrder(); if ($isOnline) { // invoke authorization on gateway $method = $payment->getMethodInstance(); $method->setStore($order->getStoreId()); $method->authorize($payment, $amount); } $message = $this->stateCommand->execute($payment, $amount, $order); // update transactions, order state and add comments $transaction = $payment->addTransaction(Transaction::TYPE_AUTH); $message = $payment->prependMessage($message); $payment->addTransactionCommentsToOrder($transaction, $message); return $payment; }
/** * Create new invoice with maximum qty for invoice for each item * register this invoice and capture * * @param OrderPaymentInterface $payment * @return Invoice */ protected function invoice(OrderPaymentInterface $payment) { /** @var Invoice $invoice */ $invoice = $payment->getOrder()->prepareInvoice(); $invoice->register(); if ($payment->getMethodInstance()->canCapture()) { $invoice->capture(); } $payment->getOrder()->addRelatedObject($invoice); return $invoice; }
/** * @param OrderPaymentInterface $payment * @param string|float $amount * @return OrderPaymentInterface */ public function order(OrderPaymentInterface $payment, $amount) { /** * @var $payment Payment */ // update totals $amount = $payment->formatAmount($amount, true); // do ordering $order = $payment->getOrder(); $method = $payment->getMethodInstance(); $method->setStore($order->getStoreId()); $method->order($payment, $amount); if ($payment->getSkipOrderProcessing()) { return $payment; } $message = $this->stateCommand->execute($payment, $amount, $order); // update transactions, order state and add comments $transaction = $payment->addTransaction(Transaction::TYPE_ORDER); $message = $payment->prependMessage($message); $payment->addTransactionCommentsToOrder($transaction, $message); return $payment; }
/** * @return string */ public function getMethodTitle() { return $this->orderPayment->getMethodInstance()->getTitle(); }