diff --git a/src/Controller/StoreApi/OrderApi/OrderApiController.php b/src/Controller/StoreApi/OrderApi/OrderApiController.php index 3f4da9e7..3974682e 100644 --- a/src/Controller/StoreApi/OrderApi/OrderApiController.php +++ b/src/Controller/StoreApi/OrderApi/OrderApiController.php @@ -75,10 +75,10 @@ class OrderApiController */ public function __construct( PaymentMethodsBalanceService $paymentMethodsBalanceService, - OrdersService $ordersService, - OrdersCancelService $ordersCancelService, - PaymentStateDataService $paymentStateDataService, - LoggerInterface $logger + OrdersService $ordersService, + OrdersCancelService $ordersCancelService, + PaymentStateDataService $paymentStateDataService, + LoggerInterface $logger ) { $this->paymentMethodsBalanceService = $paymentMethodsBalanceService; $this->ordersService = $ordersService; @@ -167,9 +167,9 @@ public function giftcardStateData(SalesChannelContext $context, Request $request $context->getToken(), json_encode($stateData), [ - 'amount' => (int) $request->request->get('amount'), + 'amount' => (int)$request->request->get('amount'), 'paymentMethodId' => $request->request->get('paymentMethodId'), - 'balance' => (int) $request->request->get('balance'), + 'balance' => (int)$request->request->get('balance'), ] ); @@ -188,8 +188,13 @@ public function giftcardStateData(SalesChannelContext $context, Request $request */ public function deleteGiftCardStateData(SalesChannelContext $context, Request $request): JsonResponse { - $this->paymentStateDataService->deletePaymentStateDataFromContextToken($context->getToken()); - - return new JsonResponse(['token' => $context->getToken()]); + $stateData = json_decode($request->request->get('stateData', ''), true); + if (is_array($stateData) && array_key_exists('id', $stateData)) { + $Id = $stateData['id']; + $this->paymentStateDataService->deletePaymentStateData($Id); + return new JsonResponse(['token' => $context->getToken()]); + } else { + return new JsonResponse('StateData is not available.', 404); + } } } diff --git a/src/Handlers/AbstractPaymentMethodHandler.php b/src/Handlers/AbstractPaymentMethodHandler.php index 4622aff6..5cccf299 100644 --- a/src/Handlers/AbstractPaymentMethodHandler.php +++ b/src/Handlers/AbstractPaymentMethodHandler.php @@ -321,7 +321,7 @@ public function pay( if ($storedStateData) { // Remove the used state.data - $this->paymentStateDataService->deletePaymentStateDataFromContextToken($salesChannelContext->getToken()); + $this->paymentStateDataService->deletePaymentStateData($storedStateData['id']); } try { @@ -813,7 +813,7 @@ public function handleAdyenOrderPayment( // order has been created, use state data from db as the first payment $transactionId = $transaction->getOrderTransaction()->getId(); $storedStateData = $this->getStoredStateData($salesChannelContext, $transactionId); - if (!$storedStateData) { + if (is_null($storedStateData)) { $message = sprintf( "There was an error with the giftcard payment. Order number: %s; Missing: giftcard data", $transaction->getOrder()->getOrderNumber() @@ -870,7 +870,7 @@ public function handleAdyenOrderPayment( ) - $partialAmount; // Remove the used state.data - $this->paymentStateDataService->deletePaymentStateDataFromContextToken($salesChannelContext->getToken()); + $this->paymentStateDataService->deletePaymentStateData($storedStateData['id']); } /** diff --git a/src/Service/PaymentStateDataService.php b/src/Service/PaymentStateDataService.php index 6b395039..b0ed33e5 100644 --- a/src/Service/PaymentStateDataService.php +++ b/src/Service/PaymentStateDataService.php @@ -115,24 +115,13 @@ public function updateStateDataContextToken(PaymentStateDataEntity $stateData, $ /** * @param PaymentStateDataEntity $stateData */ - public function deletePaymentStateData(PaymentStateDataEntity $stateData): void + public function deletePaymentStateData(string $Id): void { $this->paymentStateDataRepository->delete( [ - ['id' => $stateData->getId()], + ['id' => $Id], ], Context::createDefaultContext() ); } - - /** - * @param string $contextToken - */ - public function deletePaymentStateDataFromContextToken(string $contextToken): void - { - $stateData = $this->getPaymentStateDataFromContextToken($contextToken); - if (!empty($stateData)) { - $this->deletePaymentStateData($stateData); - } - } }