Skip to content

Commit c2e6a5c

Browse files
committed
RATESWSX-321: fix deletion of ratepay-data if payment-method got switched
1 parent fecf5f3 commit c2e6a5c

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## WIP
44

55
* RATESWSX-320: dfp: remove validation & improve user-identification
6+
* RATESWSX-321: fix deletion of ratepay-data if payment-method got switched
67

78
# Version 7.1.3 - Released on 2024-10-17
89

src/Components/Checkout/SalesChannel/HandlePaymentMethodRoute.php

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,24 @@ public function getDecorated(): AbstractHandlePaymentMethodRoute
4444

4545
public function load(Request $request, SalesChannelContext $context): HandlePaymentMethodRouteResponse
4646
{
47-
if ($request->headers->count() === 0) {
48-
// it seems like that this is not an API request. This should be an internal call of the route.
49-
// the module should only handle API calls.
50-
return $this->innerService->load($request, $context);
51-
}
52-
5347
$orderId = $request->request->getAlnum('orderId');
48+
/** @var OrderEntity|null $order */
49+
$order = !empty($orderId) ? $this->orderRepository->search(CriteriaHelper::getCriteriaForOrder($orderId), $context->getContext())->first() : null;
5450

55-
$paymentHandlerIdentifier = null;
56-
$order = null;
57-
if (!empty($orderId)) {
58-
/** @var OrderEntity|null $order */
59-
$order = $this->orderRepository->search(CriteriaHelper::getCriteriaForOrder($orderId), $context->getContext())->first();
60-
if ($order instanceof OrderEntity && ($transaction = $order->getTransactions()->last()) instanceof OrderTransactionEntity) {
61-
$paymentHandlerIdentifier = $transaction->getPaymentMethod()->getHandlerIdentifier();
51+
if (($request->attributes->all('_routeScope')[0] ?? null) === 'store-api') {
52+
// we only validate API requests
53+
$paymentHandlerIdentifier = null;
54+
if (!empty($orderId)) {
55+
if ($order instanceof OrderEntity && ($transaction = $order->getTransactions()->last()) instanceof OrderTransactionEntity) {
56+
$paymentHandlerIdentifier = $transaction->getPaymentMethod()->getHandlerIdentifier();
57+
}
58+
} else {
59+
$paymentHandlerIdentifier = $context->getPaymentMethod()->getHandlerIdentifier();
6260
}
63-
} else {
64-
$paymentHandlerIdentifier = $context->getPaymentMethod()->getHandlerIdentifier();
65-
}
6661

67-
if ($paymentHandlerIdentifier !== null && is_subclass_of($paymentHandlerIdentifier, AbstractPaymentHandler::class)) {
68-
$this->dataValidationService->validatePaymentData(new DataBag($request->request->all()), $context, $order ?? null);
62+
if ($paymentHandlerIdentifier !== null && is_subclass_of($paymentHandlerIdentifier, AbstractPaymentHandler::class)) {
63+
$this->dataValidationService->validatePaymentData(new DataBag($request->request->all()), $context, $order ?? null);
64+
}
6965
}
7066

7167
$result = $this->innerService->load($request, $context);

0 commit comments

Comments
 (0)