vendor/shopware/storefront/Controller/AccountPaymentController.php line 38
<?php declare(strict_types=1);namespace Shopware\Storefront\Controller;use Shopware\Core\Checkout\Customer\CustomerEntity;use Shopware\Core\Checkout\Customer\SalesChannel\AbstractChangePaymentMethodRoute;use Shopware\Core\Checkout\Payment\Exception\UnknownPaymentMethodException;use Shopware\Core\Framework\Log\Package;use Shopware\Core\Framework\Uuid\Exception\InvalidUuidException;use Shopware\Core\Framework\Validation\DataBag\RequestDataBag;use Shopware\Core\System\SalesChannel\SalesChannelContext;use Shopware\Storefront\Page\Account\PaymentMethod\AccountPaymentMethodPageLoadedHook;use Shopware\Storefront\Page\Account\PaymentMethod\AccountPaymentMethodPageLoader;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;/*** @internal* Do not use direct or indirect repository calls in a controller. Always use a store-api route to get or put data*/#[Route(defaults: ['_routeScope' => ['storefront']])]#[Package('storefront')]class AccountPaymentController extends StorefrontController{/*** @internal*/public function __construct(private readonly AccountPaymentMethodPageLoader $paymentMethodPageLoader,private readonly AbstractChangePaymentMethodRoute $changePaymentMethodRoute) {}#[Route(path: '/account/payment', name: 'frontend.account.payment.page', options: ['seo' => false], defaults: ['_loginRequired' => true, '_noStore' => true], methods: ['GET'])]#[Route(path: '/account/payment', name: 'frontend.account.payment.page', options: ['seo' => false], defaults: ['_noStore' => true], methods: ['GET'])]public function paymentOverview(Request $request, SalesChannelContext $context): Response{$page = $this->paymentMethodPageLoader->load($request, $context);$this->hook(new AccountPaymentMethodPageLoadedHook($page, $context));return $this->renderStorefront('@Storefront/storefront/page/account/payment/index.html.twig', ['page' => $page]);}#[Route(path: '/account/payment', name: 'frontend.account.payment.save', defaults: ['_loginRequired' => true], methods: ['POST'])]public function savePayment(RequestDataBag $requestDataBag, SalesChannelContext $context, CustomerEntity $customer): Response{try {$paymentMethodId = $requestDataBag->getAlnum('paymentMethodId');$this->changePaymentMethodRoute->change($paymentMethodId,$requestDataBag,$context,$customer);} catch (UnknownPaymentMethodException | InvalidUuidException $exception) {$this->addFlash(self::DANGER, $this->trans('error.' . $exception->getErrorCode()));return $this->forwardToRoute('frontend.account.payment.page', ['success' => false]);}$this->addFlash(self::SUCCESS, $this->trans('account.paymentSuccess'));return new RedirectResponse($this->generateUrl('frontend.account.payment.page'));}}