-
Notifications
You must be signed in to change notification settings - Fork 9.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/2.3-develop' into graphQl-512-ad…
…dress.street-validation # Conflicts: # app/code/Magento/QuoteGraphQl/Model/Cart/QuoteAddressFactory.php
- Loading branch information
Showing
252 changed files
with
6,005 additions
and
637 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
app/code/Magento/Backend/Test/Mftf/ActionGroup/AssertAdminSuccessLoginActionGroup.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
--> | ||
|
||
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> | ||
<actionGroup name="AssertAdminSuccessLoginActionGroup"> | ||
<waitForElementVisible selector="{{AdminHeaderSection.adminUserAccountText}}" stepKey="waitForAdminAccountTextVisible" /> | ||
</actionGroup> | ||
</actionGroups> |
18 changes: 18 additions & 0 deletions
18
app/code/Magento/Backend/Test/Mftf/ActionGroup/AssertMessageOnAdminLoginActionGroup.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
--> | ||
|
||
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> | ||
<actionGroup name="AssertMessageOnAdminLoginActionGroup"> | ||
<arguments> | ||
<argument name="message" type="string" defaultValue="The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later." /> | ||
<argument name="messageType" type="string" defaultValue="error" /> | ||
</arguments> | ||
<see userInput="{{message}}" selector="{{AdminLoginMessagesSection.messageByType(messageType)}}" stepKey="verifyMessage" /> | ||
</actionGroup> | ||
</actionGroups> |
22 changes: 22 additions & 0 deletions
22
app/code/Magento/Backend/Test/Mftf/ActionGroup/LoginAdminWithCredentialsActionGroup.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
--> | ||
|
||
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> | ||
<actionGroup name="LoginAdminWithCredentialsActionGroup"> | ||
<arguments> | ||
<argument name="adminUser" type="string" /> | ||
<argument name="adminPassword" type="string" /> | ||
</arguments> | ||
<amOnPage url="{{_ENV.MAGENTO_BACKEND_NAME}}" stepKey="navigateToAdmin"/> | ||
<fillField selector="{{AdminLoginFormSection.username}}" userInput="{{adminUser}}" stepKey="fillUsername"/> | ||
<fillField selector="{{AdminLoginFormSection.password}}" userInput="{{adminPassword}}" stepKey="fillPassword"/> | ||
<click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickLogin"/> | ||
<closeAdminNotification stepKey="closeAdminNotification"/> | ||
</actionGroup> | ||
</actionGroups> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
app/code/Magento/Backend/Test/Mftf/Section/AdminLoginMessagesSection.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
--> | ||
|
||
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> | ||
<section name="AdminLoginMessagesSection"> | ||
<element name="messageByType" type="block" selector=".login-content .messages .message-{{messageType}}" parameterized="true" /> | ||
</section> | ||
</sections> |
177 changes: 177 additions & 0 deletions
177
app/code/Magento/Braintree/Model/Multishipping/PlaceOrder.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
declare(strict_types=1); | ||
|
||
namespace Magento\Braintree\Model\Multishipping; | ||
|
||
use Magento\Braintree\Gateway\Command\GetPaymentNonceCommand; | ||
use Magento\Braintree\Model\Ui\ConfigProvider; | ||
use Magento\Braintree\Observer\DataAssignObserver; | ||
use Magento\Braintree\Model\Ui\PayPal\ConfigProvider as PaypalConfigProvider; | ||
use Magento\Multishipping\Model\Checkout\Type\Multishipping\PlaceOrderInterface; | ||
use Magento\Sales\Api\Data\OrderInterface; | ||
use Magento\Sales\Api\Data\OrderPaymentExtensionInterface; | ||
use Magento\Sales\Api\Data\OrderPaymentExtensionInterfaceFactory; | ||
use Magento\Sales\Api\Data\OrderPaymentInterface; | ||
use Magento\Sales\Api\OrderManagementInterface; | ||
use Magento\Vault\Api\Data\PaymentTokenInterface; | ||
|
||
/** | ||
* Order payments processing for multishipping checkout flow. | ||
* | ||
* @SuppressWarnings(PHPMD.CouplingBetweenObjects) | ||
*/ | ||
class PlaceOrder implements PlaceOrderInterface | ||
{ | ||
/** | ||
* @var OrderManagementInterface | ||
*/ | ||
private $orderManagement; | ||
|
||
/** | ||
* @var OrderPaymentExtensionInterfaceFactory | ||
*/ | ||
private $paymentExtensionFactory; | ||
|
||
/** | ||
* @var GetPaymentNonceCommand | ||
*/ | ||
private $getPaymentNonceCommand; | ||
|
||
/** | ||
* @param OrderManagementInterface $orderManagement | ||
* @param OrderPaymentExtensionInterfaceFactory $paymentExtensionFactory | ||
* @param GetPaymentNonceCommand $getPaymentNonceCommand | ||
*/ | ||
public function __construct( | ||
OrderManagementInterface $orderManagement, | ||
OrderPaymentExtensionInterfaceFactory $paymentExtensionFactory, | ||
GetPaymentNonceCommand $getPaymentNonceCommand | ||
) { | ||
$this->orderManagement = $orderManagement; | ||
$this->paymentExtensionFactory = $paymentExtensionFactory; | ||
$this->getPaymentNonceCommand = $getPaymentNonceCommand; | ||
} | ||
|
||
/** | ||
* @inheritdoc | ||
*/ | ||
public function place(array $orderList): array | ||
{ | ||
if (empty($orderList)) { | ||
return []; | ||
} | ||
|
||
$errorList = []; | ||
$firstOrder = $this->orderManagement->place(array_shift($orderList)); | ||
// get payment token from first placed order | ||
$paymentToken = $this->getPaymentToken($firstOrder); | ||
|
||
foreach ($orderList as $order) { | ||
try { | ||
/** @var OrderInterface $order */ | ||
$orderPayment = $order->getPayment(); | ||
$this->setVaultPayment($orderPayment, $paymentToken); | ||
$this->orderManagement->place($order); | ||
} catch (\Exception $e) { | ||
$incrementId = $order->getIncrementId(); | ||
$errorList[$incrementId] = $e; | ||
} | ||
} | ||
|
||
return $errorList; | ||
} | ||
|
||
/** | ||
* Sets vault payment method. | ||
* | ||
* @param OrderPaymentInterface $orderPayment | ||
* @param PaymentTokenInterface $paymentToken | ||
* @return void | ||
*/ | ||
private function setVaultPayment(OrderPaymentInterface $orderPayment, PaymentTokenInterface $paymentToken): void | ||
{ | ||
$vaultMethod = $this->getVaultPaymentMethod( | ||
$orderPayment->getMethod() | ||
); | ||
$orderPayment->setMethod($vaultMethod); | ||
|
||
$publicHash = $paymentToken->getPublicHash(); | ||
$customerId = $paymentToken->getCustomerId(); | ||
$result = $this->getPaymentNonceCommand->execute( | ||
['public_hash' => $publicHash, 'customer_id' => $customerId] | ||
) | ||
->get(); | ||
|
||
$orderPayment->setAdditionalInformation( | ||
DataAssignObserver::PAYMENT_METHOD_NONCE, | ||
$result['paymentMethodNonce'] | ||
); | ||
$orderPayment->setAdditionalInformation( | ||
PaymentTokenInterface::PUBLIC_HASH, | ||
$publicHash | ||
); | ||
$orderPayment->setAdditionalInformation( | ||
PaymentTokenInterface::CUSTOMER_ID, | ||
$customerId | ||
); | ||
} | ||
|
||
/** | ||
* Returns vault payment method. | ||
* | ||
* For placing sequence of orders, we need to replace the original method on the vault method. | ||
* | ||
* @param string $method | ||
* @return string | ||
*/ | ||
private function getVaultPaymentMethod(string $method): string | ||
{ | ||
$vaultPaymentMap = [ | ||
ConfigProvider::CODE => ConfigProvider::CC_VAULT_CODE, | ||
PaypalConfigProvider::PAYPAL_CODE => PaypalConfigProvider::PAYPAL_VAULT_CODE | ||
]; | ||
|
||
return $vaultPaymentMap[$method] ?? $method; | ||
} | ||
|
||
/** | ||
* Returns payment token. | ||
* | ||
* @param OrderInterface $order | ||
* @return PaymentTokenInterface | ||
* @throws \BadMethodCallException | ||
*/ | ||
private function getPaymentToken(OrderInterface $order): PaymentTokenInterface | ||
{ | ||
$orderPayment = $order->getPayment(); | ||
$extensionAttributes = $this->getExtensionAttributes($orderPayment); | ||
$paymentToken = $extensionAttributes->getVaultPaymentToken(); | ||
|
||
if ($paymentToken === null) { | ||
throw new \BadMethodCallException('Vault Payment Token should be defined for placed order payment.'); | ||
} | ||
|
||
return $paymentToken; | ||
} | ||
|
||
/** | ||
* Gets payment extension attributes. | ||
* | ||
* @param OrderPaymentInterface $payment | ||
* @return OrderPaymentExtensionInterface | ||
*/ | ||
private function getExtensionAttributes(OrderPaymentInterface $payment): OrderPaymentExtensionInterface | ||
{ | ||
$extensionAttributes = $payment->getExtensionAttributes(); | ||
if (null === $extensionAttributes) { | ||
$extensionAttributes = $this->paymentExtensionFactory->create(); | ||
$payment->setExtensionAttributes($extensionAttributes); | ||
} | ||
|
||
return $extensionAttributes; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 20 additions & 0 deletions
20
app/code/Magento/Braintree/view/frontend/layout/multishipping_checkout_billing.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<?xml version="1.0"?> | ||
<!-- | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
--> | ||
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> | ||
<body> | ||
<referenceBlock name="checkout_billing"> | ||
<arguments> | ||
<argument name="form_templates" xsi:type="array"> | ||
<item name="braintree" xsi:type="string">Magento_Braintree::multishipping/form.phtml</item> | ||
<item name="braintree_paypal" xsi:type="string">Magento_Braintree::multishipping/form_paypal.phtml</item> | ||
</argument> | ||
</arguments> | ||
</referenceBlock> | ||
</body> | ||
</page> |
Oops, something went wrong.