Skip to content

Commit 9dd4713

Browse files
Merge branch 'MAGETWO-91757' into 2.3-develop-pr5
2 parents 9d6ae15 + 6cb43ee commit 9dd4713

File tree

24 files changed

+490
-227
lines changed

24 files changed

+490
-227
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/Sales/Model/Order/Payment/Transaction/Repository.php

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,11 @@
1313
use Magento\Framework\Data\Collection;
1414
use Magento\Framework\Exception\NoSuchEntityException;
1515
use Magento\Sales\Api\Data\TransactionInterface;
16-
use Magento\Sales\Api\OrderPaymentRepositoryInterface;
17-
use Magento\Sales\Api\OrderRepositoryInterface;
16+
use Magento\Sales\Api\Data\TransactionSearchResultInterfaceFactory as SearchResultFactory;
1817
use Magento\Sales\Api\TransactionRepositoryInterface;
1918
use Magento\Sales\Model\EntityStorage;
2019
use Magento\Sales\Model\EntityStorageFactory;
21-
use Magento\Sales\Model\Order\Payment;
2220
use Magento\Sales\Model\ResourceModel\Metadata;
23-
use Magento\Sales\Api\Data\TransactionSearchResultInterfaceFactory as SearchResultFactory;
2421
use Magento\Sales\Model\ResourceModel\Order\Payment\Transaction as TransactionResource;
2522

2623
/**
@@ -95,7 +92,7 @@ public function __construct(
9592
}
9693

9794
/**
98-
* {@inheritdoc}
95+
* @inheritdoc
9996
*/
10097
public function get($id)
10198
{
@@ -117,12 +114,10 @@ public function get($id)
117114
/**
118115
* @param int $transactionType
119116
* @param int $paymentId
120-
* @param int $orderId
121117
* @return bool|\Magento\Framework\Model\AbstractModel|mixed
122118
* @throws \Magento\Framework\Exception\InputException
123-
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
124119
*/
125-
public function getByTransactionType($transactionType, $paymentId, $orderId)
120+
public function getByTransactionType($transactionType, $paymentId)
126121
{
127122
$identityFieldsForCache = [$transactionType, $paymentId];
128123
$cacheStorage = 'txn_type';

0 commit comments

Comments
 (0)