예제 #1
0
 /**
  * @param Request $request
  *
  * @return JsonResponse
  */
 public function createAction($content, Request $request)
 {
     $this->forward400Unless('json' == $request->getContentType() || 'form' == $request->getContentType());
     $rawPayment = ArrayObject::ensureArrayObject($content);
     $form = $this->formFactory->create('create_payment');
     $form->submit((array) $rawPayment);
     if (false == $form->isValid()) {
         return new JsonResponse($this->formToJsonConverter->convertInvalid($form), 400);
     }
     /** @var Payment $payment */
     $payment = $form->getData();
     $payment->setId(Random::generateToken());
     $storage = $this->payum->getStorage($payment);
     $storage->update($payment);
     $payment->setNumber($payment->getNumber() ?: date('Ymd-' . mt_rand(10000, 99999)));
     $storage->update($payment);
     // TODO
     $payment->setValue('links', 'done', 'http://dev.payum-server.com/client/index.html');
     $payment->setValue('links', 'self', $this->urlGenerator->generate('payment_get', ['id' => $payment->getId()], true));
     $token = $this->payum->getTokenFactory()->createAuthorizeToken($payment->getGatewayName(), $payment, $payment->getValue('links', 'done'), ['payum_token' => null, 'payment' => $payment->getId()]);
     $payment->setValue('links', 'authorize', $token->getTargetUrl());
     $token = $this->payum->getTokenFactory()->createCaptureToken($payment->getGatewayName(), $payment, $payment->getValue('links', 'done'), ['payum_token' => null, 'payment' => $payment->getId()]);
     $payment->setValue('links', 'capture', $token->getTargetUrl());
     $token = $this->payum->getTokenFactory()->createNotifyToken($payment->getGatewayName(), $payment);
     $payment->setValue('links', 'notify', $token->getTargetUrl());
     $storage->update($payment);
     return new JsonResponse(array('payment' => $this->paymentToJsonConverter->convert($payment)), 201, array('Location' => $payment->getValue('links', 'self')));
 }
예제 #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);
 }