xing api -- 로그인후 증권계좌 조회하기



환경 ; windows 10 64bit, python 3.6 32bit


-- xing api 도움말 참고



** 로그인시 결과는 OnLogin event handler 로 들어온다.



xing_login.py 라는 이름으로 저장하자.

 --> 다음에 module 로 사용할 이름이다.




import win32com.client
import pythoncom


class XSession:
"""
classmethod get_instance() 를 사용하여, instance 를 만들어야함.
"""
def __init__(self):
self.login_state = 0

def OnLogin(self, code, msg): # event handler
"""
Login 이 성공적으로 이베스트 서버로 전송된후,
로그인 결과에 대한 Login 이벤트 발생시 실행되는 event handler
"""
if code == "0000":
print("로그인 ok\n")
self.login_state = 1
else:
self.login_state = 2
print("로그인 fail.. \n code={0}, message={1}\n".format(code, msg))

def api_login(self, id="myid", pwd="pass", cert_pwd="pass2"): # id, 암호, 공인인증서 암호
self.ConnectServer("hts.ebestsec.co.kr", 20001)
is_connected = self.Login(id, pwd, cert_pwd, 0, False) # 로그인 하기

if not is_connected: # 서버에 연결 안되거나, 전송 에러시
print("로그인 서버 접속 실패... ")
return

while self.login_state == 0:
pythoncom.PumpWaitingMessages()

def account_info(self):
"""
계좌 정보 조회
"""
if self.login_state != 1: # 로그인 성공 아니면, 종료
return

account_no = self.GetAccountListCount()

print("계좌 갯수 = {0}".format(account_no))

for i in range(account_no):
account = self.GetAccountList(i)
print("계좌번호 = {0}".format(account))

@classmethod
def get_instance(cls):
# DispatchWithEvents로 instance 생성하기
xsession = win32com.client.DispatchWithEvents("XA_Session.XASession", cls)
return xsession



if __name__ == "__main__":
xsession = XSession.get_instance()
xsession.api_login()

xsession.account_info()
print("------END--")








<< 실행 결과 >>




<< 소스 >>






Posted by 자유프로그램

댓글을 달아 주세요

  1. brian 2019.07.15 20:06  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, connectserver가 제대로 안 되서 서버접속에 계속 실패하는데 혹시 이유가 따로 있을까요? 혹시나해서 로그인이랑 분리해서 로그를 띄워봤는데 connectserver에서부터 안되더군요ㅠㅠ