/**
  * @Route("/{id}", requirements={"id"="\d+"}, name="api_public_payment_request_info")
  * @Method("GET")
  * @ParamConverter(
  *      "paymentRequest",
  *      class="CivixCoreBundle:Poll\Question\PaymentRequest",
  *      options={"repository_method" = "getAllowOutsidersPaymentRequestById"}
  * )
  * @ApiDoc(
  *     resource=true,
  *     description="PaymentRequest",
  *     statusCodes={
  *         200="Returns payment request",
  *         405="Method Not Allowed"
  *     }
  * )
  */
 public function getPaymentRequestById(PaymentRequest $paymentRequest)
 {
     $response = new Response();
     $response->headers->set('Content-Type', 'application/json');
     if (!$paymentRequest->getPublishedAt() || !$paymentRequest->getIsAllowOutsiders()) {
         throw $this->createNotFoundException();
     }
     $response->setContent($this->jmsSerialization($paymentRequest, array('api-poll-public')));
     return $response;
 }
 public function createPaymentRequestOrder(PaymentRequest $paymentRequest)
 {
     $customer = $this->bpc->getCustomer($this->cm->getCustomerByUser($paymentRequest->getUser())->getBalancedUri());
     $order = $customer->orders->create();
     $order->description = $paymentRequest->getTitle();
     $order->meta = ['payment_request_id' => $paymentRequest->getId()];
     $order->save();
     $paymentRequestOrder = new PaymentRequestOrder();
     $paymentRequestOrder->setBalancedUri($order->href)->setPaymentRequest($paymentRequest);
     $this->em->persist($paymentRequestOrder);
     $this->em->flush($paymentRequestOrder);
     return $paymentRequestOrder;
 }
 public function sendPaymentRequestOrderPayout(PaymentRequest $paymentRequest, PaymentHistory $history, $marketplaceAmount, $customerAmount)
 {
     $message = $this->createMessage('Powerline Payout: ' . $history->getPublicId(), $paymentRequest->getUser()->getEmail(), 'CivixCoreBundle:Email:payment_request_payout.html.twig', compact('history', 'paymentRequest', 'marketplaceAmount', 'customerAmount'));
     $this->mailer->send($message);
 }
 public function getType()
 {
     return 'group_' . parent::getType();
 }
 public function publishPaymentRequestToActivity(PaymentRequest $paymentRequest, $users = null)
 {
     if ($paymentRequest->getIsCrowdfunding()) {
         $activity = new ActivityCrowdfundingPaymentRequest();
         $activity->setExpireAt($paymentRequest->getCrowdfundingDeadline());
     } else {
         $activity = new ActivityPaymentRequest();
         $expireDate = new \DateTime('now');
         $expireDate->add(new \DateInterval('P' . $this->settings->get(Settings::DEFAULT_EXPIRE_INTERVAL)->getValue() . 'D'));
         $activity->setExpireAt($expireDate);
     }
     $activity->setQuestionId($paymentRequest->getId())->setTitle($paymentRequest->getTitle())->setDescription($paymentRequest->getSubject())->setSentAt($paymentRequest->getPublishedAt());
     $method = 'set' . ucfirst($paymentRequest->getUser()->getType());
     $activity->{$method}($paymentRequest->getUser());
     $this->setImage($activity, $paymentRequest);
     $this->cm->addPollRootComment($paymentRequest, $paymentRequest->getTitle());
     $this->entityManager->persist($activity);
     $this->entityManager->flush($activity);
     if ($users) {
         $this->createActivityConditionsForUsers($activity, $users);
     } else {
         $this->createActivityConditionsForQuestion($activity, $paymentRequest);
     }
     $this->pushSender->addToQueue('sendPushPublishQuestion', [$paymentRequest->getId(), "Donate: {$paymentRequest->getTitle()}"]);
     return $activity;
 }
 public function getType()
 {
     return 'representative_' . parent::getType();
 }
Example #7
0
 public function chargeToPaymentRequest(PaymentRequest $paymentRequest, Answer $answer, UserInterface $user)
 {
     $customer = $this->em->getRepository(Customer::getEntityClassByUser($user))->findOneBy(['user' => $user]);
     $account = $this->em->getRepository(Account::getEntityClassByUser($paymentRequest->getUser()))->findOneBy(['user' => $paymentRequest->getUser()]);
     $charge = new Charge($customer, $account, $paymentRequest->getId());
     $amount = $answer->getCurrentPaymentAmount() * 100;
     $sc = \Stripe\Charge::create(['amount' => $amount, 'application_fee' => ceil($amount * 0.021 + 50), 'currency' => 'usd', 'customer' => $customer->getStripeId(), 'statement_descriptor' => 'PowerlinePay-' . $this->getAppearsOnStatement($paymentRequest->getUser()), 'destination' => $account->getStripeId(), 'description' => 'Powerline Payment: (' . $paymentRequest->getUser()->getOfficialName() . ') - (' . $paymentRequest->getTitle() . ')']);
     $charge->updateStripeData($sc);
     $this->em->persist($charge);
     $this->em->flush($charge);
     return $charge;
 }