안녕하세요. 고객의 가치를 연결하는 비즈니스 파트너 링크허브 입니다.
본 포스팅에서는 JAVA - JSP 개발환경에서 고객사들이 팝빌 전자세금계산서 API SDK 를 쉽고 빠르게 이용할 수 있도록, 예시를 이용하여 연동 설정 방법을 안내드리겠습니다. 먼저, SDK를 추가한 후 "즉시발행(RegistIssue) API"를 구현하는 순서로 진행하겠습니다.
팝빌 SDK 는 JDK v1.6 이상 개발환경에서 이용 가능하며 , API 호출과 응답의 메시지 인코딩은 "UTF-8 Character-Set"을 지원합니다.
"팝빌은 링크허브에서 자체 개발하고 직접 운영하는 전자세금계산서 서비스 Brand Name 입니다."
아래 설명하는 예시는 [ CentOS 6.8 | Tomcat7 | JDK 1.6 ] 기준으로 작성되어 있어, 이용 중이신 개발환경과 차이가 있을 수 있는 점 감안해 주시기 바랍니다.
1. 전자세금계산서 SDK 추가
① 링크허브 연동자료실에서 JAVA - JSP 전자세금계산서 SDK를 다운로드 후 압축을 해제합니다.
[참고] JAVA - JSP 전자세금계산서 SDK 다운로드 - https://www.linkhub.co.kr/Downloads/Taxinvoice/95?PageNum=1
② SDK내에 포함되어 있는 다음 3개 jar파일을 복사합니다.
③ 웹서버 기본 디렉토리에 "$CATALINA_HOME/webapps/ROOT/common.jsp" 환경설정을 위한 파일을 생성하고 세금계산서 인스턴스, 인증정보 (LinkID, SecretKey) , 연동환경 설정값(IsTest)을 선언합니다.
<%-- 세금계산서 인스턴스 생성 --%>
<jsp:useBean id="taxinvoiceService" scope="application" class="com.popbill.api.taxinvoice.TaxinvoiceServiceImp"/>
<%-- 링크허브에서 발급받은 인증정보 링크아이디(LinkID), 비밀키(SecretKey) 입력 --%>
<jsp:setProperty name="taxinvoiceService" property="linkID" value="TEST ID "/>
<jsp:setProperty name="taxinvoiceService" property="secretKey" value=" SwWxqU+0TExEXy/9TVjKPExI2VTUMMSLZtJf3Ed8q3I= "/>
<%-- 연동환경 설정값, true-개발용(테스트베드), false-상업용(실서비스) --%>
<jsp:setProperty name="taxinvoiceService" property="test" value="true"/>
▶ 링크허브에서 발급받은 고객사 인증정보로 링크아이디(LinkID)와 비밀키(SecretKey) 값을 변경하시기 바랍니다.
2. API 구현 ① RegistIssue API를 호출하는 "$CATALINA_HOME/webapps/ROOT/registIssue.jsp" 파일을 생성하고, 세금계산서를 발행하기 위해 RegistIssue API를 작성합니다.
RegistIssue API 열기 RegistIssue API 닫기
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>전자세금계산서 API 연동 가이드</title>
</head>
<%@ include file="common.jsp" %>
<%@page import="java.util.ArrayList"%>
<%@page import="com.popbill.api.Response"%>
<%@page import="com.popbill.api.PopbillException"%>
<%@page import="com.popbill.api.taxinvoice.Taxinvoice"%>
<%@page import="com.popbill.api.taxinvoice.TaxinvoiceDetail"%>
<%@page import="com.popbill.api.taxinvoice.TaxinvoiceAddContact"%>
<%
// 세금계산서 객체 생성
Taxinvoice taxinvoice = new Taxinvoice();
// 팝빌 연동회원 사업자번호
String testCorpNum = "1234567890";
/***********************************************
* 세금계산서 정보
************************************************/
// 작성일자
taxinvoice.setWriteDate("20180917");
// 발행형태
taxinvoice.setIssueType("정발행");
// 과금방향
taxinvoice.setChargeDirection("정과금");
// 영수 or 청구
taxinvoice.setPurposeType("영수");
// 발행시점
taxinvoice.setIssueTiming("직접발행");
// 필수, 과세형태, {과세, 영세, 면세} 중 기재
taxinvoice.setTaxType("과세");
// 공급가액 합계
taxinvoice.setSupplyCostTotal("200000");
// 세액 합계
taxinvoice.setTaxTotal("20000");
// 합계금액. 공급가액 + 세액
taxinvoice.setTotalAmount("220000");
/***********************************************
* 공급자 정보 ************************************************/
// 공급자 사업자번호
taxinvoice.setInvoicerCorpNum("1234567890");
// 공급자 상호
taxinvoice.setInvoicerCorpName("공급자 상호");
// 공급자 문서관리번호
taxinvoice.setInvoicerMgtKey("20180917-100");
// 공급자 대표자성명
taxinvoice.setInvoicerCEOName("공급자 대표자 성명");
// 공급자 주소
taxinvoice.setInvoicerAddr("공급자 주소");
// 공급자 종목
taxinvoice.setInvoicerBizClass("공급자 종목");
// 공급자 업태
taxinvoice.setInvoicerBizType("공급자 업태");
// 공급자 담당자명
taxinvoice.setInvoicerContactName("공급자 담당자명");
// 공급자 담당자 메일주소
taxinvoice.setInvoicerEmail("test@test.com");
/*********************************************** * 공급받는 정보 ***********************************************/ // 공급받는자 구분
taxinvoice.setInvoiceeType("사업자");
// 공급받는자 사업자번호
taxinvoice.setInvoiceeCorpNum("8888888888");
// 공급받는자 상호
taxinvoice.setInvoiceeCorpName("공급받는자 상호");
// 공급받는자 대표자성명
taxinvoice.setInvoiceeCEOName("공급받는자 대표자 성명");
// 공급받는자 주소
taxinvoice.setInvoiceeAddr("공급받는자 주소");
// 공급받는자 종목
taxinvoice.setInvoiceeBizClass("공급받는자 종목");
// 공급받는자 업태
taxinvoice.setInvoiceeBizType("공급받는자 업태");
// 공급받는자 담당자명
taxinvoice.setInvoiceeContactName1("공급받는자 담당자명");
// 공급받는자 메일주소
taxinvoice.setInvoiceeEmail1("test@test.com");
// 메모
String memo = "즉시발행 메모";
// 지연발행 강제여부
Boolean forceIssue = false;
// 거래명세서 동시작성 여부
Boolean writeSpecification = false;
// 거래명세서 동시작성시 명세서 관리번호
String dealinoiceKey = "";
Long ResultCode;
String ResultMessage;
try {
Response CheckResponse = taxinvoiceService.registIssue(testCorpNum, taxinvoice,
writeSpecification, memo,
forceIssue, dealInvoiceKey);
ResultCode = CheckResponse.getCode();
ResultMessage = CheckResponse.getMessage();
} catch (PopbillException pe) {
ResultCode = pe.getCode();
ResultMessage = pe.getMessage()
}
%>
<body>
Response.code : <%=ResultCode%>
Response.message : <%=ResultMessage%>
</body>
</html>
RegistIssue API 닫기
※ 전자세금계산서 발행(전자서명)을 위해서는 사전에 공급자의 인증서가 팝빌 개발용(https://test.popbill.com) 사이트에 등록되어 있어야 합니다.
[참고] 전자세금계산서 발행을 위한 공인인증서 등록방법 안내 - https://linkhub.tistory.com/95
② 브라우저에서 registIssue.jsp 페이지를 로드하여 RegistIssue API가 정상적으로 처리 되었음을 메시지를 통해 확인합니다.
③ 발행된 전자세금계산서는 팝빌 개발용(test.popbill.com) 사이트에서 확인할 수 있습니다.
[참고] 팝빌 연동 개발을 위한 테스트베드(개발용) 안내 - https://linkhub.tistory.com/91
팝빌에서 제공하는 다양한 API는 동일한 컨셉으로 개발되어 있어, 하나의 서비스를 이용한 경험이 있으면 다른 서비스들도 유사한 방법으로 빠르게 연동이 가능하니 많은 이용 부탁드립니다.
지금까지 JAVA - JSP 개발환경에서 전자세금계산서 API를 연동하는 방법에 대해 안내드렸는데, 내용에 대한 추가적인 문의가 있으면 기술지원센터로 편하게 연락주시기 바랍니다.
고객사의 편의를 위하여 이메일, 전화 등 다양한 채널을 열어놓고 있으니 언제든지 연락 주시기 바랍니다.
기술지원센터 / T. 1600-9854 / E. code@linkhub.co.kr