Requirement::UUID_V6], )] public function __invoke(Request $request, #[MapEntity(expr: 'repository.findOneActive(id)')] PlatformOffer $platformOffer, #[CurrentUser] User $user, Payum $payum, TranslatorInterface $translator, UserManager $userManager, LoggerInterface $logger): Response { try { /** @var PaymentToken $token */ $token = $payum->getHttpRequestVerifier()->verify($request); } catch (\Exception $e) { $logger->error($e->getMessage()); throw new UnprocessableEntityHttpException('Cannot verify Payum token.'); } $gateway = $payum->getGateway($token->getGatewayName()); $status = new GetHumanStatus($token); $gateway->execute($status); // Not captured if (!$status->isCaptured()) { $this->addFlashWarning($translator->trans($this->getI18nPrefix().'.status.'.$status->getValue())); } $user ->setMembershipPaid(true) ->setStartAt(CarbonImmutable::today()) ->setPayedAt(CarbonImmutable::now()) ; if (($offerType = $platformOffer->getType())->isRecurring()) { $user->setEndAt(new CarbonImmutable($offerType->getEndAtInterval())); } $userManager->save($user, true); $this->addFlashSuccess($translator->trans($this->getI18nPrefix().'.flash.success', [ '%platform%' => $platformOffer->getConfiguration()?->getPlatformName()], )); $request->getSession()->remove('payment_in_progress'); return $this->redirectToRoute('app_user_my_account'); } }