Skip to content

Commit 9efebd7

Browse files
author
Alex Paliarush
committed
Merge branch 'mainline-2.3-develop' into ENGCOM-1833-magento-graphql-ce-83
2 parents 941f26f + 4688217 commit 9efebd7

File tree

216 files changed

+3560
-31756
lines changed

Some content is hidden

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

216 files changed

+3560
-31756
lines changed

app/code/Magento/Authorizenet/Model/Directpost.php

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
*/
66
namespace Magento\Authorizenet\Model;
77

8-
use Magento\Framework\HTTP\ZendClientFactory;
8+
use Magento\Framework\App\ObjectManager;
99
use Magento\Payment\Model\Method\ConfigInterface;
1010
use Magento\Payment\Model\Method\TransparentInterface;
11-
use Magento\Sales\Model\Order\Email\Sender\OrderSender;
1211

1312
/**
1413
* Authorize.net DirectPost payment method model.
@@ -102,7 +101,7 @@ class Directpost extends \Magento\Authorizenet\Model\Authorizenet implements Tra
102101
protected $response;
103102

104103
/**
105-
* @var OrderSender
104+
* @var \Magento\Sales\Model\Order\Email\Sender\OrderSender
106105
*/
107106
protected $orderSender;
108107

@@ -123,6 +122,16 @@ class Directpost extends \Magento\Authorizenet\Model\Authorizenet implements Tra
123122
*/
124123
private $psrLogger;
125124

125+
/**
126+
* @var \Magento\Sales\Api\PaymentFailuresInterface
127+
*/
128+
private $paymentFailures;
129+
130+
/**
131+
* @var \Magento\Sales\Model\Order
132+
*/
133+
private $order;
134+
126135
/**
127136
* @param \Magento\Framework\Model\Context $context
128137
* @param \Magento\Framework\Registry $registry
@@ -134,18 +143,19 @@ class Directpost extends \Magento\Authorizenet\Model\Authorizenet implements Tra
134143
* @param \Magento\Framework\Module\ModuleListInterface $moduleList
135144
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
136145
* @param \Magento\Authorizenet\Helper\Data $dataHelper
137-
* @param Directpost\Request\Factory $requestFactory
138-
* @param Directpost\Response\Factory $responseFactory
146+
* @param \Magento\Authorizenet\Model\Directpost\Request\Factory $requestFactory
147+
* @param \Magento\Authorizenet\Model\Directpost\Response\Factory $responseFactory
139148
* @param \Magento\Authorizenet\Model\TransactionService $transactionService
140149
* @param \Magento\Framework\HTTP\ZendClientFactory $httpClientFactory
141150
* @param \Magento\Sales\Model\OrderFactory $orderFactory
142151
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
143152
* @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository
144-
* @param OrderSender $orderSender
153+
* @param \Magento\Sales\Model\Order\Email\Sender\OrderSender $orderSender
145154
* @param \Magento\Sales\Api\TransactionRepositoryInterface $transactionRepository
146155
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
147156
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
148157
* @param array $data
158+
* @param \Magento\Sales\Api\PaymentFailuresInterface|null $paymentFailures
149159
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
150160
*/
151161
public function __construct(
@@ -161,16 +171,17 @@ public function __construct(
161171
\Magento\Authorizenet\Helper\Data $dataHelper,
162172
\Magento\Authorizenet\Model\Directpost\Request\Factory $requestFactory,
163173
\Magento\Authorizenet\Model\Directpost\Response\Factory $responseFactory,
164-
TransactionService $transactionService,
165-
ZendClientFactory $httpClientFactory,
174+
\Magento\Authorizenet\Model\TransactionService $transactionService,
175+
\Magento\Framework\HTTP\ZendClientFactory $httpClientFactory,
166176
\Magento\Sales\Model\OrderFactory $orderFactory,
167177
\Magento\Store\Model\StoreManagerInterface $storeManager,
168178
\Magento\Quote\Api\CartRepositoryInterface $quoteRepository,
169179
\Magento\Sales\Model\Order\Email\Sender\OrderSender $orderSender,
170180
\Magento\Sales\Api\TransactionRepositoryInterface $transactionRepository,
171181
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
172182
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
173-
array $data = []
183+
array $data = [],
184+
\Magento\Sales\Api\PaymentFailuresInterface $paymentFailures = null
174185
) {
175186
$this->orderFactory = $orderFactory;
176187
$this->storeManager = $storeManager;
@@ -179,6 +190,8 @@ public function __construct(
179190
$this->orderSender = $orderSender;
180191
$this->transactionRepository = $transactionRepository;
181192
$this->_code = static::METHOD_CODE;
193+
$this->paymentFailures = $paymentFailures ? : ObjectManager::getInstance()
194+
->get(\Magento\Sales\Api\PaymentFailuresInterface::class);
182195

183196
parent::__construct(
184197
$context,
@@ -561,13 +574,10 @@ public function process(array $responseData)
561574
$this->validateResponse();
562575

563576
$response = $this->getResponse();
564-
//operate with order
565-
$orderIncrementId = $response->getXInvoiceNum();
566577
$responseText = $this->dataHelper->wrapGatewayError($response->getXResponseReasonText());
567578
$isError = false;
568-
if ($orderIncrementId) {
569-
/* @var $order \Magento\Sales\Model\Order */
570-
$order = $this->orderFactory->create()->loadByIncrementId($orderIncrementId);
579+
if ($this->getOrderIncrementId()) {
580+
$order = $this->getOrderFromResponse();
571581
//check payment method
572582
$payment = $order->getPayment();
573583
if (!$payment || $payment->getMethod() != $this->getCode()) {
@@ -632,9 +642,10 @@ public function checkResponseCode()
632642
return true;
633643
case self::RESPONSE_CODE_DECLINED:
634644
case self::RESPONSE_CODE_ERROR:
635-
throw new \Magento\Framework\Exception\LocalizedException(
636-
$this->dataHelper->wrapGatewayError($this->getResponse()->getXResponseReasonText())
637-
);
645+
$errorMessage = $this->dataHelper->wrapGatewayError($this->getResponse()->getXResponseReasonText());
646+
$order = $this->getOrderFromResponse();
647+
$this->paymentFailures->handle((int)$order->getQuoteId(), $errorMessage);
648+
throw new \Magento\Framework\Exception\LocalizedException($errorMessage);
638649
default:
639650
throw new \Magento\Framework\Exception\LocalizedException(
640651
__('There was a payment authorization error.')
@@ -988,12 +999,40 @@ protected function getTransactionResponse($transactionId)
988999
private function getPsrLogger()
9891000
{
9901001
if (null === $this->psrLogger) {
991-
$this->psrLogger = \Magento\Framework\App\ObjectManager::getInstance()
1002+
$this->psrLogger = ObjectManager::getInstance()
9921003
->get(\Psr\Log\LoggerInterface::class);
9931004
}
9941005
return $this->psrLogger;
9951006
}
9961007

1008+
/**
1009+
* Fetch order by increment id from response.
1010+
*
1011+
* @return \Magento\Sales\Model\Order
1012+
*/
1013+
private function getOrderFromResponse(): \Magento\Sales\Model\Order
1014+
{
1015+
if (!$this->order) {
1016+
$this->order = $this->orderFactory->create();
1017+
1018+
if ($incrementId = $this->getOrderIncrementId()) {
1019+
$this->order = $this->order->loadByIncrementId($incrementId);
1020+
}
1021+
}
1022+
1023+
return $this->order;
1024+
}
1025+
1026+
/**
1027+
* Fetch order increment id from response.
1028+
*
1029+
* @return string
1030+
*/
1031+
private function getOrderIncrementId(): string
1032+
{
1033+
return $this->getResponse()->getXInvoiceNum();
1034+
}
1035+
9971036
/**
9981037
* Checks if filter action is Report Only. Transactions that trigger this filter are processed as normal,
9991038
* but are also reported in the Merchant Interface as triggering this filter.

app/code/Magento/Authorizenet/Test/Unit/Model/DirectpostTest.php

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\Authorizenet\Test\Unit\Model;
77

8+
use Magento\Sales\Api\PaymentFailuresInterface;
89
use Magento\Framework\Simplexml\Element;
910
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
1011
use Magento\Authorizenet\Model\Directpost;
@@ -74,6 +75,14 @@ class DirectpostTest extends \PHPUnit\Framework\TestCase
7475
*/
7576
protected $requestFactory;
7677

78+
/**
79+
* @var PaymentFailuresInterface|\PHPUnit_Framework_MockObject_MockObject
80+
*/
81+
private $paymentFailures;
82+
83+
/**
84+
* @inheritdoc
85+
*/
7786
protected function setUp()
7887
{
7988
$this->scopeConfigMock = $this->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class)
@@ -104,6 +113,12 @@ protected function setUp()
104113
->setMethods(['getTransactionDetails'])
105114
->getMock();
106115

116+
$this->paymentFailures = $this->getMockBuilder(
117+
PaymentFailuresInterface::class
118+
)
119+
->disableOriginalConstructor()
120+
->getMock();
121+
107122
$this->requestFactory = $this->getRequestFactoryMock();
108123
$httpClientFactoryMock = $this->getHttpClientFactoryMock();
109124

@@ -117,7 +132,8 @@ protected function setUp()
117132
'responseFactory' => $this->responseFactoryMock,
118133
'transactionRepository' => $this->transactionRepositoryMock,
119134
'transactionService' => $this->transactionServiceMock,
120-
'httpClientFactory' => $httpClientFactoryMock
135+
'httpClientFactory' => $httpClientFactoryMock,
136+
'paymentFailures' => $this->paymentFailures,
121137
]
122138
);
123139
}
@@ -313,12 +329,16 @@ public function checkResponseCodeSuccessDataProvider()
313329
}
314330

315331
/**
316-
* @param bool $responseCode
332+
* Checks response failures behaviour.
333+
*
334+
* @param int $responseCode
335+
* @param int $failuresHandlerCalls
336+
* @return void
317337
*
318338
* @expectedException \Magento\Framework\Exception\LocalizedException
319339
* @dataProvider checkResponseCodeFailureDataProvider
320340
*/
321-
public function testCheckResponseCodeFailure($responseCode)
341+
public function testCheckResponseCodeFailure(int $responseCode, int $failuresHandlerCalls): void
322342
{
323343
$reasonText = 'reason text';
324344

@@ -333,18 +353,35 @@ public function testCheckResponseCodeFailure($responseCode)
333353
->with($reasonText)
334354
->willReturn(__('Gateway error: %1', $reasonText));
335355

356+
$orderMock = $this->getMockBuilder(Order::class)
357+
->disableOriginalConstructor()
358+
->getMock();
359+
360+
$orderMock->expects($this->exactly($failuresHandlerCalls))
361+
->method('getQuoteId')
362+
->willReturn(1);
363+
364+
$this->paymentFailures->expects($this->exactly($failuresHandlerCalls))
365+
->method('handle')
366+
->with(1);
367+
368+
$reflection = new \ReflectionClass($this->directpost);
369+
$order = $reflection->getProperty('order');
370+
$order->setAccessible(true);
371+
$order->setValue($this->directpost, $orderMock);
372+
336373
$this->directpost->checkResponseCode();
337374
}
338375

339376
/**
340377
* @return array
341378
*/
342-
public function checkResponseCodeFailureDataProvider()
379+
public function checkResponseCodeFailureDataProvider(): array
343380
{
344381
return [
345-
['responseCode' => Directpost::RESPONSE_CODE_DECLINED],
346-
['responseCode' => Directpost::RESPONSE_CODE_ERROR],
347-
['responseCode' => 999999]
382+
['responseCode' => Directpost::RESPONSE_CODE_DECLINED, 1],
383+
['responseCode' => Directpost::RESPONSE_CODE_ERROR, 1],
384+
['responseCode' => 999999, 0],
348385
];
349386
}
350387

app/code/Magento/Backend/view/adminhtml/templates/widget/button/split.phtml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@
4141
<?php endif; ?>
4242
</div>
4343

44-
<script>
45-
require(['jquery'], function($){
46-
$('.actions-split')
47-
.on('click.splitDefault', '.action-default', function() {
48-
$(this).siblings('.dropdown-menu').find('.item-default').trigger('click');
49-
});
50-
});
44+
<script type="text/x-magento-init">
45+
{
46+
".actions-split": {
47+
"Magento_Ui/js/grid/controls/button/split": {}
48+
}
49+
}
5150
</script>
51+

app/code/Magento/Braintree/Model/AvsEmsCodeMapper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class AvsEmsCodeMapper implements PaymentVerificationInterface
2424
*
2525
* @var string
2626
*/
27-
private static $unavailableCode = 'U';
27+
private static $unavailableCode = '';
2828

2929
/**
3030
* List of mapping AVS codes

app/code/Magento/Braintree/Test/Unit/Model/AvsEmsCodeMapperTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,11 @@ public function testGetCodeWithException()
8484
public function getCodeDataProvider()
8585
{
8686
return [
87-
['avsZip' => null, 'avsStreet' => null, 'expected' => 'U'],
88-
['avsZip' => null, 'avsStreet' => 'M', 'expected' => 'U'],
89-
['avsZip' => 'M', 'avsStreet' => null, 'expected' => 'U'],
90-
['avsZip' => 'M', 'avsStreet' => 'Unknown', 'expected' => 'U'],
91-
['avsZip' => 'I', 'avsStreet' => 'A', 'expected' => 'U'],
87+
['avsZip' => null, 'avsStreet' => null, 'expected' => ''],
88+
['avsZip' => null, 'avsStreet' => 'M', 'expected' => ''],
89+
['avsZip' => 'M', 'avsStreet' => null, 'expected' => ''],
90+
['avsZip' => 'M', 'avsStreet' => 'Unknown', 'expected' => ''],
91+
['avsZip' => 'I', 'avsStreet' => 'A', 'expected' => ''],
9292
['avsZip' => 'M', 'avsStreet' => 'M', 'expected' => 'Y'],
9393
['avsZip' => 'N', 'avsStreet' => 'M', 'expected' => 'A'],
9494
['avsZip' => 'M', 'avsStreet' => 'N', 'expected' => 'Z'],

app/code/Magento/Braintree/view/adminhtml/templates/form/cc.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ $ccType = $block->getInfoData('cc_type');
8484
name="payment[is_active_payment_token_enabler]"
8585
class="admin__control-checkbox"/>
8686
<label class="label" for="<?= /* @noEscape */ $code ?>_vault">
87-
<span><?= $block->escapeHtml('Save for later use.') ?></span>
87+
<span><?= $block->escapeHtml(__('Save for later use.')) ?></span>
8888
</label>
8989
</div>
9090
<?php endif; ?>

app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Checkbox extends \Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Op
1717
/**
1818
* @var string
1919
*/
20-
protected $_template = 'product/composite/fieldset/options/type/checkbox.phtml';
20+
protected $_template = 'Magento_Bundle::product/composite/fieldset/options/type/checkbox.phtml';
2121

2222
/**
2323
* @param string $elementId

app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Multi extends \Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Optio
1717
/**
1818
* @var string
1919
*/
20-
protected $_template = 'product/composite/fieldset/options/type/multi.phtml';
20+
protected $_template = 'Magento_Bundle::product/composite/fieldset/options/type/multi.phtml';
2121

2222
/**
2323
* @param string $elementId

app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Radio.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Radio extends \Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Optio
1717
/**
1818
* @var string
1919
*/
20-
protected $_template = 'product/composite/fieldset/options/type/radio.phtml';
20+
protected $_template = 'Magento_Bundle::product/composite/fieldset/options/type/radio.phtml';
2121

2222
/**
2323
* @param string $elementId

app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Select.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Select extends \Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Opti
1717
/**
1818
* @var string
1919
*/
20-
protected $_template = 'product/composite/fieldset/options/type/select.phtml';
20+
protected $_template = 'Magento_Bundle::product/composite/fieldset/options/type/select.phtml';
2121

2222
/**
2323
* @param string $elementId

0 commit comments

Comments
 (0)