From 094fa7c6404207703203f8417562ff5c0a0b666d Mon Sep 17 00:00:00 2001 From: jjstyle Date: Fri, 2 Jan 2026 10:05:55 +0900 Subject: [PATCH] =?UTF-8?q?api=5Freceiver=20=EB=A6=AC=ED=84=B4=20=EB=A9=94?= =?UTF-8?q?=EC=84=B8=EC=A7=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Libraries/NaverApiClient.php | 4 +- app/Services/NaverService.php | 68 +++++++++++++++++++++----------- worker/api_receiver.php | 17 ++++---- 3 files changed, 55 insertions(+), 34 deletions(-) diff --git a/app/Libraries/NaverApiClient.php b/app/Libraries/NaverApiClient.php index 5690f6a..0fca11a 100644 --- a/app/Libraries/NaverApiClient.php +++ b/app/Libraries/NaverApiClient.php @@ -34,7 +34,7 @@ class NaverApiClient /** * CURL 공통 실행 함수 */ - private function request(string $method, string $url, array $data = null): ?array + private function request(string $method, string $url, ?array $data = null): ?array { /** * curl --location 'https://test-b2b.land.naver.com/kiso/center/verification-article/2500000001?charger=admin' \ @@ -79,7 +79,7 @@ class NaverApiClient curl_close($ch); // 결과 로그 기록 (성공/실패 모두 기록하여 추적 가능하게 함) - if ($httpCode === 200) { + if ($httpCode === 200 && $httpdCode === 202) { log_message('info', "[Naver API $method SUCCESS] URL: $url | Response: $response"); } else { log_message('error', "[Naver API $method FAIL] URL: $url | Code: $httpCode | Response: $response"); diff --git a/app/Services/NaverService.php b/app/Services/NaverService.php index 3141b4d..60e24a5 100644 --- a/app/Services/NaverService.php +++ b/app/Services/NaverService.php @@ -39,22 +39,25 @@ class NaverService // 로그 기록 write_custom_log("ARTICLE_INFO | ArticleNumber: $articleNumber", 'INFO', 'service'); - // 2. 파라미터 매핑 (기존의 $vrfc_params 생성 로직) - $vrfcParams = $this->mapVrfcParams($articleInfo, $requestDatetime); + // 2. 가공 로직 (insertVrfc에 있던 긴 배열 생성 로직) + $vrfcParams = $this->mapToDatabaseParams($articleInfo, $payload); + + // + write_custom_log("VRFC_PARAMS | " . json_encode($vrfcParams, JSON_UNESCAPED_UNICODE), 'INFO', 'service'); // 3. DB 저장 - if (!$this->v2ArticleModel->insert($vrfcParams)) { - $errorMessages = implode(', ', $this->v2ArticleModel->errors()); + if (!$this->VrfcReqModel->insert($vrfcParams)) { + $errorMessages = implode(', ', $this->VrfcReqModel->errors()); throw new \Exception("V2 매물 삽입 오류: " . $errorMessages); } - return $this->v2ArticleModel->getInsertID(); + return $this->VrfcReqModel->getInsertID(); } /** * API 데이터를 DB 컬럼에 맞게 변환 */ - private function mapVrfcParams(array $articleInfo, string $requestDatetime): array + private function mapToDatabaseParams(array $articleInfo, array $payload): array { $files = $articleInfo['files'] ?? []; $certRegister = []; @@ -72,25 +75,42 @@ class NaverService } } - return [ - 'atcl_no' => $articleInfo['articleNumber'], - 'cpid' => $articleInfo['cpId'], - 'cp_atcl_id' => $articleInfo['cpArticleNumber'], - 'trade_type' => $articleInfo['tradeTypeCode'], - 'realtor_nm' => $articleInfo['realtor']['realtorName'] ?? '', - 'realtor_tel_no' => $articleInfo['realtor']['representativeCellphoneNumber'] ?? '', - 'seller_tel_no' => $articleInfo['seller']['sellerTelephoneNumber'] ?? '', - 'vrfc_type' => $articleInfo['verificationTypeCode'], - 'rgbk_confirm' => ($articleInfo['isUnregisteredVerificationRequested'] ?? false) ? 'Y' : 'N', - 'rdate' => $requestDatetime, - 'stat_cd' => '10', - 'insert_user' => 'admin', - 'insert_tm' => date('Y-m-d H:i:s'), + $vrfc_params = [ + 'reqSeq' => '', + 'atcl_no' => $articleInfo['articleNumber'], + 'step' => '', + 'cpid' => $articleInfo['cpId'], + 'cp_atcl_id' => $articleInfo['cpArticleNumber'], + 'trade_type' => $articleInfo['tradeTypeCode'], + 'realtor_nm' => $articleInfo['realtor']['realtorName'], + 'realtor_tel_no' => $articleInfo['realtor']['representativeCellphoneNumber'], + 'seller_tel_no' => $articleInfo['seller']['sellerTelephoneNumber'], + 'vrfc_type' => $articleInfo['verificationTypeCode'], + 'rgbk_confirm' => $articleInfo['isUnregisteredVerificationRequested'] ? 'Y' : 'N', + 'req_type' => '', + 'rdate' => $requestDatetime ?? db_now('Y-m-d H:i:s'), + 'cpTelNo' => $articleInfo['seller']['sellerTelephoneNumber'], + 'stat_cd' => '10', + 'try_cnt' => '0', + 'insert_user' => 'admin', + 'insert_tm' => db_now(), + 'memo' => '', + 'contact_fail_cnt' => '0', + 'sync_yn' => 'N', + 'reg_try_cnt' => '0', + 'tel_fail_cause' => null, 'rgbk_confirm_owner_nm' => $articleInfo['seller']['ownerName'] ?? null, - 'confirm_doc_img_url' => json_encode($confirm_doc_img_url, JSON_UNESCAPED_UNICODE), - 'certRegister' => json_encode($certRegister, JSON_UNESCAPED_UNICODE), - 'referenceFileUrl' => json_encode($referenceFileUrl, JSON_UNESCAPED_UNICODE), - // 필요한 나머지 컬럼들 추가... + 'direct_trad_yn' => $articleInfo['seller']['isDirectTrade'] === true ? 'Y' : 'N', + 'confirm_doc_img_url' => empty($confirm_doc_img_url) ? null : json_encode($confirm_doc_img_url, JSON_UNESCAPED_UNICODE), + 'confirm_doc_owner_check_yn' => '', + 'owner_verifiable' => null, + 'vrfc_cmpl_type' => null, + 'rgbk_doc_img_url' => null, + 'certRegister' => empty($certRegister) ? null : json_encode($certRegister, JSON_UNESCAPED_UNICODE), + 'referenceFileUrl' => empty($referenceFileUrl) ? null : json_encode($referenceFileUrl, JSON_UNESCAPED_UNICODE), ]; + + + return $vrfc_params; } } \ No newline at end of file diff --git a/worker/api_receiver.php b/worker/api_receiver.php index 8b3984e..3e16c47 100644 --- a/worker/api_receiver.php +++ b/worker/api_receiver.php @@ -59,8 +59,8 @@ try { // 처리가 완료된 것은 아니지만, 접수는 완료되었음을 의미 http_response_code(202); echo apiResponse([ - 'code' => '1', - 'message' => 'Request accepted and queued' + 'code' => 'success', + 'message' => '' ]); @@ -106,11 +106,12 @@ function writeLog($message, $level = 'ERROR') { // 도우미 함수 정의 function apiResponse($error = null) { - $base = [ - '@type' => 'response', - '@service' => 'confirms', - '@version' => '1.0.0' - ]; - if ($error) $base['error'] = $error; + // $base = [ + // '@type' => 'response', + // '@service' => 'confirms', + // '@version' => '1.0.0' + // ]; + // if ($error) $base['error'] = $error; + $base = $error; return json_encode($base); } \ No newline at end of file