이전 포스팅에서, 키움증권 API를 사용하기 위해 회원가입을 했는데, 공인인증서를 연동하는데 실패했다. 내 문제라기 보다는 보안상 직원이 직접 신분증 인증을 하는 것 같은데, 업무시간이 지나서 확인이 안된 경우이다. 뭐라도 진행을 해야하기 때문에, 로그인 화면을 연동하고자 한다.
Open API 모듈 설치
이곳을 클릭하여 키움증권 Open API 안내 페이지로 접속할 수 있다.
키움증권에서 제공하는 API를 사용하기 위해서는 모듈이 필수적으로 필요하므로, 모듈을 다운로드받는다. (모듈을 설치하지 않으면 자료실에 있는 예제들도 오류가 난다!)
(노래시작했다 노래끝났다)
샘플 코드 다운로드
자료실 탭으로 가면, 샘플 코드를 다운로드 받을 수 있다. 이 포스팅(앞으로도)은 C#으로 진행하기 때문에, C# 샘플을 다운로드 받는다. 자세히 보니, 8번 게시물 뿐만 아니라 11번 게시물도 C#샘플이다. 차이점은, 초록색 상자를 보면 알 수 있을 것이다. 우리는 8번 샘플을 다운받도록 한다.
다운로드 받은 프로젝트를 실행하면 이렇게 나온다. 실행을 시켜보도록 한다. 참고로, OpenAPI 모듈을 설치하지 않으면 오류가 나니, 반드시 다운로드 받도록 한다.
실행도 잘된다! (대신증권 Cybos API 샘플 사용해보니, 라이브러리를 어디서 다운받아야하는건지, 아니면 포함이 안돼있는건지 실행이 안됐었다.)
내 프로젝트에 적용하기
예시 프로젝트에서 작업을 할건 아니기 때문에, 앞으로 작업할 프로젝트로 로그인 기능을 옮겨오도록 한다. 키움증권 라이브러리를 사용하기 위해서는 구성요소를 참조해주어야 한다.
코드창으로 이동한 다음에 도구 > 도구 상자 항목 선택을 눌러준다. 만약 디자인 창에서 도구를 누르면 도구 상자 항목 선택 버튼이 비활성화 될 수 있다.
COM 구성 요소 탭 > KHOpenAPI Control 을 추가한다. 참고로 목록에서 아무거나 클릭한 후, 'kh'를 키보드로 입력하면 찾아진다. 만약 나오지 않는다면 OpenAPI 모듈을 다운로드 받지 않았기 때문일 것이다. 모듈은 반드시 다운로드 받아야 한다.!
이런 화면이 나오면 성공한거다.
디자인 화면으로 돌아와서, 좌측 도구 상자를 열면 최하단 '일반' 섹션에 KHOpenAPI Control이 보인다. 선택해서 디자인 화면에 그려주면, OpenAPI가 생기고 'axKHOpenAPI1'라는 이름으로 생긴다. 숫자를 지워 'axKHOpenAPI'로 만들어주자.
다시 샘플 프로젝트로 돌아오자. 기본기능 > 로그인을 더블클릭 하면 로그인에 필요한 소스코드가 나온다.
해당 부분을 내 프로젝트에 버튼을 만들고, 붙여넣자. 참고로 코드상 axKHOpenAPI.CommConnect()에서 axKHOpenAPI는 이전에 디자인 화면에서 만들어준 구성요소의 이름이다.! (뒤에 붙은 1을 없애준 그 이름)
if (axKHOpenAPI.CommConnect() == 0)
{
Logger(Log.일반, "로그인창 열기 성공");
}
else
{
Logger(Log.에러, "로그인창 열기 실패");
}
코드를 붙여넣었더니, 오류가 발생한다. 이유는, 'Logger'함수가 구현되지 않았기 때문. 샘플 코드에서 해당 함수를 클릭하고, Ctrl+F12 (구현부 이동)을 누르면 해당 함수가 구현된 부분을 찾을 수 있을 것이다.
샘플 코드에서 빨간 박스를 클릭하고 Ctrl+F12를 누르면
이렇게 구현부로 이동된다. 코드의 내용을 해석해보니, 리스트박스에 로그를 담는 기능이다. 우리는 로그인 테스트만 할 것이므로, 우리 프로젝트의 코드를 바꿔준다.
if (axKHOpenAPI.CommConnect() == 0)
{
MessageBox.Show("로그인창 열기 성공");
}
else
{
MessageBox.Show("로그인창 열기 실패");
}
오류가 없음을 확인했다. Ctrl+F5를 통해 컴파일해서 실행해보자.
로그인 창이 나오고, 성공했다는 메시지박스도 나오는 것을 볼 수 있다.