/** * {@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); }
/** * @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); }
/** * {@inheritDoc} */ public function getStorage($class) { return $this->registry->getStorage($class); }
/** * @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')); }
/** * @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()); }