function it_returns_first_payment_method_from_availables_which_is_enclosed_in_channel(CorePaymentInterface $payment, PaymentMethodRepositoryInterface $paymentMethodRepository, PaymentMethodInterface $firstPaymentMethod, PaymentMethodInterface $secondPaymentMethod, ChannelInterface $channel, OrderInterface $order) { $payment->getOrder()->willReturn($order); $order->getChannel()->willReturn($channel); $paymentMethodRepository->findEnabledForChannel($channel)->willReturn([$firstPaymentMethod, $secondPaymentMethod]); $this->getDefaultPaymentMethod($payment)->shouldReturn($firstPaymentMethod); }
function it_dispatches_event_on_payment_update($factory, PaymentInterface $payment, OrderInterface $order, StateMachineInterface $sm, Collection $payments) { $payment->getOrder()->willReturn($order); $order->getPayments()->willReturn($payments); $order->getTotal()->willReturn(0); $payments->getIterator()->willReturn(new \EmptyIterator()); $factory->get($order, OrderTransitions::GRAPH)->willReturn($sm); $sm->apply(OrderTransitions::SYLIUS_CONFIRM, true)->shouldBeCalled(); $this->updateOrderOnPayment($payment); }
/** * {@inheritDoc} */ protected function composeDetails(PaymentInterface $payment, TokenInterface $token) { if ($payment->getDetails()) { return; } $order = $payment->getOrder(); $this->payment->execute($obtainCreditCardRequest = new ObtainCreditCardRequest($order)); $creditCard = $obtainCreditCardRequest->getCreditCard(); $total = $this->currencyConverter->convert($order->getTotal(), $order->getCurrency()); $payment->setDetails(array('card' => new SensitiveValue(array('number' => $creditCard->getNumber(), 'expiryMonth' => $creditCard->getExpiryMonth(), 'expiryYear' => $creditCard->getExpiryYear(), 'cvv' => $creditCard->getSecurityCode())), 'amount' => round($total / 100, 2), 'currency' => $order->getCurrency())); }
private function composeDetails(PaymentInterface $payment, TokenInterface $token) { $order = $payment->getOrder(); $details = []; $details['hash'] = $token->getHash(); $details['p24_amount'] = $order->getTotal(); $details['p24_email'] = $order->getEmail(); $details['p24_payment_id'] = $payment->getId(); $details['p24_session_id'] = $payment->getId() . time(); $details['p24_desc'] = sprintf("Zamówienie zawierające %d produktów na całkowitą kwotę %01.2f", $order->getItems()->count(), $order->getTotal() / 100); $payment->setDetails($details); }
function it_dispatches_event_on_payment_update($factory, PaymentInterface $payment, OrderInterface $order, StateMachineInterface $sm, Collection $payments, Collection $filteredPayments) { $payment->getOrder()->willReturn($order); $payment->getState()->willReturn(PaymentInterface::STATE_COMPLETED); $payment->getAmount()->willReturn(1000); $order->getPayments()->willReturn($payments); $order->getTotal()->willReturn(1000); $order->setPaymentState(PaymentInterface::STATE_COMPLETED)->shouldBeCalled(); $payments->filter(Argument::any())->willReturn($filteredPayments); $payments->count()->willReturn(1); $filteredPayments->count()->willReturn(1); $factory->get($order, OrderTransitions::GRAPH)->willReturn($sm); $sm->apply(OrderTransitions::SYLIUS_CONFIRM, true)->shouldBeCalled(); $this->updateOrderOnPayment($payment); }
public function updateOrderOnPayment(PaymentInterface $payment) { $order = $payment->getOrder(); if (null === $order) { throw new \RuntimeException(sprintf('Cannot retrieve Order from Payment with id %s', $payment->getId())); } $total = 0; foreach ($order->getPayments() as $payment) { if ($payment->getState() === PaymentInterface::STATE_COMPLETED) { $total += $payment->getAmount(); } } if ($total === $order->getTotal()) { $this->factory->get($order, OrderTransitions::GRAPH)->apply(OrderTransitions::SYLIUS_CONFIRM, true); } }
/** * @param PaymentInterface $payment * @param TokenInterface $token * * @throws LogicException */ protected function composeDetails(PaymentInterface $payment, TokenInterface $token) { if ($payment->getDetails()) { return; } if (!$this->httpRequest) { throw new LogicException('The action can be run only when http request is set.'); } $order = $payment->getOrder(); $details = array(); $details['AMOUNT'] = $order->getTotal(); $details['CLIENTEMAIL'] = $order->getUser()->getEmail(); $details['HIDECLIENTEMAIL'] = 'yes'; $details['CLIENTUSERAGENT'] = $this->httpRequest->headers->get('User-Agent', 'Unknown'); $details['CLIENTIP'] = $this->httpRequest->getClientIp(); $details['CLIENTIDENT'] = $order->getUser()->getId(); $details['DESCRIPTION'] = sprintf('Order containing %d items for a total of %01.2f', $order->getItems()->count(), $order->getTotal() / 100); $details['ORDERID'] = $payment->getId(); $payment->setDetails($details); }
public function updateOrderOnPayment(PaymentInterface $payment) { /** @var $order OrderInterface */ $order = $payment->getOrder(); if (null === $order) { throw new \RuntimeException(sprintf('Cannot retrieve Order from Payment with id %s', $payment->getId())); } $total = 0; if (PaymentInterface::STATE_COMPLETED === $payment->getState()) { $payments = $order->getPayments()->filter(function (PaymentInterface $payment) { return PaymentInterface::STATE_COMPLETED === $payment->getState(); }); if ($payments->count() === $order->getPayments()->count()) { $order->setPaymentState(PaymentInterface::STATE_COMPLETED); } $total += $payment->getAmount(); } else { $order->setPaymentState($payment->getState()); } if ($total >= $order->getTotal()) { $this->factory->get($order, OrderTransitions::GRAPH)->apply(OrderTransitions::SYLIUS_CONFIRM, true); } }
/** * {@inheritDoc} */ protected function composeDetails(PaymentInterface $payment, TokenInterface $token) { if ($payment->getDetails()) { return; } $order = $payment->getOrder(); $details = array(); $details['PAYMENTREQUEST_0_NOTIFYURL'] = $this->tokenFactory->createNotifyToken($token->getPaymentName(), $payment)->getTargetUrl(); $details['PAYMENTREQUEST_0_INVNUM'] = $order->getNumber() . '-' . $payment->getId(); $details['PAYMENTREQUEST_0_CURRENCYCODE'] = $order->getCurrency(); $details['PAYMENTREQUEST_0_AMT'] = round($order->getTotal() / 100, 2); $details['PAYMENTREQUEST_0_ITEMAMT'] = round($order->getTotal() / 100, 2); $m = 0; foreach ($order->getItems() as $item) { $details['L_PAYMENTREQUEST_0_AMT' . $m] = round($item->getTotal() / $item->getQuantity() / 100, 2); $details['L_PAYMENTREQUEST_0_QTY' . $m] = $item->getQuantity(); $m++; } if ($order->getTaxTotal() !== 0) { $details['L_PAYMENTREQUEST_0_NAME' . $m] = 'Tax Total'; $details['L_PAYMENTREQUEST_0_AMT' . $m] = round($order->getTaxTotal() / 100, 2); $details['L_PAYMENTREQUEST_0_QTY' . $m] = 1; $m++; } if ($order->getPromotionTotal() !== 0) { $details['L_PAYMENTREQUEST_0_NAME' . $m] = 'Discount'; $details['L_PAYMENTREQUEST_0_AMT' . $m] = round($order->getPromotionTotal() / 100, 2); $details['L_PAYMENTREQUEST_0_QTY' . $m] = 1; $m++; } if ($order->getShippingTotal() !== 0) { $details['L_PAYMENTREQUEST_0_NAME' . $m] = 'Shipping Total'; $details['L_PAYMENTREQUEST_0_AMT' . $m] = round($order->getShippingTotal() / 100, 2); $details['L_PAYMENTREQUEST_0_QTY' . $m] = 1; } $payment->setDetails($details); }
/** * {@inheritDoc} */ protected function composeDetails(PaymentInterface $payment, TokenInterface $token) { if ($payment->getDetails()) { return; } if (!$this->httpRequest) { throw new LogicException('The action can be run only when http request is set.'); } $order = $payment->getOrder(); $this->payment->execute($obtainCreditCardRequest = new ObtainCreditCardRequest($order)); $details = array(); $details['AMOUNT'] = $order->getTotal(); $details['CLIENTEMAIL'] = $order->getUser()->getEmail(); $details['CLIENTUSERAGENT'] = $this->httpRequest->headers->get('User-Agent', 'Unknown'); $details['CLIENTIP'] = $this->httpRequest->getClientIp(); $details['CLIENTIDENT'] = $order->getUser()->getId(); $details['DESCRIPTION'] = sprintf('Order containing %d items for a total of %01.2f', $order->getItems()->count(), $order->getTotal() / 100); $details['ORDERID'] = $payment->getId(); $details['CARDCODE'] = new SensitiveValue($obtainCreditCardRequest->getCreditCard()->getNumber()); $details['CARDCVV'] = new SensitiveValue($obtainCreditCardRequest->getCreditCard()->getSecurityCode()); $details['CARDFULLNAME'] = new SensitiveValue($obtainCreditCardRequest->getCreditCard()->getCardholderName()); $details['CARDVALIDITYDATE'] = new SensitiveValue(sprintf('%02d-%02d', $obtainCreditCardRequest->getCreditCard()->getExpiryMonth(), substr($obtainCreditCardRequest->getCreditCard()->getExpiryYear(), -2))); $payment->setDetails($details); }
function it_does_not_support_payments_which_has_no_order_defined(PaymentInterface $payment) { $payment->getOrder()->willReturn(null); $this->supports($payment)->shouldReturn(false); }