사업자 회원가입 시 사업자등록정보를 인증하는 단계를 구현하기 위해 공공데이터 포털에서 제공하는 사업자등록정보 진위 확인 및 상태조회 서비스를 활용하였습니다.
우선 Open API 서비스를 사용하기 위해서 공공데이터포털 사이트에서 회원가입 후 로그인을 합니다.
데이터 찾기에서 국세청_사업자등록정보 진위확인 및 상태조회 서비스
를 검색합니다.
하단에 보이는 오픈 API 내용을 클릭하고 활용신청을 합니다.
마이페이지에서 데이터활용 > Open API > 인증키 발급현황에서 발급된 개인키를 확인할 수 있는데, api 요청시 필요한 정보이므로 저장해둡니다.
API 요청을 할때 베이스 url 에서 serviceKey=
옆에 개인이 발급받은 인증키를 넣어주어야 요청이 가능합니다.
공공데이터포털에서 발급받은 개인 API 인증키는 노출의 위험이 있기 때문에 env 파일에 추가해서 사용해줍니다.
이때 변수 이름을 REACT_APP
으로 시작해야 값을 가져와서 사용할 수 있습니다.
env 파일에 있는 인증키를 가져와서 적용할 때 process.env.REACT_APP_변수명
이런식으로 가져와서 사용 가능합니다.
적용을 해준 후에는 npm run start로 재시작 해주어야 정상적으로 API 요청이 작동하게 됩니다.
API 호출 방식은 진위확인을 할 수 있는 validate
요청과 상태를 확인할 수 있는 status
요청 두가지가 있습니다.
두가지 요청은 body에 필요한 필수 항목이 다르므로 꼭 확인하여 정확하게 값을 넣어 api 호출을 하면 response 값을 얻을 수 있습니다.
아래의 코드는 사업자등록정보의 상태조회가 가능한 status
요청을 위한 함수입니다. post로 요청을 하고 req에 사업자등록번호를 넘겨줍니다.
export const handleCheckRegistrationNumber = async (
req: string
): Promise<string> => {
const url: string = `https://api.odcloud.kr/api/nts-businessman/v1/status?serviceKey=${process.env.REACT_APP_BUSINESS_API_KEY}`;
const { data } = await axios.post(url, {
b_no: [req],
});
// 📌 01 값이 반환되면 계속사업자 02 값은 휴업자 03 값은 폐업자로 확인이 가능합니다.
return data.data[0].b_stt_cd;
};
다음으로는 인증하기 버튼을 클릭 했을때 동작할 이벤트 함수를 작성해 주고 계속사업자를 확인할 수 있는 기능을 구현할 수 있습니다.
const handlerCheckSchoolNum = useCallback(async () => {
try {
const data = await handleCheckRegistrationNumber(schoolNum);
if (data === "01") {
setConfirmedSchoolNum(true); // 영업중으로 확인되는 사업자
} else {
setConfirmedSchoolNum(false); // 휴업, 폐업으로 확인되는 사업자
}
} catch (error) {
console.log(error);
}
}, [schoolNum, setSchoolNum, confirmedSchoolNum, setConfirmedSchoolNum]);