public function prepareSecureFlow(PayIn $payIn, SecureFlowSession $session, Response $response)
 {
     $session->setPayInId($payIn->Id);
     $this->storageService->set(self::SESSION_PREFIX . $session->getPayInId(), $session);
     if ('CREATED' == $payIn->Status && $payIn->ExecutionDetails instanceof PayInExecutionDetails) {
         $response->setStatusCode(302);
         $response->headers->set('Location', $payIn->ExecutionDetails->SecureModeRedirectURL);
     }
     return $this;
 }
 /**
  * To prepare the request, call mangopay to retrieve url and token to submit the card registration form
  * and register registration session's data in the storage, then prepare the url of return.
  *
  *
  * @param UserInterface                $user
  * @param string                       $cardType
  * @param null|CardRegistrationSession $session
  *
  * @return CardRegistrationResult
  */
 public function prepare(UserInterface $user, CardRegistrationSession $session, $cardType = 'CB_VISA_MASTERCARD')
 {
     if (empty($user->getMangoPayId())) {
         throw new BadMangoEntityException('Error, the user has not a valid mango pay id');
     }
     $apiResult = $this->getCardRegistrationData($user, $cardType);
     $session->setCardRegistrationId($apiResult->Id)->setUser($user);
     $sessionId = $session->getSessionId();
     $this->storageService->set(self::SESSION_PREFIX . $sessionId, $session);
     $result = new CardRegistrationResult($user);
     $result->setAccessKeyRef($apiResult->AccessKey);
     $result->setData($apiResult->PreregistrationData);
     $result->setCardRegistrationUrl($apiResult->CardRegistrationURL);
     $result->setId($apiResult->Id);
     $result->setReturnUrl($this->router->generate($this->returnRouteName, ['registrationSessionId' => $sessionId], UrlGeneratorInterface::ABSOLUTE_URL));
     return $result;
 }