debug:카드 사용내역 조회 디버그 로그 추가

- API 호출 파라미터 로깅
- SOAP 응답 데이터 구조 로깅
- 에러 코드 및 파싱 결과 로깅

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
pro
2026-01-23 13:39:38 +09:00
parent e2e4040b35
commit a8e81354fc

View File

@@ -219,6 +219,17 @@ public function transactions(Request $request): JsonResponse
$barobillMember = BarobillMember::where('tenant_id', $tenantId)->first();
$userId = $barobillMember?->barobill_id ?? '';
// 디버그 로그
Log::info('[ECard] 조회 요청', [
'tenantId' => $tenantId,
'userId' => $userId,
'startDate' => $startDate,
'endDate' => $endDate,
'cardNum' => $cardNum,
'page' => $page,
'limit' => $limit,
]);
// DB에서 저장된 계정과목 데이터 조회
$savedData = CardTransaction::getByDateRange($tenantId, $startDate, $endDate, $cardNum ?: null);
@@ -228,7 +239,7 @@ public function transactions(Request $request): JsonResponse
}
// 단일 카드 조회
$result = $this->callSoap('GetPeriodCardApprovalLog', [
$params = [
'ID' => $userId,
'CardNum' => $cardNum,
'StartDate' => $startDate,
@@ -236,6 +247,17 @@ public function transactions(Request $request): JsonResponse
'CountPerPage' => $limit,
'CurrentPage' => $page,
'OrderDirection' => 2 // 2:내림차순
];
Log::info('[ECard] GetPeriodCardApprovalLog 호출', $params);
$result = $this->callSoap('GetPeriodCardApprovalLog', $params);
Log::info('[ECard] GetPeriodCardApprovalLog 응답', [
'success' => $result['success'],
'error' => $result['error'] ?? null,
'error_code' => $result['error_code'] ?? null,
'data_keys' => $result['success'] && isset($result['data']) ? (is_object($result['data']) ? get_object_vars($result['data']) : 'not_object') : null,
]);
if (!$result['success']) {
@@ -250,6 +272,8 @@ public function transactions(Request $request): JsonResponse
// 에러 코드 체크
$errorCode = $this->checkErrorCode($resultData);
Log::info('[ECard] 에러 코드 체크', ['errorCode' => $errorCode]);
if ($errorCode && !in_array($errorCode, [-24005, -24001])) {
return response()->json([
'success' => false,
@@ -260,6 +284,7 @@ public function transactions(Request $request): JsonResponse
// 데이터가 없는 경우
if ($errorCode && in_array($errorCode, [-24005, -24001])) {
Log::info('[ECard] 데이터 없음 (에러코드로 판단)');
return response()->json([
'success' => true,
'data' => [
@@ -273,6 +298,11 @@ public function transactions(Request $request): JsonResponse
// 데이터 파싱 (저장된 계정과목 병합)
$logs = $this->parseTransactionLogs($resultData, $savedData);
Log::info('[ECard] 파싱 결과', [
'logs_count' => count($logs['logs']),
'summary' => $logs['summary'],
]);
return response()->json([
'success' => true,
'data' => [
@@ -287,7 +317,9 @@ public function transactions(Request $request): JsonResponse
]
]);
} catch (\Throwable $e) {
Log::error('카드 사용내역 조회 오류: ' . $e->getMessage());
Log::error('카드 사용내역 조회 오류: ' . $e->getMessage(), [
'trace' => $e->getTraceAsString()
]);
return response()->json([
'success' => false,
'error' => '서버 오류: ' . $e->getMessage()
@@ -300,9 +332,20 @@ public function transactions(Request $request): JsonResponse
*/
private function getAllCardsTransactions(string $userId, string $startDate, string $endDate, int $page, int $limit, $savedData = null): JsonResponse
{
Log::info('[ECard] 전체 카드 조회 시작', [
'userId' => $userId,
'startDate' => $startDate,
'endDate' => $endDate,
]);
// 먼저 카드 목록 조회 (GetCardEx2 사용)
$cardResult = $this->callSoap('GetCardEx2', ['AvailOnly' => 0]);
Log::info('[ECard] GetCardEx2 응답', [
'success' => $cardResult['success'],
'error' => $cardResult['error'] ?? null,
]);
if (!$cardResult['success']) {
return response()->json([
'success' => false,
@@ -316,6 +359,15 @@ private function getAllCardsTransactions(string $userId, string $startDate, stri
$cardList = is_array($data->CardEx) ? $data->CardEx : [$data->CardEx];
}
Log::info('[ECard] 카드 목록', [
'count' => count($cardList),
'cards' => array_map(fn($c) => [
'CardNum' => $c->CardNum ?? 'N/A',
'Alias' => $c->Alias ?? 'N/A',
'Status' => $c->Status ?? 'N/A',
], $cardList),
]);
$allLogs = [];
$totalAmount = 0;
$approvalCount = 0;
@@ -327,7 +379,7 @@ private function getAllCardsTransactions(string $userId, string $startDate, stri
$cardNum = $card->CardNum ?? '';
if (empty($cardNum) || (is_numeric($cardNum) && $cardNum < 0)) continue;
$cardResult = $this->callSoap('GetPeriodCardApprovalLog', [
$params = [
'ID' => $userId,
'CardNum' => $cardNum,
'StartDate' => $startDate,
@@ -335,14 +387,41 @@ private function getAllCardsTransactions(string $userId, string $startDate, stri
'CountPerPage' => 1000,
'CurrentPage' => 1,
'OrderDirection' => 2
];
Log::info('[ECard] 카드별 사용내역 조회', ['cardNum' => $cardNum, 'params' => $params]);
$cardResult = $this->callSoap('GetPeriodCardApprovalLog', $params);
Log::info('[ECard] 카드별 응답', [
'cardNum' => $cardNum,
'success' => $cardResult['success'],
'error' => $cardResult['error'] ?? null,
'data_type' => isset($cardResult['data']) ? gettype($cardResult['data']) : 'null',
'data_props' => isset($cardResult['data']) && is_object($cardResult['data'])
? array_keys(get_object_vars($cardResult['data']))
: null,
]);
if ($cardResult['success']) {
$cardData = $cardResult['data'];
$errorCode = $this->checkErrorCode($cardData);
Log::info('[ECard] 카드별 에러코드', [
'cardNum' => $cardNum,
'errorCode' => $errorCode,
'CurrentPage' => $cardData->CurrentPage ?? 'N/A',
'MaxIndex' => $cardData->MaxIndex ?? 'N/A',
'hasCardLogList' => isset($cardData->CardLogList),
'hasCardApprovalLog' => isset($cardData->CardLogList->CardApprovalLog ?? null),
]);
if (!$errorCode || in_array($errorCode, [-24005, -24001])) {
$parsed = $this->parseTransactionLogs($cardData, $savedData);
Log::info('[ECard] 카드별 파싱 결과', [
'cardNum' => $cardNum,
'logs_count' => count($parsed['logs']),
]);
foreach ($parsed['logs'] as $log) {
$log['cardBrand'] = $this->getCardCompanyName($card->CardCompany ?? '');
$allLogs[] = $log;