/**
  * {@inheritDoc}
  *
  * @param Capture $request
  */
 public function execute($request)
 {
     if (false == $this->supports($request)) {
         throw RequestNotSupportedException::createActionNotSupported($this, $request);
     }
     /** @var Cart $cart */
     $cart = $request->getModel();
     $cartStorage = $this->payum->getStorage($cart);
     $paymentStorage = $this->payum->getStorage('Acme\\PaymentBundle\\Model\\PaymentDetails');
     /** @var $payment PaymentDetails */
     $payment = $paymentStorage->create();
     $payment['PAYMENTREQUEST_0_CURRENCYCODE'] = $cart->getCurrency();
     $payment['PAYMENTREQUEST_0_AMT'] = $cart->getPrice();
     $payment['RETURNURL'] = $request->getToken()->getTargetUrl();
     $payment['CANCELURL'] = $request->getToken()->getTargetUrl();
     $paymentStorage->update($payment);
     $cart->setDetails($payment);
     $cartStorage->update($cart);
     $request->setModel($payment);
     $this->gateway->execute($request);
 }
Пример #2
0
 /**
  * @param Request $request
  *
  * @return JsonResponse
  */
 public function createAction($content, Request $request)
 {
     $this->forward400Unless('json' == $request->getContentType() || 'form' == $request->getContentType());
     $rawToken = ArrayObject::ensureArrayObject($content);
     $form = $this->formFactory->create(CreateTokenType::class);
     $form->submit((array) $rawToken);
     if (false == $form->isValid()) {
         return new JsonResponse($this->formToJsonConverter->convertInvalid($form), 400);
     }
     $data = $form->getData();
     /** @var Payment $payment */
     $this->forward400Unless($payment = $this->payum->getStorage(Payment::class)->find($data['paymentId']));
     if ($data['type'] == 'capture') {
         $token = $this->payum->getTokenFactory()->createCaptureToken('', $payment, $data['afterUrl'], ['payum_token' => null, 'paymentId' => $payment->getId()]);
     } else {
         if ($data['type'] == 'authorize') {
             $token = $this->payum->getTokenFactory()->createAuthorizeToken('', $payment, $data['afterUrl'], ['payum_token' => null, 'paymentId' => $payment->getId()]);
         } else {
             $this->forward400(sprintf('The token type %s is not supported', $data['type']));
         }
     }
     return new JsonResponse(['token' => $this->tokenToJsonConverter->convert($token)], 201);
 }
Пример #3
0
 /**
  * {@inheritDoc}
  */
 public function getStorage($class)
 {
     return $this->registry->getStorage($class);
 }
Пример #4
0
 /**
  * @param Request $request
  *
  * @return Payment
  */
 protected function findRequestedPayment(Request $request)
 {
     // TODO: add validation that id is not empty and model actually exists.
     $storage = $this->payum->getStorage(Payment::class);
     return $storage->find($request->attributes->get('id'));
 }
Пример #5
0
 /**
  * @param Request $request
  *
  * @return Payment
  */
 protected function findRequestedPayment(Request $request)
 {
     $token = $this->httpRequestVerifier->verify($request);
     $storage = $this->registry->getStorage('Payum\\Server\\Model\\Payment');
     return $storage->find($token->getDetails());
 }