/** * @magentoDataFixture Magento/Sales/_files/order.php */ public function testRedirectActionIsContentGenerated() { $this->_order->load('100000001', 'increment_id'); $this->_order->getPayment()->setMethod(\Magento\Paypal\Model\Config::METHOD_WPS); $this->_order->save(); $this->_order->load('100000001', 'increment_id'); $this->_session->setLastRealOrderId($this->_order->getRealOrderId())->setLastQuoteId($this->_order->getQuoteId()); $this->dispatch('paypal/standard/redirect'); $this->assertContains('<form action="https://www.paypal.com/cgi-bin/webscr" id="paypal_standard_checkout"' . ' name="paypal_standard_checkout" method="POST">', $this->getResponse()->getBody()); }
/** * @param int|null $orderId * @param int|null $incrementId * @param \Magento\Sales\Model\Order|\PHPUnit_Framework_MockObject_MockObject $orderMock * @dataProvider getLastRealOrderDataProvider */ public function testGetLastRealOrder($orderId, $incrementId, $orderMock) { $orderFactory = $this->getMockBuilder('Magento\\Sales\\Model\\OrderFactory')->disableOriginalConstructor()->setMethods(array('create'))->getMock(); $orderFactory->expects($this->once())->method('create')->will($this->returnValue($orderMock)); $messageCollectionFactory = $this->getMockBuilder('Magento\\Framework\\Message\\CollectionFactory')->disableOriginalConstructor()->getMock(); $quoteFactory = $this->getMockBuilder('Magento\\Sales\\Model\\QuoteFactory')->disableOriginalConstructor()->getMock(); $appState = $this->getMock('\\Magento\\Framework\\App\\State', array(), array(), '', false); $appState->expects($this->any())->method('isInstalled')->will($this->returnValue(true)); $request = $this->getMock('\\Magento\\Framework\\App\\Request\\Http', array(), array(), '', false); $request->expects($this->any())->method('getHttpHost')->will($this->returnValue(array())); $constructArguments = $this->_helper->getConstructArguments('Magento\\Checkout\\Model\\Session', array('request' => $request, 'orderFactory' => $orderFactory, 'messageCollectionFactory' => $messageCollectionFactory, 'quoteFactory' => $quoteFactory, 'storage' => new \Magento\Framework\Session\Storage())); $this->_session = $this->_helper->getObject('Magento\\Checkout\\Model\\Session', $constructArguments); $this->_session->setLastRealOrderId($orderId); $this->assertSame($orderMock, $this->_session->getLastRealOrder()); if ($orderId == $incrementId) { $this->assertSame($orderMock, $this->_session->getLastRealOrder()); } }
/** * {@inheritdoc} */ public function placeOrder($cartId, $agreements = null, PaymentInterface $paymentMethod = null) { $quote = $this->quoteRepository->getActive($cartId); if ($paymentMethod) { $paymentMethod->setChecks([\Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_CHECKOUT, \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_COUNTRY, \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_CURRENCY, \Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX, \Magento\Payment\Model\Method\AbstractMethod::CHECK_ZERO_TOTAL]); $quote->getPayment()->setQuote($quote); $data = $paymentMethod->getData(); if (isset($data['additional_data'])) { $data = array_merge($data, (array) $data['additional_data']); unset($data['additional_data']); } $quote->getPayment()->importData($data); } if ($quote->getCheckoutMethod() === self::METHOD_GUEST) { $quote->setCustomerId(null); $quote->setCustomerEmail($quote->getBillingAddress()->getEmail()); $quote->setCustomerIsGuest(true); $quote->setCustomerGroupId(\Magento\Customer\Api\Data\GroupInterface::NOT_LOGGED_IN_ID); } $order = $this->submit($quote); $this->checkoutSession->setLastQuoteId($quote->getId()); $this->checkoutSession->setLastSuccessQuoteId($quote->getId()); $this->checkoutSession->setLastOrderId($order->getId()); $this->checkoutSession->setLastRealOrderId($order->getIncrementId()); $this->checkoutSession->setLastOrderStatus($order->getStatus()); $this->eventManager->dispatch('checkout_submit_all_after', ['order' => $order, 'quote' => $quote]); return $order->getId(); }
/** * {@inheritdoc} */ public function placeOrder($cartId, PaymentInterface $paymentMethod = null) { $quote = $this->quoteRepository->getActive($cartId); if ($paymentMethod) { $paymentMethod->setChecks([\Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_CHECKOUT, \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_COUNTRY, \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_CURRENCY, \Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX, \Magento\Payment\Model\Method\AbstractMethod::CHECK_ZERO_TOTAL]); $quote->getPayment()->setQuote($quote); $data = $paymentMethod->getData(); $quote->getPayment()->importData($data); } if ($quote->getCheckoutMethod() === self::METHOD_GUEST) { $quote->setCustomerId(null); $quote->setCustomerEmail($quote->getBillingAddress()->getEmail()); $quote->setCustomerIsGuest(true); $quote->setCustomerGroupId(\Magento\Customer\Api\Data\GroupInterface::NOT_LOGGED_IN_ID); } $this->eventManager->dispatch('checkout_submit_before', ['quote' => $quote]); $order = $this->submit($quote); if (null == $order) { throw new LocalizedException(__('Unable to place order. Please try again later.')); } $this->checkoutSession->setLastQuoteId($quote->getId()); $this->checkoutSession->setLastSuccessQuoteId($quote->getId()); $this->checkoutSession->setLastOrderId($order->getId()); $this->checkoutSession->setLastRealOrderId($order->getIncrementId()); $this->checkoutSession->setLastOrderStatus($order->getStatus()); $this->eventManager->dispatch('checkout_submit_all_after', ['order' => $order, 'quote' => $quote]); return $order->getId(); }
public function execute() { $redirectTo = 'checkout/cart'; $defaultErrorMessage = $this->_dataHelper->__('An error occurred during the payment process.'); try { $this->_logger->debug(__METHOD__ . ':' . print_r($this->_request->getPost()->toArray(), true)); $this->_cart->getCustomerSession()->unsUniqueId(); if (!$this->_request->isPost()) { throw new \Exception('Not a post request'); } $return = \WirecardCEE_QPay_ReturnFactory::getInstance($this->_request->getPost()->toArray(), $this->_dataHelper->getConfigData('basicdata/secret')); if (!$return->validate()) { throw new \Exception('Validation error: invalid response'); } if (!strlen($return->mage_orderId)) { throw new \Exception('Magento OrderId is missing'); } if (!strlen($return->mage_quoteId)) { throw new \Exception('Magento QuoteId is missing'); } $orderId = $this->_request->getPost('mage_orderId'); /** @var \Magento\Sales\Model\Order $order */ $order = $this->_objectManager->create('\\Magento\\Sales\\Model\\Order'); $order->loadByIncrementId($orderId); $orderExists = (bool) $order->getId(); if ($return->mage_orderCreation == 'before') { if (!$orderExists) { throw new \Exception('Order not found'); } $payment = $order->getPayment(); if (!strlen($payment->getAdditionalInformation('paymentState'))) { $this->_logger->debug(__METHOD__ . ':order not processed via confirm server2server request, check your packetfilter!'); $order = $this->_orderManagement->processOrder($return); } } if ($return->mage_orderCreation == 'after') { if (!$orderExists && ($return->getPaymentState() == \WirecardCEE_QPay_ReturnFactory::STATE_SUCCESS || $return->getPaymentState() == \WirecardCEE_QPay_ReturnFactory::STATE_PENDING)) { $this->_logger->debug(__METHOD__ . ':order not processed via confirm server2server request, check your packetfilter!'); $order = $this->_orderManagement->processOrder($return); } } switch ($return->getPaymentState()) { case \WirecardCEE_QPay_ReturnFactory::STATE_SUCCESS: case \WirecardCEE_QPay_ReturnFactory::STATE_PENDING: if ($return->getPaymentState() == \WirecardCEE_QPay_ReturnFactory::STATE_PENDING) { $this->messageManager->addNoticeMessage($this->_dataHelper->__('Your order will be processed as soon as we receive the payment confirmation from your bank.')); } /* needed for success page otherwise magento redirects to cart */ $this->_checkoutSession->setLastQuoteId($order->getQuoteId()); $this->_checkoutSession->setLastSuccessQuoteId($order->getQuoteId()); $this->_checkoutSession->setLastOrderId($order->getId()); $this->_checkoutSession->setLastRealOrderId($order->getIncrementId()); $this->_checkoutSession->setLastOrderStatus($order->getStatus()); $redirectTo = 'checkout/onepage/success'; break; case \WirecardCEE_QPay_ReturnFactory::STATE_CANCEL: /** @var \WirecardCEE_QPay_Return_Cancel $return */ $this->messageManager->addNoticeMessage($this->_dataHelper->__('You have canceled the payment process!')); if ($return->mage_orderCreation == 'before') { $quote = $this->_orderManagement->reOrder($return->mage_quoteId); $this->_checkoutSession->replaceQuote($quote)->unsLastRealOrderId(); } break; case \WirecardCEE_QPay_ReturnFactory::STATE_FAILURE: /** @var \WirecardCEE_QPay_Return_Failure $return */ $msg = $return->getErrors()->getConsumerMessage(); if (!strlen($msg)) { $msg = $defaultErrorMessage; } $this->messageManager->addErrorMessage($msg); if ($return->mage_orderCreation == 'before') { $quote = $this->_orderManagement->reOrder($return->mage_quoteId); $this->_checkoutSession->replaceQuote($quote)->unsLastRealOrderId(); } break; default: throw new \Exception('Unhandled Wirecard Checkout Page payment state:' . $return->getPaymentState()); } if ($this->_request->getPost('iframeUsed')) { $redirectUrl = $this->_url->getUrl($redirectTo); $page = $this->_resultPageFactory->create(); $page->getLayout()->getBlock('checkout.back')->addData(['redirectUrl' => $redirectUrl]); return $page; } else { $this->_redirect($redirectTo); } } catch (\Exception $e) { if (!$this->messageManager->getMessages()->getCount()) { $this->messageManager->addErrorMessage($defaultErrorMessage); } $this->_logger->debug(__METHOD__ . ':' . $e->getMessage()); $this->_redirect($redirectTo); } }