diff --git a/worker/api_receiver.php b/worker/api_receiver.php index f43700a..6342f8f 100644 --- a/worker/api_receiver.php +++ b/worker/api_receiver.php @@ -9,21 +9,15 @@ header('Content-Type: application/json; charset=utf-8'); // 2. 보안 키 체크 (URL 파라미터 key=값) $configKey = "7EE868F4B36D36B3D86736828F4729EAC4992083"; // 실제 사용할 키값으로 변경하세요 -$api_info = [ - '@type' => 'response', - '@service' => 'confirms', - '@version' => '1.0.0' -]; $receivedKey = $_GET['key'] ?? ''; $logDir = __DIR__ . '/logs/'; if ($receivedKey !== $configKey) { http_response_code(403); - $api_info['error'] = [ + echo apiResponse([ 'code' => '-1', 'message' => 'Unregistered key' - ]; - echo json_encode($api_info); + ]); exit; } @@ -61,36 +55,25 @@ try { // 들어온 원본($rawData)을 그대로 기록합니다. writeLog("RAW_RECEIVE | " . $rawData, 'INFO'); // -------------------------------------- - // 6. 네이버측에 성공 응답 (202 Accepted) // 처리가 완료된 것은 아니지만, 접수는 완료되었음을 의미 http_response_code(202); - - echo json_encode( - $api_info['error'] = [ + echo apiResponse([ 'code' => '1', 'message' => 'Request accepted and queued' - ] -); - - // echo json_encode([ - // 'resultCode' => 'S000', - // 'resultMessage' => 'Request accepted and queued', - // 'articleNumber' => $data['articleNumber'] ?? 'N/A' - // ]); + ]); + } catch (Exception $e) { // 7. 장애 발생 시 로그 기록 (시스템 로그) - - $api_info['error'] = [ - 'code' => '-1', - 'message' => $e->getMessage() - ]; writeLog( json_encode($api_info) ." | Received: " . json_encode($data), 'ERROR'); http_response_code(500); - echo json_encode($api_info); + echo apiResponse([ + 'code' => '-1', + 'message' => $e->getMessage() + ]); } /** @@ -119,4 +102,15 @@ function writeLog($message, $level = 'ERROR') { // 5. 파일 기록 (FILE_APPEND로 기존 내용 뒤에 추가) file_put_contents($logFile, $formattedMessage, FILE_APPEND); +} + +// 도우미 함수 정의 +function apiResponse($error = null) { + $base = [ + '@type' => 'response', + '@service' => 'confirms', + '@version' => '1.0.0' + ]; + if ($error) $base['error'] = $error; + return json_encode($base); } \ No newline at end of file