pendingCaptureFactory = $pendingCaptureFactory; $this->pendingAuthorizationFactory = $pendingAuthorizationFactory; $this->pendingRefundFactory = $pendingRefundFactory; $this->searchCriteriaBuilderFactory = $searchCriteriaBuilderFactory; $this->orderPaymentRepository = $orderPaymentRepository; $this->orderRepository = $orderRepository; $this->transactionRepository = $transactionRepository; } /** * {@inheritdoc} */ public function queuePendingCapture(AmazonCaptureDetails $details, $paymentId, $orderId) { $this->pendingCaptureFactory->create() ->setCaptureId($details->getTransactionId()) ->setPaymentId($paymentId) ->setOrderId($orderId) ->save(); } /** * {@inheritdoc} */ public function queuePendingAuthorization(AmazonAuthorizationDetails $details, OrderInterface $order) { $pendingAuthorization = $this->pendingAuthorizationFactory->create() ->setAuthorizationId($details->getAuthorizeTransactionId()); if ($details->hasCapture()) { $pendingAuthorization->setCaptureId($details->getCaptureTransactionId()) ->setCapture(true); } $order->addRelatedObject($pendingAuthorization); } /** * {@inheritdoc} */ public function queuePendingRefund(AmazonRefundDetails $details, PaymentInfoInterface $payment) { $this->pendingRefundFactory->create() ->setRefundId($details->getRefundId()) ->setPaymentId($payment->getId()) ->setOrderId($payment->getOrder()->getId()) ->save(); } /** * {@inheritdoc} */ public function closeTransaction($transactionId, PaymentInfoInterface $payment, OrderInterface $order) { $this->getTransaction($transactionId, $payment, $order)->setIsClosed(1)->save(); } /** * {@inheritdoc} */ public function getTransaction($transactionId, PaymentInfoInterface $payment, OrderInterface $order) { $searchCriteriaBuilder = $this->searchCriteriaBuilderFactory->create(); $searchCriteriaBuilder->addFilter( TransactionInterface::TXN_ID, $transactionId ); $searchCriteriaBuilder->addFilter( TransactionInterface::ORDER_ID, $order->getId() ); $searchCriteriaBuilder->addFilter( TransactionInterface::PAYMENT_ID, $payment->getId() ); $searchCriteria = $searchCriteriaBuilder ->setPageSize(1) ->setCurrentPage(1) ->create(); $transactionList = $this->transactionRepository->getList($searchCriteria); if (count($items = $transactionList->getItems())) { $transaction = current($items); $transaction ->setPayment($payment) ->setOrder($order); return $transaction; } throw new NoSuchEntityException(); } }