Skip to content

Commit a4a229e

Browse files
committed
Merge branch 'develop' of github.com:magento/magento2ce into MTA-3984
2 parents e4e9109 + 889ae4a commit a4a229e

File tree

6 files changed

+201
-166
lines changed

6 files changed

+201
-166
lines changed

app/code/Magento/Paypal/Model/Express/Checkout.php

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77

88
use Magento\Customer\Api\Data\CustomerInterface as CustomerDataObject;
99
use Magento\Customer\Model\AccountManagement;
10+
use Magento\Framework\App\ObjectManager;
1011
use Magento\Paypal\Model\Config as PaypalConfig;
12+
use Magento\Sales\Api\OrderRepositoryInterface;
1113
use Magento\Sales\Model\Order\Email\Sender\OrderSender;
1214
use Magento\Quote\Model\Quote\Address;
1315
use Magento\Framework\DataObject;
@@ -268,6 +270,11 @@ class Checkout
268270
*/
269271
protected $totalsCollector;
270272

273+
/**
274+
* @var OrderRepositoryInterface
275+
*/
276+
private $orderRepository;
277+
271278
/**
272279
* @param \Psr\Log\LoggerInterface $logger
273280
* @param \Magento\Customer\Model\Url $customerUrl
@@ -789,7 +796,8 @@ public function place($token, $shippingMethodCode = null)
789796

790797
$this->ignoreAddressValidation();
791798
$this->_quote->collectTotals();
792-
$order = $this->quoteManagement->submit($this->_quote);
799+
$orderId = $this->quoteManagement->placeOrder($this->_quote->getId());
800+
$order = $this->getOrderRepository()->get($orderId);
793801

794802
if (!$order) {
795803
return;
@@ -1157,4 +1165,20 @@ protected function prepareGuestQuote()
11571165
->setCustomerGroupId(\Magento\Customer\Model\Group::NOT_LOGGED_IN_ID);
11581166
return $this;
11591167
}
1168+
1169+
/**
1170+
* Returns order repository instance
1171+
*
1172+
* @return OrderRepositoryInterface
1173+
* @deprecated
1174+
*/
1175+
private function getOrderRepository()
1176+
{
1177+
if ($this->orderRepository === null) {
1178+
$this->orderRepository = ObjectManager::getInstance()
1179+
->get(OrderRepositoryInterface::class);
1180+
}
1181+
1182+
return $this->orderRepository;
1183+
}
11601184
}

dev/tests/integration/testsuite/Magento/Paypal/Model/Express/CheckoutTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ protected function setUp()
3434
/**
3535
* Verify that an order placed with an existing customer can re-use the customer addresses.
3636
*
37-
* @magentoDataFixture Magento/Paypal/_files/quote_payment_express_with_customer.php
37+
* @magentoDataFixture Magento/Paypal/_files/quote_express_with_customer.php
3838
* @magentoAppIsolation enabled
3939
* @magentoDbIsolation enabled
4040
*/
@@ -74,7 +74,7 @@ public function testPrepareCustomerQuote()
7474
/**
7575
* Verify that after placing the order, addresses are associated with the order and the quote is a guest quote.
7676
*
77-
* @magentoDataFixture Magento/Paypal/_files/quote_payment_express.php
77+
* @magentoDataFixture Magento/Paypal/_files/quote_express.php
7878
* @magentoAppIsolation enabled
7979
* @magentoDbIsolation enabled
8080
*/
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
\Magento\TestFramework\Helper\Bootstrap::getInstance()->loadArea('adminhtml');
7+
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
8+
\Magento\Framework\App\Config\MutableScopeConfigInterface::class
9+
)->setValue(
10+
'carriers/flatrate/active',
11+
1,
12+
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
13+
);
14+
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
15+
\Magento\Framework\App\Config\MutableScopeConfigInterface::class
16+
)->setValue(
17+
'payment/paypal_express/active',
18+
1,
19+
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
20+
);
21+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
22+
/** @var $product \Magento\Catalog\Model\Product */
23+
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
24+
$product->setTypeId('simple')
25+
->setId(1)
26+
->setAttributeSetId(4)
27+
->setName('Simple Product')
28+
->setSku('simple')
29+
->setPrice(10)
30+
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
31+
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
32+
->setStockData(
33+
[
34+
'qty' => 100,
35+
'is_in_stock' => 1,
36+
]
37+
)->save();
38+
$product->load(1);
39+
40+
$billingData = [
41+
'firstname' => 'testname',
42+
'lastname' => 'lastname',
43+
'company' => '',
44+
'email' => 'test@com.com',
45+
'street' => [
46+
0 => 'test1',
47+
1 => '',
48+
],
49+
'city' => 'Test',
50+
'region_id' => '1',
51+
'region' => '',
52+
'postcode' => '9001',
53+
'country_id' => 'US',
54+
'telephone' => '11111111',
55+
'fax' => '',
56+
'confirm_password' => '',
57+
'save_in_address_book' => '1',
58+
'use_for_shipping' => '1',
59+
];
60+
61+
$billingAddress = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
62+
->create(\Magento\Quote\Model\Quote\Address::class, ['data' => $billingData]);
63+
$billingAddress->setAddressType('billing');
64+
65+
$shippingAddress = clone $billingAddress;
66+
$shippingAddress->setId(null)->setAddressType('shipping');
67+
$shippingAddress->setShippingMethod('flatrate_flatrate');
68+
$shippingAddress->setCollectShippingRates(true);
69+
70+
/** @var $quote \Magento\Quote\Model\Quote */
71+
$quote = $objectManager->create(\Magento\Quote\Model\Quote::class);
72+
$quote->setCustomerIsGuest(
73+
true
74+
)->setStoreId(
75+
$objectManager->get(
76+
\Magento\Store\Model\StoreManagerInterface::class
77+
)->getStore()->getId()
78+
)->setReservedOrderId(
79+
'100000002'
80+
)->setBillingAddress(
81+
$billingAddress
82+
)->setShippingAddress(
83+
$shippingAddress
84+
)->addProduct(
85+
$product,
86+
10
87+
);
88+
$quote->getShippingAddress()->setShippingMethod('flatrate_flatrate');
89+
$quote->getShippingAddress()->setCollectShippingRates(true);
90+
$quote->getPayment()->setMethod(\Magento\Paypal\Model\Config::METHOD_WPS_EXPRESS);
91+
92+
$quoteRepository = $objectManager->get(\Magento\Quote\Api\CartRepositoryInterface::class);
93+
$quoteRepository->save($quote);
94+
$quote = $quoteRepository->get($quote->getId());
95+
$quote->setCustomerEmail('admin@example.com');
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
require __DIR__ . '/../../Customer/_files/customer.php';
7+
require __DIR__ . '/../../Customer/_files/customer_two_addresses.php';
8+
9+
\Magento\TestFramework\Helper\Bootstrap::getInstance()->loadArea('adminhtml');
10+
11+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
12+
13+
$objectManager->get(
14+
\Magento\Framework\App\Config\MutableScopeConfigInterface::class
15+
)->setValue('carriers/flatrate/active', 1, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
16+
$objectManager->get(\Magento\Framework\App\Config\MutableScopeConfigInterface::class)
17+
->setValue('payment/paypal_express/active', 1, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
18+
19+
/** @var \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository */
20+
$customerRepository = $objectManager->create(\Magento\Customer\Api\CustomerRepositoryInterface::class);
21+
$customer = $customerRepository->getById(1);
22+
23+
/** @var $product \Magento\Catalog\Model\Product */
24+
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
25+
$product->setTypeId('simple')
26+
->setId(1)
27+
->setAttributeSetId(4)
28+
->setName('Simple Product')
29+
->setSku('simple')
30+
->setPrice(10)
31+
->setStockData([
32+
'use_config_manage_stock' => 1,
33+
'qty' => 100,
34+
'is_qty_decimal' => 0,
35+
'is_in_stock' => 100,
36+
])
37+
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
38+
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
39+
->save();
40+
$product->load(1);
41+
42+
$customerBillingAddress = $objectManager->create(\Magento\Customer\Model\Address::class);
43+
$customerBillingAddress->load(1);
44+
$billingAddressDataObject = $customerBillingAddress->getDataModel();
45+
$billingAddress = $objectManager->create(\Magento\Quote\Model\Quote\Address::class);
46+
$billingAddress->importCustomerAddressData($billingAddressDataObject);
47+
$billingAddress->setAddressType('billing');
48+
49+
/** @var \Magento\Customer\Model\Address $customerShippingAddress */
50+
$customerShippingAddress = $objectManager->create(\Magento\Customer\Model\Address::class);
51+
$customerShippingAddress->load(2);
52+
$shippingAddressDataObject = $customerShippingAddress->getDataModel();
53+
$shippingAddress = $objectManager->create(\Magento\Quote\Model\Quote\Address::class);
54+
$shippingAddress->importCustomerAddressData($shippingAddressDataObject);
55+
$shippingAddress->setAddressType('shipping');
56+
57+
$shippingAddress->setShippingMethod('flatrate_flatrate');
58+
$shippingAddress->setCollectShippingRates(true);
59+
60+
/** @var $quote \Magento\Quote\Model\Quote */
61+
$quote = $objectManager->create(\Magento\Quote\Model\Quote::class);
62+
$quote->setCustomerIsGuest(false)
63+
->setCustomerId($customer->getId())
64+
->setCustomer($customer)
65+
->setStoreId($objectManager->get(\Magento\Store\Model\StoreManagerInterface::class)->getStore()->getId())
66+
->setReservedOrderId('test02')
67+
->setBillingAddress($billingAddress)
68+
->setShippingAddress($shippingAddress)
69+
->addProduct($product, 10);
70+
$quote->getShippingAddress()->setShippingMethod('flatrate_flatrate');
71+
$quote->getShippingAddress()->setCollectShippingRates(true);
72+
$quote->getPayment()->setMethod(\Magento\Paypal\Model\Config::METHOD_WPS_EXPRESS);
73+
74+
/** @var \Magento\Quote\Api\CartRepositoryInterface $quoteRepository */
75+
$quoteRepository = $objectManager->create(\Magento\Quote\Api\CartRepositoryInterface::class);
76+
$quoteRepository->save($quote);
77+
$quote = $quoteRepository->get($quote->getId());

dev/tests/integration/testsuite/Magento/Paypal/_files/quote_payment_express.php

Lines changed: 1 addition & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -3,96 +3,7 @@
33
* Copyright © 2016 Magento. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
\Magento\TestFramework\Helper\Bootstrap::getInstance()->loadArea('adminhtml');
7-
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
8-
\Magento\Framework\App\Config\MutableScopeConfigInterface::class
9-
)->setValue(
10-
'carriers/flatrate/active',
11-
1,
12-
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
13-
);
14-
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
15-
\Magento\Framework\App\Config\MutableScopeConfigInterface::class
16-
)->setValue(
17-
'payment/paypal_express/active',
18-
1,
19-
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
20-
);
21-
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
22-
/** @var $product \Magento\Catalog\Model\Product */
23-
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
24-
$product->setTypeId('simple')
25-
->setId(1)
26-
->setAttributeSetId(4)
27-
->setName('Simple Product')
28-
->setSku('simple')
29-
->setPrice(10)
30-
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
31-
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
32-
->setStockData(
33-
[
34-
'qty' => 100,
35-
'is_in_stock' => 1,
36-
]
37-
)->save();
38-
$product->load(1);
39-
40-
$billingData = [
41-
'firstname' => 'testname',
42-
'lastname' => 'lastname',
43-
'company' => '',
44-
'email' => 'test@com.com',
45-
'street' => [
46-
0 => 'test1',
47-
1 => '',
48-
],
49-
'city' => 'Test',
50-
'region_id' => '1',
51-
'region' => '',
52-
'postcode' => '9001',
53-
'country_id' => 'US',
54-
'telephone' => '11111111',
55-
'fax' => '',
56-
'confirm_password' => '',
57-
'save_in_address_book' => '1',
58-
'use_for_shipping' => '1',
59-
];
60-
61-
$billingAddress = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
62-
->create(\Magento\Quote\Model\Quote\Address::class, ['data' => $billingData]);
63-
$billingAddress->setAddressType('billing');
64-
65-
$shippingAddress = clone $billingAddress;
66-
$shippingAddress->setId(null)->setAddressType('shipping');
67-
$shippingAddress->setShippingMethod('flatrate_flatrate');
68-
$shippingAddress->setCollectShippingRates(true);
69-
70-
/** @var $quote \Magento\Quote\Model\Quote */
71-
$quote = $objectManager->create(\Magento\Quote\Model\Quote::class);
72-
$quote->setCustomerIsGuest(
73-
true
74-
)->setStoreId(
75-
$objectManager->get(
76-
\Magento\Store\Model\StoreManagerInterface::class
77-
)->getStore()->getId()
78-
)->setReservedOrderId(
79-
'100000002'
80-
)->setBillingAddress(
81-
$billingAddress
82-
)->setShippingAddress(
83-
$shippingAddress
84-
)->addProduct(
85-
$product,
86-
10
87-
);
88-
$quote->getShippingAddress()->setShippingMethod('flatrate_flatrate');
89-
$quote->getShippingAddress()->setCollectShippingRates(true);
90-
$quote->getPayment()->setMethod(\Magento\Paypal\Model\Config::METHOD_WPS_EXPRESS);
91-
92-
$quoteRepository = $objectManager->get(\Magento\Quote\Api\CartRepositoryInterface::class);
93-
$quoteRepository->save($quote);
94-
$quote = $quoteRepository->get($quote->getId());
95-
$quote->setCustomerEmail('admin@example.com');
6+
require __DIR__ . '/quote_express.php';
967

978
/** @var $service \Magento\Quote\Api\CartManagementInterface */
989
$service = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()

0 commit comments

Comments
 (0)