728x90
반응형

마지막 단계인 공동 인증서 로그인 하기 

 

API URL : https://www.hometax.go.kr/pubcLogin.do?domain=hometax.go.kr&mainSys=Y

이전 페이지 들에서 가져왔던 값들을 header와 params에 세팅해주고 POST 메서드로 통신을 한 후 Response를 받아오기

이 Response에는 전자 세금 계산서 조회에 필요한 TXPPsessionID가 들어있음

 

1. header 및 params 세팅

앞서 설명한 내용대로 쿠키와 파라미터를 세팅해주기

String url = "https://www.hometax.go.kr/pubcLogin.do?domain=hometax.go.kr&mainSys=Y";

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.set(HttpHeaders.COOKIE, cookies);

MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("cert", cert);
params.add("logSgnt", logSgnt);
params.add("pkcLgnClCd", "04");		// 04 하드 코딩
params.add("pkcLoginYnImpv", "Y");	// Y 하드 코딩
params.add("randomEnc", randomEnc);

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> loginResponse = restTemplate.exchange(url, HttpMethod.POST, request, String.class);

 

이때, 통신에 성공했다면 200 OK에 아래와 같은 body를 반환함

<200 OK OK,nts_loginSystemCallback('TXPP', { 'code' : 'S', 'errCode' : null, 'errMsg' : decodeURIComponent('').replace(/\+/g,' ').replace(/\\n/g,'\n'), 'lgnRsltCd' : '01', 'pswdErrNbcnt' : null, 'tin' : null, 'secCardId' : null});>

주의 깊게 봐야 하는 부분은 decodeURIComponent('') 이 부분임

만약 이 부분에 빈 값('')이 아닌 다른 인코딩 된 데이터가 들어가 있다면 오류가 있는 상태임

URL decode 사이트를 통해 오류 확인 필요 → https://www.urldecoder.org/

 

 

2. response cookie 에서 TXPPsessionID 값 가져오기

값을 가져오는 방식이나 1번의 api 통신 방식은 자신에게 편한 방식으로 하면 됨

List<String> responseCookies = loginResponse.getHeaders().get(HttpHeaders.SET_COOKIE);
    if (responseCookies != null) {
        for (String cookie : responseCookies) {
            if (cookie.startsWith("TXPPsessionID")) {
                txppSessionId = cookie.split(";")[0].split("=")[1];
            break;
        }
    }
}

 

공동 인증서 로그인 후 TXPPsessionID 가져오기 완료 👊

반응형
복사했습니다!