Skip to content

Commit 0d70f01

Browse files
committed
MC-29527: Support sale operation by Magento payment provider gateway
1 parent 83dfe8c commit 0d70f01

File tree

6 files changed

+36
-34
lines changed

6 files changed

+36
-34
lines changed

app/code/Magento/Payment/Model/Method/Adapter.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -677,13 +677,11 @@ public function canSale(): bool
677677
/**
678678
* @inheritdoc
679679
*/
680-
public function sale(InfoInterface $payment, $amount)
680+
public function sale(InfoInterface $payment, float $amount)
681681
{
682682
$this->executeCommand(
683683
'sale',
684684
['payment' => $payment, 'amount' => $amount]
685685
);
686-
687-
return $this;
688686
}
689687
}

app/code/Magento/Payment/Model/SaleOperationInterface.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Payment\Model;
79

810
/**
@@ -24,7 +26,7 @@ public function canSale(): bool;
2426
*
2527
* @param InfoInterface $payment
2628
* @param float $amount
27-
* @return $this
29+
* @return void
2830
*/
29-
public function sale(InfoInterface $payment, $amount);
31+
public function sale(InfoInterface $payment, float $amount);
3032
}

app/code/Magento/Sales/Model/Order/Payment/Operations/ProcessInvoiceOperation.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Sales\Model\Order\Payment\Operations;
79

10+
use Magento\Framework\Exception\LocalizedException;
811
use Magento\Sales\Api\Data\InvoiceInterface;
912
use Magento\Sales\Api\Data\OrderPaymentInterface;
1013
use Magento\Sales\Model\Order\Payment;
@@ -22,14 +25,17 @@ class ProcessInvoiceOperation extends AbstractOperation
2225
* @param InvoiceInterface $invoice
2326
* @param string $operationMethod
2427
* @return OrderPaymentInterface
25-
* @throws \Magento\Framework\Exception\LocalizedException
28+
* @throws LocalizedException
2629
*/
27-
public function execute(OrderPaymentInterface $payment, InvoiceInterface $invoice, string $operationMethod)
28-
{
30+
public function execute(
31+
OrderPaymentInterface $payment,
32+
InvoiceInterface $invoice,
33+
string $operationMethod
34+
): OrderPaymentInterface {
2935
/**
3036
* @var $payment Payment
3137
*/
32-
$amountToCapture = $payment->formatAmount($invoice->getBaseGrandTotal());
38+
$amountToCapture = $payment->formatAmount($invoice->getBaseGrandTotal(), true);
3339
$order = $payment->getOrder();
3440

3541
$payment->setTransactionId(
@@ -63,7 +69,7 @@ public function execute(OrderPaymentInterface $payment, InvoiceInterface $invoic
6369
}
6470

6571
if ($invoice->getIsPaid()) {
66-
throw new \Magento\Framework\Exception\LocalizedException(
72+
throw new LocalizedException(
6773
__('The transaction "%1" cannot be captured yet.', $invoice->getTransactionId())
6874
);
6975
}

app/code/Magento/Sales/Model/Order/Payment/Operations/SaleOperation.php

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Sales\Model\Order\Payment\Operations;
79

810
use Magento\Framework\Exception\LocalizedException;
@@ -36,19 +38,15 @@ public function __construct(
3638
* @return OrderPaymentInterface
3739
* @throws LocalizedException
3840
*/
39-
public function execute(OrderPaymentInterface $payment)
41+
public function execute(OrderPaymentInterface $payment): OrderPaymentInterface
4042
{
4143
/** @var $payment Payment */
4244
$invoice = $payment->getOrder()->prepareInvoice();
4345
$invoice->register();
44-
45-
if ($payment->getMethodInstance()->canCapture()) {
46-
$this->processInvoiceOperation->execute($payment, $invoice, 'sale');
47-
if ($invoice->getIsPaid()) {
48-
$invoice->pay();
49-
}
46+
$this->processInvoiceOperation->execute($payment, $invoice, 'sale');
47+
if ($invoice->getIsPaid()) {
48+
$invoice->pay();
5049
}
51-
5250
$payment->getOrder()->addRelatedObject($invoice);
5351
$payment->setCreatedInvoice($invoice);
5452
if ($payment->getIsFraudDetected()) {

app/code/Magento/Sales/Test/Unit/Model/Order/Payment/Operations/SaleOperationTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ public function testExecute(Invoice $invoice)
6161

6262
/** @var MethodInterface|\PHPUnit_Framework_MockObject_MockObject $paymentMethod */
6363
$paymentMethod = $this->getMockForAbstractClass(MethodInterface::class);
64-
$paymentMethod->method('canCapture')
65-
->willReturn(true);
6664

6765
/** @var Payment|\PHPUnit_Framework_MockObject_MockObject $orderPayment| */
6866
$orderPayment = $this->getMockBuilder(Payment::class)

app/code/Magento/Sales/Test/Unit/Model/Order/PaymentTest.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
use Magento\Sales\Model\Order\Payment;
2020
use Magento\Sales\Model\Order\Payment\Operations\SaleOperation;
2121
use Magento\Sales\Model\Order\Payment\Transaction;
22-
use PHPUnit_Framework_MockObject_MockObject as MockObject;
22+
use PHPUnit\Framework\MockObject\MockObject;
2323

2424
/**
2525
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -50,17 +50,17 @@ class PaymentTest extends \PHPUnit\Framework\TestCase
5050
private $helper;
5151

5252
/**
53-
* @var \Magento\Framework\Event\Manager | \PHPUnit_Framework_MockObject_MockObject
53+
* @var \Magento\Framework\Event\Manager|MockObject
5454
*/
5555
protected $eventManagerMock;
5656

5757
/**
58-
* @var \Magento\Directory\Model\PriceCurrency | \PHPUnit_Framework_MockObject_MockObject
58+
* @var \Magento\Directory\Model\PriceCurrency|MockObject
5959
*/
6060
protected $priceCurrencyMock;
6161

6262
/**
63-
* @var \Magento\Directory\Model\Currency | \PHPUnit_Framework_MockObject_MockObject
63+
* @var \Magento\Directory\Model\Currency|MockObject
6464
*/
6565
protected $currencyMock;
6666

@@ -85,53 +85,53 @@ class PaymentTest extends \PHPUnit\Framework\TestCase
8585
private $transactionId;
8686

8787
/**
88-
* @var \PHPUnit_Framework_MockObject_MockObject
88+
* @var MockObject
8989
*/
9090
protected $transactionCollectionFactory;
9191

9292
/**
93-
* @var \Magento\Sales\Model\Order\CreditmemoFactory|\PHPUnit_Framework_MockObject_MockObject
93+
* @var \Magento\Sales\Model\Order\CreditmemoFactory|MockObject
9494
*/
9595
protected $creditmemoFactoryMock;
9696

9797
/**
98-
* @var \Magento\Sales\Model\Order\Creditmemo | \PHPUnit_Framework_MockObject_MockObject
98+
* @var \Magento\Sales\Model\Order\Creditmemo|MockObject
9999
*/
100100
protected $creditMemoMock;
101101

102102
/**
103-
* @var \Magento\Sales\Model\Order\Payment\Transaction\Repository | \PHPUnit_Framework_MockObject_MockObject
103+
* @var \Magento\Sales\Model\Order\Payment\Transaction\Repository|MockObject
104104
*/
105105
protected $transactionRepositoryMock;
106106

107107
/**
108-
* @var \Magento\Sales\Model\Order\Payment\Transaction\ManagerInterface| \PHPUnit_Framework_MockObject_MockObject
108+
* @var \Magento\Sales\Model\Order\Payment\Transaction\ManagerInterface|MockObject
109109
*/
110110
protected $transactionManagerMock;
111111

112112
/**
113-
* @var \Magento\Sales\Model\Order\Payment\Transaction\BuilderInterface | \PHPUnit_Framework_MockObject_MockObject
113+
* @var \Magento\Sales\Model\Order\Payment\Transaction\BuilderInterface|MockObject
114114
*/
115115

116116
protected $transactionBuilderMock;
117117

118118
/**
119-
* @var \Magento\Sales\Model\Order\Payment\Processor|\PHPUnit_Framework_MockObject_MockObject
119+
* @var \Magento\Sales\Model\Order\Payment\Processor|MockObject
120120
*/
121121
protected $paymentProcessor;
122122

123123
/**
124-
* @var \Magento\Sales\Model\OrderRepository|\PHPUnit_Framework_MockObject_MockObject
124+
* @var \Magento\Sales\Model\OrderRepository|MockObject
125125
*/
126126
protected $orderRepository;
127127

128128
/**
129-
* @var CreditmemoManagementInterface
129+
* @var CreditmemoManagementInterface|MockObject
130130
*/
131131
private $creditmemoManagerMock;
132132

133133
/**
134-
* @var SaleOperation|\PHPUnit_Framework_MockObject_MockObject
134+
* @var SaleOperation|MockObject
135135
*/
136136
private $saleOperation;
137137

0 commit comments

Comments
 (0)