validated(); $transaction = $this->service->create($payload); return response()->json([ 'ok' => true, 'transaction' => new PaymentTransactionResource($transaction->toArray()), ], 201); } public function byPayment(int $paymentId): JsonResponse { $transactions = $this->service->getByPayment($paymentId); return response()->json([ 'ok' => true, 'transactions' => PaymentTransactionResource::collection($transactions), ]); } public function updateStatus(Request $request, string $transactionId): JsonResponse { $status = $request->input('status'); if ($status === null) { $raw = $request->getContent() ?: ''; $json = json_decode($raw, true); if (is_array($json) && array_key_exists('status', $json)) { $status = $json['status']; } else { $parsed = []; parse_str($raw, $parsed); $status = $parsed['status'] ?? null; } } if ($status === null || trim((string) $status) === '') { return response()->json([ 'message' => 'Validation failed.', 'errors' => ['status' => ['The status field is required.']], ], 422); } $updated = $this->service->updateStatus($transactionId, (string) $status); if (!$updated) { return response()->json(['ok' => false, 'message' => 'Transaction not found.'], 404); } return response()->json(['ok' => true]); } }