From ff071aa14141d8c50128de1c2be53eea8ccf2452 Mon Sep 17 00:00:00 2001 From: HoZaifa Ramadan Date: Sat, 19 Jul 2025 11:04:29 +0300 Subject: [PATCH] Fix: Properly parse trandata from request content before decryption --- src/Services/KnetResponseService.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Services/KnetResponseService.php b/src/Services/KnetResponseService.php index 8411946..ebf3cc8 100644 --- a/src/Services/KnetResponseService.php +++ b/src/Services/KnetResponseService.php @@ -48,14 +48,23 @@ public function updateTransaction(KnetTransaction $transaction): KnetTransaction */ public static function decryptAndParse(Request $request): array { - $trandata = $request->getContent(); + // 1. Get the full request content + $content = $request->getContent(); + + // 2. Parse the content into an array + parse_str($content, $output); + + // 3. Extract only the trandata field + $trandata = $output['trandata'] ?? null; if (! $trandata) { throw new AccessDeniedHttpException('Invalid Request'); } + // 4. Decrypt only the trandata field $payload = KPayClient::decryptAES($trandata, config('knet.resource_key')); + // 5. Parse the decrypted result parse_str($payload, $payloadArray); if (! isset($payloadArray['trackid'])) {