public function chargeToPaymentRequest(PaymentRequest $paymentRequest, Answer $answer, UserInterface $user) { $customerEntity = $this->cm->getCustomerByUser($user); /** @var Card $cardEntity */ $cardEntity = $this->em->getRepository(Card::class)->findOneByCustomer($customerEntity); /** @var PaymentRequestOrder $orderEntity */ $orderEntity = $this->em->getRepository(PaymentRequestOrder::class)->findOneByPaymentRequest($paymentRequest); $card = $this->bpc->getCard($cardEntity->getBalancedUri()); $debitData = $card->debits->create(array('amount' => $answer->getCurrentPaymentAmount() * 100, 'order' => $orderEntity->getBalancedUri(), 'appears_on_statement_as' => 'PowerlinePay-' . $this->getAppearsOnStatement($paymentRequest->getUser()), 'description' => 'Powerline Payment: (' . $paymentRequest->getUser()->getOfficialName() . ') - (' . $paymentRequest->getTitle() . ')')); $paymentHistory = $this->saveToPaymentHistory($debitData, $customerEntity, $this->cm->getCustomerByUser($paymentRequest->getUser()), $answer->getCurrentPaymentAmount(), $paymentRequest->getId(), $orderEntity->getPublicId()); if ($paymentHistory->isSucceeded()) { $this->es->sendPaymentRequestCharged($paymentHistory, $paymentRequest, $user); } }
public function getCurrentPaymentAmount() { $this->__load(); return parent::getCurrentPaymentAmount(); }
public function updateCrowdfundingPledgedAmount(Answer $answer) { $this->getEntityManager()->createQuery('UPDATE CivixCoreBundle:Poll\\Question\\PaymentRequest q SET q.crowdfundingPledgedAmount = COALESCE(q.crowdfundingPledgedAmount,0) + :amount WHERE q.id = :id')->setParameter('amount', $answer->getCurrentPaymentAmount())->setParameter('id', $answer->getQuestion()->getId())->getSingleScalarResult(); }
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; }