コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 public function testPrepare()
 {
     $userMock = $this->getMock('Teknoo\\MangoPayBundle\\Entity\\Interfaces\\User\\UserInterface');
     $userMock->expects($this->atLeastOnce())->method('getMangoPayId')->willReturn(9876);
     /*
      * @var CardRegistration
      */
     $cardRegistrationMock = $this->getMock('MangoPay\\CardRegistration');
     $cardRegistrationMock->Id = 1234;
     $cardRegistrationMock->Currency = 'EUR';
     $cardRegistrationMock->CardType = 'CB_VISA_MASTERCARD';
     $cardRegistrationMock->UserId = 9876;
     $cardRegistrationMock->AccessKey = 'abcdef';
     $cardRegistrationMock->PreregistrationData = 'stuvxyz';
     $cardRegistrationMock->CardRegistrationURL = 'https://foo.bar.com/return.php';
     $this->getApiCardRegistrationsMock()->expects($this->once())->method('Create')->with($this->callback(function ($card) {
         $this->assertInstanceOf('MangoPay\\CardRegistration', $card);
         $this->assertEquals('EUR', $card->Currency);
         $this->assertEquals('CB_VISA_MASTERCARD', $card->CardType);
         $this->assertEquals(9876, $card->UserId);
         return true;
     }))->willReturn($cardRegistrationMock);
     $cardSessionMock = $this->getMock('Teknoo\\MangoPayBundle\\Entity\\CardRegistrationSession', [], [], '', false);
     $cardSessionMock->expects($this->once())->method('setCardRegistrationId')->with(1234)->willReturnSelf();
     $cardSessionMock->expects($this->once())->method('setUser')->with($userMock)->willReturnSelf();
     $cardSessionMock->expects($this->once())->method('getSessionId')->willReturn('fooBarId');
     $this->getStorageServiceInterfaceMock()->expects($this->once())->method('set')->with('MANGO_CARD_REGISTRATIONfooBarId', $cardSessionMock)->willReturnSelf();
     $this->getRouterMock()->expects($this->once())->method('generate')->with('routerNameValue', ['registrationSessionId' => 'fooBarId'], Router::ABSOLUTE_URL)->willReturn('http://foo.bar.com/return');
     $result = new CardRegistrationResult($userMock);
     $result->setAccessKeyRef('abcdef');
     $result->setData('stuvxyz');
     $result->setCardRegistrationUrl('https://foo.bar.com/return.php');
     $result->setId(1234);
     $result->setReturnUrl('http://foo.bar.com/return');
     $this->assertEquals($result, $this->buildService('routerNameValue')->prepare($userMock, $cardSessionMock));
 }