8 use Braintree\Transaction;
52 private $transactionRepository;
57 private $filterBuilder;
62 private $searchCriteriaBuilder;
67 private $subjectReader;
72 private $braintreeAdapterFactory;
77 private $braintreeSearchAdapter;
99 $this->commandPool = $commandPool;
101 $this->filterBuilder = $filterBuilder;
103 $this->subjectReader = $subjectReader;
104 $this->braintreeAdapterFactory = $braintreeAdapterFactory;
105 $this->braintreeSearchAdapter = $braintreeSearchAdapter;
111 public function execute(array $commandSubject)
114 $paymentDO = $this->subjectReader->readPayment($commandSubject);
116 $command = $this->getCommand($paymentDO);
117 $this->commandPool->get($command)->execute($commandSubject);
132 $existsCapture = $this->isExistsCaptureTransaction(
$payment);
133 if (!
$payment->getAuthorizationTransaction() && !$existsCapture) {
138 if (!$existsCapture && !$this->isExpiredAuthorization(
$payment, $paymentDO->
getOrder())) {
153 private function isExpiredAuthorization(OrderPaymentInterface
$payment, OrderAdapterInterface $orderAdapter)
155 $adapter = $this->braintreeAdapterFactory->create($orderAdapter->getStoreId());
158 $this->braintreeSearchAdapter->id()->is(
$payment->getLastTransId()),
159 $this->braintreeSearchAdapter->status()->is(Transaction::AUTHORIZATION_EXPIRED)
172 private function isExistsCaptureTransaction(OrderPaymentInterface
$payment)
174 $this->searchCriteriaBuilder->addFilters(
177 ->setField(
'payment_id')
183 $this->searchCriteriaBuilder->addFilters(
186 ->setField(
'txn_type')
__construct(CommandPoolInterface $commandPool, TransactionRepositoryInterface $repository, FilterBuilder $filterBuilder, SearchCriteriaBuilder $searchCriteriaBuilder, SubjectReader $subjectReader, BraintreeAdapterFactory $braintreeAdapterFactory, BraintreeSearchAdapter $braintreeSearchAdapter)
execute(array $commandSubject)
static assertOrderPayment(InfoInterface $paymentInfo)