diff --git a/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js b/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js index f88b11bf87a43e7b2feb4ec95fb3eafb6f69d056..2d142417ac099b023d2e715cbac026cfdada14e9 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js @@ -6,48 +6,31 @@ define( [ 'Magento_Checkout/js/model/quote', 'Magento_Checkout/js/model/url-builder', - 'mage/storage', - 'Magento_Checkout/js/model/error-processor', 'Magento_Customer/js/model/customer', - 'Magento_Checkout/js/model/full-screen-loader' + 'Magento_Checkout/js/model/place-order' ], - function (quote, urlBuilder, storage, errorProcessor, customer, fullScreenLoader) { + function (quote, urlBuilder, customer, placeOrderService) { 'use strict'; return function (paymentData, messageContainer) { - var serviceUrl, - payload; + var serviceUrl, payload; - /** Checkout for guest and registered customer. */ - if (!customer.isLoggedIn()) { + payload = { + cartId: quote.getQuoteId(), + billingAddress: quote.billingAddress(), + paymentMethod: paymentData + }; + + if (customer.isLoggedIn()) { + serviceUrl = urlBuilder.createUrl('/carts/mine/payment-information', {}); + } else { serviceUrl = urlBuilder.createUrl('/guest-carts/:quoteId/payment-information', { quoteId: quote.getQuoteId() }); - payload = { - cartId: quote.getQuoteId(), - email: quote.guestEmail, - paymentMethod: paymentData, - billingAddress: quote.billingAddress() - }; - } else { - serviceUrl = urlBuilder.createUrl('/carts/mine/payment-information', {}); - payload = { - cartId: quote.getQuoteId(), - paymentMethod: paymentData, - billingAddress: quote.billingAddress() - }; + payload.email = quote.guestEmail; } - fullScreenLoader.startLoader(); - - return storage.post( - serviceUrl, JSON.stringify(payload) - ).fail( - function (response) { - errorProcessor.process(response, messageContainer); - fullScreenLoader.stopLoader(); - } - ); + return placeOrderService(serviceUrl, payload, messageContainer); }; } ); diff --git a/app/code/Magento/Checkout/view/frontend/web/js/model/place-order.js b/app/code/Magento/Checkout/view/frontend/web/js/model/place-order.js new file mode 100644 index 0000000000000000000000000000000000000000..68548cb1b28d3e2a4abe66c8be13c9dd48b73ec2 --- /dev/null +++ b/app/code/Magento/Checkout/view/frontend/web/js/model/place-order.js @@ -0,0 +1,27 @@ +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +define( + [ + 'mage/storage', + 'Magento_Checkout/js/model/error-processor', + 'Magento_Checkout/js/model/full-screen-loader' + ], + function (storage, errorProcessor, fullScreenLoader) { + 'use strict'; + + return function (serviceUrl, payload, messageContainer) { + fullScreenLoader.startLoader(); + + return storage.post( + serviceUrl, JSON.stringify(payload) + ).fail( + function (response) { + errorProcessor.process(response, messageContainer); + fullScreenLoader.stopLoader(); + } + ); + }; + } +);