return $handler;
} private function getPaymentTransactionStruct(string
$orderTransactionId, SalesChannelContext
$context): AsyncPaymentTransactionStruct
{ $criteria =
new Criteria([$orderTransactionId]);
$criteria->
setTitle('payment-service::load-transaction'
);
$criteria->
addAssociation('order'
);
$criteria->
addAssociation('paymentMethod.appPaymentMethod.app'
);
$this->eventDispatcher->
dispatch(new FinalizePaymentOrderTransactionCriteriaEvent($orderTransactionId,
$criteria,
$context));
/** @var OrderTransactionEntity|null $orderTransaction */
$orderTransaction =
$this->orderTransactionRepository->
search($criteria,
$context->
getContext())->
first();
if ($orderTransaction === null ||
$orderTransaction->
getOrder() === null
) { throw PaymentException::
invalidTransaction($orderTransactionId);
} return $this->paymentTransactionStructFactory->
async($orderTransaction,
$orderTransaction->
getOrder(), ''
);
}}