public function createAction($content)
 {
     $form = $this->formFactory->create('payum_gateway_config', null, ['data_class' => GatewayConfig::class, 'csrf_protection' => false]);
     $form->submit($content);
     if ($form->isValid()) {
         /** @var GatewayConfigInterface $gatewayConfig */
         $gatewayConfig = $form->getData();
         $this->gatewayConfigStorage->update($gatewayConfig);
         $getUrl = $this->urlGenerator->generate('gateway_get', array('name' => $gatewayConfig->getGatewayName()), $absolute = true);
         return new JsonResponse(array('gateway' => $this->gatewayConfigToJsonConverter->convert($gatewayConfig)), 201, array('Location' => $getUrl));
     }
     return new JsonResponse($this->formToJsonConverter->convertInvalid($form), 400);
 }
Beispiel #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);
 }
 /**
  * @param Request $request
  *
  * @return JsonResponse
  */
 public function updateAction($content, Request $request)
 {
     $this->forward400Unless('json' == $request->getContentType());
     $this->forward404Unless($payment = $this->findRequestedPayment($request));
     $rawPayment = ArrayObject::ensureArrayObject($content);
     $form = $this->formFactory->create(UpdatePaymentType::class, $payment);
     $form->submit((array) $rawPayment);
     if (false == $form->isValid()) {
         return new JsonResponse($this->formToJsonConverter->convertInvalid($form), 400);
     }
     /** @var Payment $payment */
     $payment = $form->getData();
     $storage = $this->payum->getStorage($payment);
     $storage->update($payment);
     return new JsonResponse(array('payment' => $this->paymentToJsonConverter->convert($payment)));
 }
 /**
  * @param Request $request
  *
  * @return JsonResponse
  */
 public function updateAction($content, Request $request)
 {
     $payment = $this->findRequestedPayment($request);
     $rawPayment = ArrayObject::ensureArrayObject($content);
     $form = $this->formFactory->create('update_payment', $payment);
     $form->submit((array) $rawPayment);
     if (false == $form->isValid()) {
         return new JsonResponse($this->formToJsonConverter->convertInvalid($form), 400);
     }
     /** @var Payment $payment */
     $payment = $form->getData();
     $payment->setAfterUrl($payment->getAfterUrl() ?: $request->getSchemeAndHttpHost());
     $payment->setDetails([]);
     $storage = $this->registry->getStorage($payment);
     $storage->update($payment);
     $token = $this->tokenFactory->createAuthorizeToken($payment->getGatewayName(), $payment, $payment->getAfterUrl());
     $payment->addLink('authorize', $token->getTargetUrl());
     $token = $this->tokenFactory->createCaptureToken($payment->getGatewayName(), $payment, $payment->getAfterUrl());
     $payment->addLink('capture', $token->getTargetUrl());
     $token = $this->tokenFactory->createNotifyToken($payment->getGatewayName(), $payment);
     $payment->addLink('notify', $token->getTargetUrl());
     $storage->update($payment);
     return new JsonResponse(array('payment' => $this->paymentToJsonConverter->convert($payment)));
 }