Skip to content

Commit

Permalink
Merge branch 'MC-4571-4575' of github.com:magento-pangolin/magento2ce…
Browse files Browse the repository at this point in the history
… into MC-4571-4575
  • Loading branch information
MilaLesechko committed Apr 10, 2019
2 parents 01b133a + 887678e commit b9e3e01
Show file tree
Hide file tree
Showing 390 changed files with 15,698 additions and 3,591 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -785,7 +785,7 @@ Tests:
* Refactored controller actions in the Product area
* Moved commands cache.php, indexer.php, log.php, test.php, compiler.php, singletenant\_compiler.php, generator.php, pack.php, deploy.php and file\_assembler.php to the new bin/magento CLI framework
* Data Migration Tool
* The Data Migraiton Tool is published in the separate [repository](https://github.com/magento/data-migration-tool-ce "Data Migration Tool repository")
* The Data Migration Tool is published in the separate [repository](https://github.com/magento/data-migration-tool-ce "Data Migration Tool repository")
* Fixed bugs
* Fixed an issue where error appeared during placing order with virtual product
* Fixed an issue where billing and shipping sections didn't contain address information on order print
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
<title value="AdvancedReportingButtonTest"/>
<description value="Test log in to AdvancedReporting and tests AdvancedReportingButtonTest"/>
<testCaseId value="MC-14800"/>
<skip>
<issueId value="MC-14800" />
</skip>
<severity value="CRITICAL"/>
<group value="analytics"/>
<group value="mtf_migrated"/>
Expand Down
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>
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>
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>
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
<actionGroup name="LoginAsAdmin">
<arguments>
<argument name="adminUser" defaultValue="_ENV"/>
<argument name="adminUser" type="entity" defaultValue="DefaultAdminUser"/>
</arguments>
<amOnPage url="{{AdminLoginPage.url}}" stepKey="navigateToAdmin"/>
<fillField selector="{{AdminLoginFormSection.username}}" userInput="{{adminUser.MAGENTO_ADMIN_USERNAME}}" stepKey="fillUsername"/>
<fillField selector="{{AdminLoginFormSection.password}}" userInput="{{adminUser.MAGENTO_ADMIN_PASSWORD}}" stepKey="fillPassword"/>
<fillField selector="{{AdminLoginFormSection.username}}" userInput="{{adminUser.username}}" stepKey="fillUsername"/>
<fillField selector="{{AdminLoginFormSection.password}}" userInput="{{adminUser.password}}" stepKey="fillPassword"/>
<click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickLogin"/>
<closeAdminNotification stepKey="closeAdminNotification"/>
</actionGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
<section name="AdminHeaderSection">
<element name="pageTitle" type="text" selector=".page-header h1.page-title"/>
<element name="adminUserAccountText" type="text" selector=".page-header .admin-user-account-text" />
</section>
</sections>
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 app/code/Magento/Braintree/Model/Multishipping/PlaceOrder.php
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;
}
}
3 changes: 2 additions & 1 deletion app/code/Magento/Braintree/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@
"magento/module-quote": "*",
"magento/module-sales": "*",
"magento/module-ui": "*",
"magento/module-vault": "*"
"magento/module-vault": "*",
"magento/module-multishipping": "*"
},
"suggest": {
"magento/module-checkout-agreements": "*",
Expand Down
8 changes: 4 additions & 4 deletions app/code/Magento/Braintree/etc/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<paymentInfoKeys>cc_type,cc_number,avsPostalCodeResponseCode,avsStreetAddressResponseCode,cvvResponseCode,processorAuthorizationCode,processorResponseCode,processorResponseText,liabilityShifted,liabilityShiftPossible,riskDataId,riskDataDecision</paymentInfoKeys>
<avs_ems_adapter>Magento\Braintree\Model\AvsEmsCodeMapper</avs_ems_adapter>
<cvv_ems_adapter>Magento\Braintree\Model\CvvEmsCodeMapper</cvv_ems_adapter>
<group>braintree</group>
<group>braintree_group</group>
</braintree>
<braintree_paypal>
<model>BraintreePayPalFacade</model>
Expand All @@ -68,7 +68,7 @@
<privateInfoKeys>processorResponseCode,processorResponseText,paymentId</privateInfoKeys>
<paymentInfoKeys>processorResponseCode,processorResponseText,paymentId,payerEmail</paymentInfoKeys>
<supported_locales>en_US,en_GB,en_AU,da_DK,fr_FR,fr_CA,de_DE,zh_HK,it_IT,nl_NL,no_NO,pl_PL,es_ES,sv_SE,tr_TR,pt_BR,ja_JP,id_ID,ko_KR,pt_PT,ru_RU,th_TH,zh_CN,zh_TW</supported_locales>
<group>braintree</group>
<group>braintree_group</group>
</braintree_paypal>
<braintree_cc_vault>
<model>BraintreeCreditCardVaultFacade</model>
Expand All @@ -78,7 +78,7 @@
<tokenFormat>Magento\Braintree\Model\InstantPurchase\CreditCard\TokenFormatter</tokenFormat>
<additionalInformation>Magento\Braintree\Model\InstantPurchase\PaymentAdditionalInformationProvider</additionalInformation>
</instant_purchase>
<group>braintree</group>
<group>braintree_group</group>
</braintree_cc_vault>
<braintree_paypal_vault>
<model>BraintreePayPalVaultFacade</model>
Expand All @@ -88,7 +88,7 @@
<tokenFormat>Magento\Braintree\Model\InstantPurchase\PayPal\TokenFormatter</tokenFormat>
<additionalInformation>Magento\Braintree\Model\InstantPurchase\PaymentAdditionalInformationProvider</additionalInformation>
</instant_purchase>
<group>braintree</group>
<group>braintree_group</group>
</braintree_paypal_vault>
</payment>
</default>
Expand Down
8 changes: 8 additions & 0 deletions app/code/Magento/Braintree/etc/frontend/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,12 @@
<argument name="resolver" xsi:type="object">Magento\Braintree\Model\LocaleResolver</argument>
</arguments>
</type>
<type name="Magento\Multishipping\Model\Checkout\Type\Multishipping\PlaceOrderPool">
<arguments>
<argument name="services" xsi:type="array">
<item name="braintree" xsi:type="string">Magento\Braintree\Model\Multishipping\PlaceOrder</item>
<item name="braintree_paypal" xsi:type="string">Magento\Braintree\Model\Multishipping\PlaceOrder</item>
</argument>
</arguments>
</type>
</config>
10 changes: 9 additions & 1 deletion app/code/Magento/Braintree/etc/payment.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,16 @@
<payment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Payment:etc/payment.xsd">
<groups>
<group id="braintree">
<group id="braintree_group">
<label>Braintree</label>
</group>
</groups>
<methods>
<method name="braintree">
<allow_multiple_address>1</allow_multiple_address>
</method>
<method name="braintree_paypal">
<allow_multiple_address>1</allow_multiple_address>
</method>
</methods>
</payment>
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>
Loading

0 comments on commit b9e3e01

Please sign in to comment.