Skip to content

Commit 4539025

Browse files
authored
Merge pull request #3063 from magento-tsg-csl3/2.3-develop-pr2
[TSG-CSL3] Upporting 2.3 (pr2)
2 parents d394949 + 040c30f commit 4539025

File tree

94 files changed

+3087
-1906
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+3087
-1906
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Braintree\Gateway\Request;
9+
10+
use Magento\Braintree\Gateway\Config\Config;
11+
use Magento\Braintree\Gateway\SubjectReader;
12+
use Magento\Payment\Gateway\Request\BuilderInterface;
13+
14+
/**
15+
* Adds Merchant Account ID to the request if it was specified in the configuration.
16+
*/
17+
class MerchantAccountDataBuilder implements BuilderInterface
18+
{
19+
/**
20+
* The merchant account ID used to create a transaction.
21+
* Currency is also determined by merchant account ID.
22+
* If no merchant account ID is specified, Braintree will use your default merchant account.
23+
*/
24+
private static $merchantAccountId = 'merchantAccountId';
25+
26+
/**
27+
* @var Config
28+
*/
29+
private $config;
30+
31+
/**
32+
* @var SubjectReader
33+
*/
34+
private $subjectReader;
35+
36+
/**
37+
* Constructor
38+
*
39+
* @param Config $config
40+
* @param SubjectReader $subjectReader
41+
*/
42+
public function __construct(Config $config, SubjectReader $subjectReader)
43+
{
44+
$this->config = $config;
45+
$this->subjectReader = $subjectReader;
46+
}
47+
48+
/**
49+
* @inheritdoc
50+
*/
51+
public function build(array $buildSubject): array
52+
{
53+
$paymentDO = $this->subjectReader->readPayment($buildSubject);
54+
$order = $paymentDO->getOrder();
55+
56+
$result = [];
57+
$merchantAccountId = $this->config->getMerchantAccountId($order->getStoreId());
58+
if (!empty($merchantAccountId)) {
59+
$result[self::$merchantAccountId] = $merchantAccountId;
60+
}
61+
62+
return $result;
63+
}
64+
}

app/code/Magento/Braintree/Gateway/Request/PaymentDataBuilder.php

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
namespace Magento\Braintree\Gateway\Request;
77

88
use Magento\Braintree\Gateway\Config\Config;
9-
use Magento\Braintree\Observer\DataAssignObserver;
109
use Magento\Braintree\Gateway\SubjectReader;
10+
use Magento\Braintree\Observer\DataAssignObserver;
1111
use Magento\Payment\Gateway\Request\BuilderInterface;
1212
use Magento\Payment\Helper\Formatter;
1313

@@ -36,9 +36,8 @@ class PaymentDataBuilder implements BuilderInterface
3636
const PAYMENT_METHOD_NONCE = 'paymentMethodNonce';
3737

3838
/**
39-
* The merchant account ID used to create a transaction.
40-
* Currency is also determined by merchant account ID.
41-
* If no merchant account ID is specified, Braintree will use your default merchant account.
39+
* @deprecated
40+
* @see \Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder
4241
*/
4342
const MERCHANT_ACCOUNT_ID = 'merchantAccountId';
4443

@@ -47,25 +46,18 @@ class PaymentDataBuilder implements BuilderInterface
4746
*/
4847
const ORDER_ID = 'orderId';
4948

50-
/**
51-
* @var Config
52-
*/
53-
private $config;
54-
5549
/**
5650
* @var SubjectReader
5751
*/
5852
private $subjectReader;
5953

6054
/**
61-
* Constructor
62-
*
6355
* @param Config $config
6456
* @param SubjectReader $subjectReader
57+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
6558
*/
6659
public function __construct(Config $config, SubjectReader $subjectReader)
6760
{
68-
$this->config = $config;
6961
$this->subjectReader = $subjectReader;
7062
}
7163

@@ -87,11 +79,6 @@ public function build(array $buildSubject)
8779
self::ORDER_ID => $order->getOrderIncrementId()
8880
];
8981

90-
$merchantAccountId = $this->config->getMerchantAccountId($order->getStoreId());
91-
if (!empty($merchantAccountId)) {
92-
$result[self::MERCHANT_ACCOUNT_ID] = $merchantAccountId;
93-
}
94-
9582
return $result;
9683
}
9784
}

app/code/Magento/Braintree/Test/Unit/Gateway/Request/PaymentDataBuilderTest.php

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,27 @@
55
*/
66
namespace Magento\Braintree\Test\Unit\Gateway\Request;
77

8-
use Magento\Braintree\Gateway\Config\Config;
9-
use Magento\Braintree\Gateway\SubjectReader;
108
use Magento\Braintree\Gateway\Request\PaymentDataBuilder;
9+
use Magento\Braintree\Gateway\SubjectReader;
1110
use Magento\Braintree\Observer\DataAssignObserver;
1211
use Magento\Payment\Gateway\Data\OrderAdapterInterface;
1312
use Magento\Payment\Gateway\Data\PaymentDataObjectInterface;
1413
use Magento\Sales\Model\Order\Payment;
1514
use PHPUnit_Framework_MockObject_MockObject as MockObject;
15+
use Magento\Braintree\Gateway\Config\Config;
1616

1717
/**
1818
* Tests \Magento\Braintree\Gateway\Request\PaymentDataBuilder.
1919
*/
2020
class PaymentDataBuilderTest extends \PHPUnit\Framework\TestCase
2121
{
2222
const PAYMENT_METHOD_NONCE = 'nonce';
23-
const MERCHANT_ACCOUNT_ID = '245345';
2423

2524
/**
2625
* @var PaymentDataBuilder
2726
*/
2827
private $builder;
2928

30-
/**
31-
* @var Config|MockObject
32-
*/
33-
private $configMock;
34-
3529
/**
3630
* @var Payment|MockObject
3731
*/
@@ -52,12 +46,12 @@ class PaymentDataBuilderTest extends \PHPUnit\Framework\TestCase
5246
*/
5347
private $orderMock;
5448

49+
/**
50+
* @inheritdoc
51+
*/
5552
protected function setUp()
5653
{
5754
$this->paymentDOMock = $this->createMock(PaymentDataObjectInterface::class);
58-
$this->configMock = $this->getMockBuilder(Config::class)
59-
->disableOriginalConstructor()
60-
->getMock();
6155
$this->paymentMock = $this->getMockBuilder(Payment::class)
6256
->disableOriginalConstructor()
6357
->getMock();
@@ -66,13 +60,19 @@ protected function setUp()
6660
->getMock();
6761
$this->orderMock = $this->createMock(OrderAdapterInterface::class);
6862

69-
$this->builder = new PaymentDataBuilder($this->configMock, $this->subjectReaderMock);
63+
/** @var Config $config */
64+
$config = $this->getMockBuilder(Config::class)
65+
->disableOriginalConstructor()
66+
->getMock();
67+
68+
$this->builder = new PaymentDataBuilder($config, $this->subjectReaderMock);
7069
}
7170

7271
/**
72+
* @return void
7373
* @expectedException \InvalidArgumentException
7474
*/
75-
public function testBuildReadPaymentException()
75+
public function testBuildReadPaymentException(): void
7676
{
7777
$buildSubject = [];
7878

@@ -85,9 +85,10 @@ public function testBuildReadPaymentException()
8585
}
8686

8787
/**
88+
* @return void
8889
* @expectedException \InvalidArgumentException
8990
*/
90-
public function testBuildReadAmountException()
91+
public function testBuildReadAmountException(): void
9192
{
9293
$buildSubject = [
9394
'payment' => $this->paymentDOMock,
@@ -106,7 +107,10 @@ public function testBuildReadAmountException()
106107
$this->builder->build($buildSubject);
107108
}
108109

109-
public function testBuild()
110+
/**
111+
* @return void
112+
*/
113+
public function testBuild(): void
110114
{
111115
$additionalData = [
112116
[
@@ -118,8 +122,7 @@ public function testBuild()
118122
$expectedResult = [
119123
PaymentDataBuilder::AMOUNT => 10.00,
120124
PaymentDataBuilder::PAYMENT_METHOD_NONCE => self::PAYMENT_METHOD_NONCE,
121-
PaymentDataBuilder::ORDER_ID => '000000101',
122-
PaymentDataBuilder::MERCHANT_ACCOUNT_ID => self::MERCHANT_ACCOUNT_ID,
125+
PaymentDataBuilder::ORDER_ID => '000000101'
123126
];
124127

125128
$buildSubject = [
@@ -131,10 +134,6 @@ public function testBuild()
131134
->method('getAdditionalInformation')
132135
->willReturnMap($additionalData);
133136

134-
$this->configMock->expects(self::once())
135-
->method('getMerchantAccountId')
136-
->willReturn(self::MERCHANT_ACCOUNT_ID);
137-
138137
$this->paymentDOMock->expects(self::once())
139138
->method('getPayment')
140139
->willReturn($this->paymentMock);

app/code/Magento/Braintree/etc/adminhtml/di.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<item name="vault" xsi:type="string">Magento\Braintree\Gateway\Request\VaultDataBuilder</item>
3030
<item name="dynamic_descriptor" xsi:type="string">Magento\Braintree\Gateway\Request\DescriptorDataBuilder</item>
3131
<item name="store" xsi:type="string">Magento\Braintree\Gateway\Request\StoreConfigBuilder</item>
32+
<item name="merchant_account" xsi:type="string">Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder</item>
3233
</argument>
3334
</arguments>
3435
</virtualType>
@@ -41,6 +42,7 @@
4142
<item name="address" xsi:type="string">Magento\Braintree\Gateway\Request\AddressDataBuilder</item>
4243
<item name="dynamic_descriptor" xsi:type="string">Magento\Braintree\Gateway\Request\DescriptorDataBuilder</item>
4344
<item name="store" xsi:type="string">Magento\Braintree\Gateway\Request\StoreConfigBuilder</item>
45+
<item name="merchant_account" xsi:type="string">Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder</item>
4446
</argument>
4547
</arguments>
4648
</virtualType>

app/code/Magento/Braintree/etc/di.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@
233233
<item name="device_data" xsi:type="string">Magento\Braintree\Gateway\Request\KountPaymentDataBuilder</item>
234234
<item name="dynamic_descriptor" xsi:type="string">Magento\Braintree\Gateway\Request\DescriptorDataBuilder</item>
235235
<item name="store" xsi:type="string">Magento\Braintree\Gateway\Request\StoreConfigBuilder</item>
236+
<item name="merchant_account" xsi:type="string">Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder</item>
236237
</argument>
237238
</arguments>
238239
</virtualType>
@@ -291,6 +292,7 @@
291292
<item name="device_data" xsi:type="string">Magento\Braintree\Gateway\Request\KountPaymentDataBuilder</item>
292293
<item name="dynamic_descriptor" xsi:type="string">Magento\Braintree\Gateway\Request\DescriptorDataBuilder</item>
293294
<item name="store" xsi:type="string">Magento\Braintree\Gateway\Request\StoreConfigBuilder</item>
295+
<item name="merchant_account" xsi:type="string">Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder</item>
294296
</argument>
295297
</arguments>
296298
</virtualType>
@@ -325,6 +327,7 @@
325327
<item name="vault_capture" xsi:type="string">Magento\Braintree\Gateway\Request\VaultCaptureDataBuilder</item>
326328
<item name="settlement" xsi:type="string">Magento\Braintree\Gateway\Request\SettlementDataBuilder</item>
327329
<item name="store" xsi:type="string">Magento\Braintree\Gateway\Request\StoreConfigBuilder</item>
330+
<item name="merchant_account" xsi:type="string">Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder</item>
328331
</argument>
329332
</arguments>
330333
</virtualType>
@@ -347,6 +350,7 @@
347350
<item name="device_data" xsi:type="string">Magento\Braintree\Gateway\Request\PayPal\DeviceDataBuilder</item>
348351
<item name="dynamic_descriptor" xsi:type="string">Magento\Braintree\Gateway\Request\DescriptorDataBuilder</item>
349352
<item name="store" xsi:type="string">Magento\Braintree\Gateway\Request\StoreConfigBuilder</item>
353+
<item name="merchant_account" xsi:type="string">Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder</item>
350354
</argument>
351355
</arguments>
352356
</virtualType>
@@ -380,6 +384,7 @@
380384
<item name="address" xsi:type="string">Magento\Braintree\Gateway\Request\AddressDataBuilder</item>
381385
<item name="dynamic_descriptor" xsi:type="string">Magento\Braintree\Gateway\Request\DescriptorDataBuilder</item>
382386
<item name="store" xsi:type="string">Magento\Braintree\Gateway\Request\StoreConfigBuilder</item>
387+
<item name="merchant_account" xsi:type="string">Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder</item>
383388
</argument>
384389
</arguments>
385390
</virtualType>

app/code/Magento/Braintree/view/adminhtml/web/js/braintree.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ define([
2424
scriptLoaded: false,
2525
braintree: null,
2626
selectedCardType: null,
27+
checkout: null,
2728
imports: {
2829
onActiveChange: 'active'
2930
}
@@ -147,14 +148,21 @@ define([
147148

148149
this.disableEventListeners();
149150

151+
if (self.checkout) {
152+
self.checkout.teardown(function () {
153+
self.checkout = null;
154+
});
155+
}
156+
150157
self.braintree.setup(self.clientToken, 'custom', {
151158
id: self.selector,
152159
hostedFields: self.getHostedFields(),
153160

154161
/**
155162
* Triggered when sdk was loaded
156163
*/
157-
onReady: function () {
164+
onReady: function (checkout) {
165+
self.checkout = checkout;
158166
$('body').trigger('processStop');
159167
self.enableEventListeners();
160168
},

0 commit comments

Comments
 (0)