Skip to content

Commit

Permalink
Merge pull request #444 from Adyen/ECP-8327
Browse files Browse the repository at this point in the history
[ECP-8327] Saving multiple Statedata
  • Loading branch information
khushboo-singhvi authored Jan 9, 2024
2 parents 217a3a5 + d9a05cb commit 84f24ff
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 25 deletions.
23 changes: 14 additions & 9 deletions src/Controller/StoreApi/OrderApi/OrderApiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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'),
]
);

Expand All @@ -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);
}
}
}
6 changes: 3 additions & 3 deletions src/Handlers/AbstractPaymentMethodHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -870,7 +870,7 @@ public function handleAdyenOrderPayment(
) - $partialAmount;

// Remove the used state.data
$this->paymentStateDataService->deletePaymentStateDataFromContextToken($salesChannelContext->getToken());
$this->paymentStateDataService->deletePaymentStateData($storedStateData['id']);
}

/**
Expand Down
15 changes: 2 additions & 13 deletions src/Service/PaymentStateDataService.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}

0 comments on commit 84f24ff

Please sign in to comment.