vendor/payum/payum-bundle/Controller/CaptureController.php line 10

Open in your IDE?
  1. <?php
  2. namespace Payum\Bundle\PayumBundle\Controller;
  3. use Payum\Core\Reply\HttpPostRedirect;
  4. use Payum\Core\Request\Capture;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpKernel\Exception\HttpException;
  8. class CaptureController extends PayumController
  9. {
  10.     public function doSessionTokenAction(Request $request): RedirectResponse
  11.     {
  12.         if (false === $request->hasSession()) {
  13.             throw new HttpException(400'This controller requires session to be started.');
  14.         }
  15.         if (null === $hash $request->getSession()->get('payum_token')) {
  16.             throw new HttpException(400'This controller requires token hash to be stored in the session.');
  17.         }
  18.         $request->getSession()->remove('payum_token');
  19.         $redirectUrl $this->generateUrl('payum_capture_do'array_replace(
  20.             $request->query->all(),
  21.             array(
  22.                 'payum_token' => $hash,
  23.             )
  24.         ));
  25.         if ($request->isMethod('POST')) {
  26.             throw new HttpPostRedirect($redirectUrl$request->request->all());
  27.         }
  28.         return $this->redirect($redirectUrl);
  29.     }
  30.     public function doAction(Request $request): RedirectResponse
  31.     {
  32.         $token $this->getPayum()->getHttpRequestVerifier()->verify($request);
  33.         $gateway $this->getPayum()->getGateway($token->getGatewayName());
  34.         $gateway->execute(new Capture($token));
  35.         $this->getPayum()->getHttpRequestVerifier()->invalidate($token);
  36.         return $this->redirect($token->getAfterUrl());
  37.     }
  38. }