83 lines
2.6 KiB
PHP
83 lines
2.6 KiB
PHP
|
|
<?php
|
||
|
|
/**
|
||
|
|
* Open DART 재무제표 조회 API (프록시 방식)
|
||
|
|
*
|
||
|
|
* 특정 기업의 재무제표 정보를 조회합니다.
|
||
|
|
*
|
||
|
|
* 파라미터:
|
||
|
|
* - corp_code: 기업코드 (필수)
|
||
|
|
* - bsns_year: 사업연도 (YYYY 형식, 필수)
|
||
|
|
* - reprt_code: 보고서 코드 (11013: 1분기, 11012: 반기, 11014: 3분기, 11011: 사업보고서)
|
||
|
|
* - fs_div: 재무제표 구분 (CFS: 연결, OFS: 별도)
|
||
|
|
*
|
||
|
|
* 사용 예시:
|
||
|
|
* /api/financial_statement.php?corp_code=00126380&bsns_year=2023&reprt_code=11011&fs_div=CFS
|
||
|
|
*/
|
||
|
|
|
||
|
|
header('Content-Type: application/json; charset=utf-8');
|
||
|
|
|
||
|
|
// 프록시 헬퍼 함수 로드
|
||
|
|
require_once __DIR__ . '/proxy_helper.php';
|
||
|
|
|
||
|
|
$corp_code = isset($_GET['corp_code']) ? trim($_GET['corp_code']) : '';
|
||
|
|
$bsns_year = isset($_GET['bsns_year']) ? trim($_GET['bsns_year']) : '';
|
||
|
|
$reprt_code = isset($_GET['reprt_code']) ? trim($_GET['reprt_code']) : '11011'; // 기본값: 사업보고서
|
||
|
|
$fs_div = isset($_GET['fs_div']) ? trim($_GET['fs_div']) : 'CFS'; // 기본값: 연결
|
||
|
|
|
||
|
|
if (empty($corp_code)) {
|
||
|
|
echo json_encode(['status' => 'error', 'message' => 'Corp Code is required.']);
|
||
|
|
exit;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (empty($bsns_year)) {
|
||
|
|
echo json_encode(['status' => 'error', 'message' => 'Business Year (bsns_year) is required.']);
|
||
|
|
exit;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 파라미터 구성
|
||
|
|
$params = [
|
||
|
|
'corp_code' => $corp_code,
|
||
|
|
'bsns_year' => $bsns_year,
|
||
|
|
'reprt_code' => $reprt_code,
|
||
|
|
'fs_div' => $fs_div
|
||
|
|
];
|
||
|
|
|
||
|
|
// 프록시를 통해 Open DART API 호출
|
||
|
|
$result = callOpenDartAPI('fnlttSinglAcnt.json', $params, null, [
|
||
|
|
'timeout' => 30,
|
||
|
|
'return_type' => 'raw' // Open DART의 JSON 응답을 그대로 반환
|
||
|
|
]);
|
||
|
|
|
||
|
|
if (!$result['success']) {
|
||
|
|
// Open DART의 원본 응답 형식 유지
|
||
|
|
if (isset($result['raw_response']) && !empty($result['raw_response'])) {
|
||
|
|
echo $result['raw_response'];
|
||
|
|
} else {
|
||
|
|
// 에러 응답 형식을 Open DART 형식에 맞춤
|
||
|
|
echo json_encode([
|
||
|
|
'status' => '013',
|
||
|
|
'message' => $result['error'] || '재무제표 조회 중 오류가 발생했습니다.',
|
||
|
|
'status_nm' => 'ERROR'
|
||
|
|
], JSON_UNESCAPED_UNICODE);
|
||
|
|
}
|
||
|
|
exit;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Open DART의 원본 JSON 응답을 그대로 반환
|
||
|
|
if (isset($result['raw_response']) && !empty($result['raw_response'])) {
|
||
|
|
echo $result['raw_response'];
|
||
|
|
} else {
|
||
|
|
// raw_response가 없는 경우 data 사용
|
||
|
|
if (isset($result['data'])) {
|
||
|
|
echo json_encode($result['data'], JSON_UNESCAPED_UNICODE);
|
||
|
|
} else {
|
||
|
|
echo json_encode([
|
||
|
|
'status' => '013',
|
||
|
|
'message' => '재무제표 데이터를 가져올 수 없습니다.',
|
||
|
|
'status_nm' => 'ERROR'
|
||
|
|
], JSON_UNESCAPED_UNICODE);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
|