Skip to content

Commit 6230513

Browse files
authored
PT-1282 add explicit check in Success controller to not confirm order twice (#106)
1 parent b3310d9 commit 6230513

File tree

4 files changed

+42
-7
lines changed

4 files changed

+42
-7
lines changed

Controller/Payment/Checkout/AbstractPaymentController.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
use Mondu\Mondu\Helpers\ABTesting\ABTesting;
1313
use Mondu\Mondu\Helpers\Logger\Logger as MonduFileLogger;
1414
use Mondu\Mondu\Model\Request\Factory as RequestFactory;
15-
15+
use Mondu\Mondu\Helpers\Log as MonduTransactions;
1616
abstract class AbstractPaymentController implements ActionInterface
1717
{
1818
/**
@@ -57,6 +57,12 @@ abstract class AbstractPaymentController implements ActionInterface
5757
* @var ABTesting
5858
*/
5959
protected $aBTesting;
60+
61+
/**
62+
* @var MonduTransactions
63+
*/
64+
protected $monduTransactions;
65+
6066
/**
6167
* Execute
6268
*
@@ -73,6 +79,8 @@ abstract public function execute();
7379
* @param MonduFileLogger $monduFileLogger
7480
* @param RequestFactory $requestFactory
7581
* @param JsonFactory $jsonResultFactory
82+
* @param ABTesting $aBTesting
83+
* @param MonduTransactions $monduTransactions
7684
*/
7785
public function __construct(
7886
RequestInterface $request,
@@ -83,7 +91,8 @@ public function __construct(
8391
MonduFileLogger $monduFileLogger,
8492
RequestFactory $requestFactory,
8593
JsonFactory $jsonResultFactory,
86-
ABTesting $aBTesting
94+
ABTesting $aBTesting,
95+
MonduTransactions $monduTransactions
8796
) {
8897
$this->request = $request;
8998
$this->response = $response;
@@ -94,6 +103,7 @@ public function __construct(
94103
$this->requestFactory = $requestFactory;
95104
$this->jsonResultFactory = $jsonResultFactory;
96105
$this->aBTesting = $aBTesting;
106+
$this->monduTransactions = $monduTransactions;
97107
}
98108

99109

Controller/Payment/Checkout/AbstractSuccessController.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010
use Magento\Framework\Exception\LocalizedException;
1111
use Magento\Framework\Message\ManagerInterface as MessageManagerInterface;
1212
use Magento\Quote\Model\Quote;
13+
use Magento\Sales\Api\OrderRepositoryInterface;
1314
use Magento\Sales\Model\Order\Email\Sender\OrderSender;
1415
use Magento\Checkout\Helper\Data as CheckoutData;
1516
use Magento\Quote\Api\CartManagementInterface;
1617
use Mondu\Mondu\Helpers\ABTesting\ABTesting;
1718
use Mondu\Mondu\Helpers\Logger\Logger as MonduFileLogger;
1819
use Mondu\Mondu\Model\Request\Factory as RequestFactory;
20+
use Mondu\Mondu\Helpers\Log as MonduTransactions;
1921

2022
abstract class AbstractSuccessController extends AbstractPaymentController
2123
{
@@ -39,6 +41,11 @@ abstract class AbstractSuccessController extends AbstractPaymentController
3941
*/
4042
private $checkoutData;
4143

44+
/**
45+
* @var OrderRepositoryInterface
46+
*/
47+
protected $orderRepository;
48+
4249
/**
4350
* @param RequestInterface $request
4451
* @param ResponseInterface $response
@@ -52,6 +59,9 @@ abstract class AbstractSuccessController extends AbstractPaymentController
5259
* @param OrderSender $orderSender
5360
* @param CheckoutData $checkoutData
5461
* @param CartManagementInterface $quoteManagement
62+
* @param ABTesting $aBTesting
63+
* @param MonduTransactions $monduTransactions
64+
* @param OrderRepositoryInterface $orderRepository
5565
*/
5666
public function __construct(
5767
RequestInterface $request,
@@ -66,7 +76,9 @@ public function __construct(
6676
OrderSender $orderSender,
6777
CheckoutData $checkoutData,
6878
CartManagementInterface $quoteManagement,
69-
ABTesting $aBTesting
79+
ABTesting $aBTesting,
80+
MonduTransactions $monduTransactions,
81+
OrderRepositoryInterface $orderRepository
7082
) {
7183
parent::__construct(
7284
$request,
@@ -77,13 +89,15 @@ public function __construct(
7789
$monduFileLogger,
7890
$requestFactory,
7991
$jsonResultFactory,
80-
$aBTesting
92+
$aBTesting,
93+
$monduTransactions
8194
);
8295
$this->customerSession = $customerSession;
8396
$this->orderSender = $orderSender;
8497

8598
$this->checkoutData = $checkoutData;
8699
$this->quoteManagement = $quoteManagement;
100+
$this->orderRepository = $orderRepository;
87101
}
88102

89103
/**

Controller/Payment/Checkout/Success.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,23 @@ public function execute()
2222
}
2323

2424
try {
25+
$monduTransaction = $this->monduTransactions->getTransactionByOrderUid($monduId);
26+
27+
if ($monduTransaction && $monduTransaction['is_confirmed']) {
28+
$order = $this->orderRepository->get($monduTransaction['order_id']);
29+
$this->checkoutSession->setLastOrderId($order->getId())
30+
->setLastRealOrderId($order->getIncrementId())
31+
->setLastOrderStatus($order->getStatus())
32+
->setLastSuccessQuoteId($order->getQuoteId())
33+
->setLastQuoteId($order->getQuoteId());
34+
35+
return $this->redirect('checkout/onepage/success/');
36+
}
37+
2538
$quote = $this->checkoutSession->getQuote();
2639
$this->authorizeMonduOrder($monduId, $this->getExternalReferenceId($quote));
2740

2841
$order = $this->placeOrder($quote);
29-
3042
$this->checkoutSession->clearHelperData();
3143
$quoteId = $this->checkoutSession->getQuoteId();
3244
$this->checkoutSession->setLastQuoteId($quoteId)->setLastSuccessQuoteId($quoteId);
@@ -43,7 +55,6 @@ public function execute()
4355
}
4456
}
4557
return $this->redirect('checkout/onepage/success/');
46-
4758
} catch (LocalizedException $e) {
4859
return $this->processException($e, 'Mondu: An error occurred while trying to confirm the order');
4960
} catch (\Exception $e) {

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "mondu_gmbh/magento2-payment",
33
"description": "Mondu payment method for magento 2",
44
"type": "magento2-module",
5-
"version": "2.3.4",
5+
"version": "2.3.5",
66
"license": [
77
"MIT"
88
],

0 commit comments

Comments
 (0)