2017년 11월 22일 수요일

국세청 사이트에서 사업자 번호로 사업자 상태 조회하는 API 개발

0. 회사 ERP에 거래업체를 등록할 때마다 매번 국세청 사이트에 접속해서 사업자 번호로 사업자 상태를 조회해서 같이 입력을 해줘야 함

1. 국세청 사이트는 IE 전용이라 날 귀찮게 함.

2. 참고 또 참고 했지만, 역시 결국 귀찮음.

3. 에라이 개발해보자!!

4. 일단 있는거 있음 날로 먹기로 결심

5. 절라 구글링 해도 안나오거나, 뭔 놈의 유료로 파는 것만 발견.

6. 국세청 사이트의 해당 서비스를 분석

7. 결국은 서블릿 호출 + XML 전문통신

8. 간단하게 하기 위해서 ASP로 개발. (Java도 마찬가지 임.. 귀찮아서 개발 안함.)

9. 이하 소스

10. 퍼갈땐 출처 좀 밝혀 주길..(혹시 알어... 출세할지.. 불펌하면.. 혼내줄꺼임!)

11. git 에도 추가 (https://github.com/jaymz9634/retcompanystatus)

--------------------------------------------------------------------
2020-03-03 내용 추가:

국세청에서 과도한 접근에 대한 금지를 해놨음.

자체 테스트 해봤을때 한번에 30건 정도 조회하고 1분 쉬었다가 요청하면 문제없이 처리 됨을 확인.

내 경우에는 java로 구현해서 thread.sleep 으로 30건 마다 1분씩 쉬게해서 처리 완료.

<%
Session.CodePage = 949
Response.Charset = "euc-kr" '결과가 한글이기에 안 깨지게...'
'On Error Resume Next'

txprDscmNo = Request("txprDscmNo")

xmldata = xmldata & "<map id='ATTABZAA001R08'><pubcUserNo/><mobYn>N</mobYn><inqrTrgtClCd>1</inqrTrgtClCd><txprDscmNo>"&txprDscmNo&"</txprDscmNo><dongCode>05</dongCode><psbSearch>Y</psbSearch><map id='userReqInfoVO'/></map>"

set api = createobject("msxml2.serverXmlhttp")
api.open "POST", "https://teht.hometax.go.kr/wqAction.do?actionId=ATTABZAA001R08&screenId=UTEABAAA13&popupYn=false&realScreenId=", false 
api.setRequestHeader "content-type","text/xml; charset=utf-8"
api.send xmldata

if api.status = 200 Then
    Response.ContentType="text/xml"
    Response.Write(api.ResponseText)
else
    Response.Write("[statusCode : "&api.status&"]" & "<br/>")
    Response.Write("<hr/>")
    Response.Write(xmldata & "<br/>")
    Response.Write("<hr/>")
    Response.Write(api.responseText & "<br/>")'
End if

If Err.number <> 0 Then     '오류 발생 시 이 부분 실행
    Response.Write "<b3>" & Err.Source & "<hr noshade></h3>"
    Response.Write "오류 번호 : " & Err.number & "<br>"
    Response.Write "내용 : " & Err.Description & "<br>"
End If

Set api = nothing
%>

댓글 12개:

  1. 고맙습니다. 잘 사용할께요.

    답글삭제
  2. 정말 좋은 정보 감사합니다. 근데 간헐적으로 조회가 안될 때가 있네요ㅠ.. 잘 되다가 어느 순간 다시 조회하면 결과를 가져오지 못하는데 혹시 해결 방법이 있을까요..?

    답글삭제
    답글
    1. 에러 로그나 HTTP STATUS 같은 코드 값을 확인해 보세요.

      삭제
  3. 안녕하세요 위의 API가 어떤 모습으로 보여지는지 확인해보고 싶은데 캡처된 화면 같은건 없을까요?

    답글삭제
    답글
    1. 단순한 XML 형태의 전문통신입니다...

      삭제
  4. 안녕하세요 은행을 다니는 막 코딩을 시작한 사람입니다.
    회사에서 사용하기 위한 프로그램을 개발해보려하다가 미리 만들어주신 코드를 발견했습니다.
    아직 주피터로 파이썬밖에 몰라 여쭤봅니다.
    혹시 java로 작성하신 저 코드를 python으로 변환한다면 구동이 가능할까요~?

    답글삭제
  5. 파이썬을 대충 공부해서리.. 된다 안된다라는 답변은 어렵고..

    프로그램 원리를 파악하신다면 어떤 언어든 구현 못할 건 없다란게 제 지론입니다.

    기본 원리는 xml 통신을 사용하여 서버에 결과를 요청하고 반환된 결과 xml을 parse 하시면 됩니다.

    파이썬이 제가 말씀드린

    1. xml 통신
    2. xml 파싱

    이 안될리가 없을 것으로 알고 있습니다. 차근차근 해보시면 좋은 결과가 있으리라 생각합니다.. ^^

    답글삭제
  6. 같은 루트로 구글링 하다가 여기까지 오게 되었습니다. 잘사용하겠습니다.

    답글삭제
  7. 작성하신 코드를 바탕으로 python으로 재작성했네요 ㅎ
    도움받은 부분은 url & xml 데이터 부분이었습니다. 감사합니다 ㅎㅎ

    거의 비슷한 이유로 결국 재작성까지 해서 살짝 귀찮았지만,
    국세청에서 API로 제공해주면 좋지 않을까 하는 생각을 가져봅니다

    답글삭제
    답글
    1. 저도 왜 요딴건 API 제공 안해주는지 참 아쉽습니다.. ^^

      삭제

BE Band (비밴드) - 2024년 03월 02일 잠실새내 락앤롤욱스 공연

나의 10~20대를 보낸 잠실에서의 공연.. 오랜만에 가보니.. 여기가.. 마눌님과 자주 가던 영화관이었는데... 여긴 뭐가 있었는데... 란 추억도 떠올리며 기분좋게 감.​ 공연장은 좀 협소한 편이었고, 인천의 쥐똥나무 보다는 약간 크고... 인천 ...