키움증권 REST API 접근토큰 발급
아래 프로그램 실행전에 앱키와 시크릿키는 API키 발급 받는곳에서 먼저 받아 놓아야 합니다.
키움증권 REST API 사용신청 하는곳
REST는 특성성 프로그램 언어와 관계 없습니다. 예제에서 파이선 자바스크립트 이렇게 있고 PHP 없다고 하여 안되는것이 아닙니다.
물론 인터넷(네트워크) 지원 안되는 언어는 안됩니다.
그렇기 때문에 리눅스 쉘에서 쉽게 테스트 할 수 있는 아래도 당연히 됩니다.
curl -X POST -H "Content-Type: application/json;charset=UTF-8" -d '{"grant_type":"client_credentials","appkey":"AxserEsdcredca.....","secretkey":"SEefdcwcforehDre2fdvc...."}' -v -w "\nHTTP Code: %{http_code}\n" https://api.kiwoom.com/oauth2/token
<?php
// 접근토큰 발급
function fn_au10001($data) {
// $host = 'https://mockapi.kiwoom.com'; // 모의투자
$endpoint = '/oauth2/token';
$url = $host . $endpoint;
$headers = [
'Content-Type: application/json;charset=UTF-8' // 컨텐츠타입
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$responseHeaders = substr($response, 0, $headerSize);
$responseBody = substr($response, $headerSize);
curl_close($ch);
$headerArray = [];
$headerLines = explode("\r\n", $responseHeaders);
foreach ($headerLines as $line) {
if (strpos($line, 'next-key:') === 0) {
$headerArray['next-key'] = trim(substr($line, 9));
} elseif (strpos($line, 'cont-yn:') === 0) {
$headerArray['cont-yn'] = trim(substr($line, 8));
} elseif (strpos($line, 'api-id:') === 0) {
$headerArray['api-id'] = trim(substr($line, 7));
}
}
$aAuth2Token = json_decode($responseBody, true);
echo 'Code: ' . $httpCode . "\n";
echo 'Header: ' . json_encode($headerArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "\n";
echo 'Body: ' . json_encode(json_decode($responseBody), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "\n";
// echo $response . PHP_EOL;
// echo "--------------------------------" . PHP_EOL;
// echo "httpCode: $httpCode headerSize: $headerSize " . PHP_EOL;
// print_r($data);
// echo "--------------------------------" . PHP_EOL;
return $aAuth2Token;
}
$aParams = [
'grant_type' => 'client_credentials', // grant_type
'appkey' => '앱키',
'secretkey' => '시크릿키',
];
fn_au10001($aParams);
위와 같이 변경해서 사용하면 되며 위는 테스트 하기 위해서 만들어진 것으로 실제 사용은 공통되는 부분은 함수로 만들어 사용하면 됩니다.
처음에 curl 실행시 아무것도 나오지 않았는데 아래 부분을 넣어주지 않아서 그랬습니다.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
● 종목의 시세를 조회하는 것은 아래를 참고하세요.
- 키움증권 REST API 시세조회 > 시분요청 > PHP
