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 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 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; }