튜토리얼
ASP 개발환경에서 팝빌 SDK를 추가하여 전자명세서 즉시 발행 (RegistIssue) 함수를 구현하는 예시입니다.
1. POPBiLL SDK 추가 및 설정
① 팝빌 연동자료실에서 ASP SDK 예제코드 다운로드 후 압축을 해제합니다.
② 압축해제한 SDK 예제코드에 포함된 Popbill/ 폴더를 웹사이트 Root Directory 경로에 복사합니다.
③ 전자명세서 서비스 연동환경 설정을 위해 프로젝트 Root Directory에 common.asp 파일을 생성하고 아래의 코드를 참고하여 API Key 를 설정합니다.
<!--#include virtual="/Popbill/Popbill.asp"-->
<!--#include virtual="/Popbill/StatementService.asp"-->
<%
' 링크아이디
LinkID = "LINKID"
' 비밀키
SecretKey = "SwWxqU+0TExEXy/9TVjKPExI2VTUMMSLZtJf3Ed8q3I="
' 전자명세서 서비스 객체 선언
set m_StatementService = new StatementService
' 전자명세서 서비스 객체 초기화
m_StatementService.Initialize LinkID, SecretKey
' 연동환경 설정, True-테스트, False-운영(Production), (기본값:False)
m_StatementService.IsTest = True
' 인증토큰 IP 검증 설정, True-사용, False-미사용, (기본값:True)
m_StatementService.IPRestrictOnOff = True
' 통신 IP 고정, True-사용, False-미사용, (기본값:False)
m_StatementService.UseStaticIP = False
' 로컬시스템 시간 사용여부, True-사용, False-미사용, (기본값:True)
m_StatementService.UseLocalTimeYN = True
%>
2. RegistIssue 기능 구현
프로젝트에 함수 호출을 처리하는 파일을 생성하고, 아래의 코드를 참조하여 코드를 추가합니다.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>Popbill ASP Test.</title>
</head>
<!--#include file="common.asp"-->
<%
' 팝빌회원 사업자번호
testCorpNum = "1234567890"
' 팝빌 회원 아이디
userID = "testkorea"
' 문서번호, 1~24자리 숫자, 영문, '-', '_' 조합으로 사업자별로 중복되지 않도록 구성
mgtKey = "20211201-021"
' 메모
memo = "즉시 발행 메모"
'전자명세서 객체 생성
Set newStatement = New Statement
'[필수] 기재상 작성일자, 날짜형식(yyyyMMdd)
newStatement.writeDate = "20211201"
'[필수] {영수, 청구 ,없음} 중 기재
newStatement.purposeType = "영수"
'[필수] 과세형태, {과세, 영세, 면세} 중 기재
newStatement.taxType = "과세"
'맞춤양식코드, 공백처리시 기본양식으로 작성
newStatement.formCode = ""
'[필수] 명세서 종류코드 - 121(거래명세서), 122(청구서), 123(견적서), 124(발주서), 125(입금표), 126(영수증)
newStatement.itemCode = "121"
'[필수] 문서번호, 숫자, 영문, '-', '_' 조합 (최대24자리)으로 사업자별로 중복되지 않도록 구성
newStatement.mgtKey = mgtKey
'**************************************************************
' 발신자 정보
'**************************************************************
'발신자 사업자번호, '-' 제외 10자리
newStatement.senderCorpNum = testCorpNum
'발신자 종사업장 식별번호, 필요시 기재, 형식은 숫자 4자리
newStatement.senderTaxRegID = ""
'발신자 상호
newStatement.senderCorpName = "발신자 상호"
'발신자 대표자성명
newStatement.senderCEOName = "발신자"" 대표자 성명"
'발신자 주소
newStatement.senderAddr = "발신자 주소"
'발신자 종목
newStatement.senderBizClass = "발신자 종목"
'발신자 업태
newStatement.senderBizType = "발신자 업태,업태2"
'발신자 담당자 성명
newStatement.senderContactName = "발신자 담당자명"
'발신자 메일주소
newStatement.senderEmail = "test@test.com"
'발신자 연락처
newStatement.senderTEL = "070-7070-0707"
'발신자 휴대폰번호
newStatement.senderHP = "010-000-2222"
'**************************************************************
' 수신자 정보
'**************************************************************
'수신자 사업자번호, '-' 제외 10자리
newStatement.receiverCorpNum = "8888888888"
'수신자 상호
newStatement.receiverCorpName = "수신자 상호"
'수신자 대표자 성명
newStatement.receiverCEOName = "수신자 대표자 성명"
'수신자 주소
newStatement.receiverAddr = "수신자 주소"
'수신자 종목
newStatement.receiverBizClass = "수신자 종목"
'수신자 업태
newStatement.receiverBizType = "수신자 업태"
'수신자 담당자명
newStatement.receiverContactName = "수신자 담당자명"
'수신자 메일주소
'팝빌 개발환경에서 테스트하는 경우에도 안내 메일이 전송되므로,
'실제 거래처의 메일주소가 기재되지 않도록 주의
newStatement.receiverEmail = "test@receiver.com"
'수신자 연락처
newStatement.receiverTEL = "070-4304-2991"
'수신자 휴대폰번호
newStatement.receiverHP = "010-111-222"
'**************************************************************
' 전자명세서 기재사항
'**************************************************************
'[필수] 공급가액 합계
newStatement.supplyCostTotal = "100000"
'[필수] 세액 합계
newStatement.taxTotal = "10000"
'[필수] 합계금액, 공급가액 합계 + 세액 합계
newStatement.totalAmount = "110000"
'기재 상 일련번호 항목
newStatement.serialNum = "123"
'기재 상 비고 항목
newStatement.remark1 = "비고1"
newStatement.remark2 = "비고2"
newStatement.remark3 = "비고3"
'사업자등록증 이미지 첨부여부
newStatement.businessLicenseYN = False
'통장사본 이미지 첨부여부
newStatement.bankBookYN = False
'발행시 알림문자 전송여부
newStatement.smssendYN = True
'**************************************************************
' 전자명세서 상세(품목)
'**************************************************************
Set newDetail = New StatementDetail
newDetail.serialNum = "1" '일련번호 1부터 순차 기재
newDetail.purchaseDT = "20211201" '거래일자 yyyyMMdd
newDetail.itemName = "품명"
newDetail.spec = "규격"
newDetail.unit = "단위"
newDetail.qty = "1" '수량 ' 소숫점 2자리까지 문자열로 기재가능
newDetail.unitCost = "100000" ' 소숫점 2자리까지 문자열로 기재가능
newDetail.supplyCost = "100000"
newDetail.tax = "10000"
newDetail.remark = "비고"
newDetail.spare1 = "spare1"
newDetail.spare2 = "spare2"
newDetail.spare3 = "spare3"
newDetail.spare4 = "spare4"
newDetail.spare5 = "spare5"
newStatement.AddDetail newDetail
Set newDetail = New StatementDetail
newDetail.serialNum = "2" '일련번호 1부터 순차 기재
newDetail.purchaseDT = "20211201" '거래일자 yyyyMMdd
newDetail.itemName = "품명"
newDetail.spec = "규격"
newDetail.unit = "단위"
newDetail.qty = "1" '수량 ' 소숫점 2자리까지 문자열로 기재가능
newDetail.unitCost = "100000" ' 소숫점 2자리까지 문자열로 기재가능
newDetail.supplyCost = "100000"
newDetail.tax = "10000"
newDetail.remark = "비고"
newDetail.spare1 = "spare1"
newDetail.spare2 = "spare2"
newDetail.spare3 = "spare3"
newDetail.spare4 = "spare4"
newDetail.spare5 = "spare5"
newStatement.AddDetail newDetail
'**************************************************************
' 전자명세서 추가속성
'**************************************************************
newStatement.propertyBag.Set "Balance", "150000"
newStatement.propertyBag.Set "CBalance", "100000"
'발행 안내메일 제목
emailSubject = "발행 안내메일 제목"
On Error Resume Next
Set result = m_StatementService.RegistIssue(testCorpNum, newStatement, memo, userID, emailSubject)
If Err.Number <> 0 Then
code = Err.Number
message = Err.Description
Err.Clears
Else
code = result.code
message = result.message
invoiceNum = result.invoiceNum
End If
On Error GoTo 0
%>
<body>
<div id="content">
<p class="heading1">Response</p>
<br/>
<fieldset class="fieldset1">
<legend>전자명세서 즉시 발행</legend>
<ul>
<li>Response.code : <%=code%> </li>
<li>Response.message: <%=message%> </li>
<% If invoiceNum <> "" Then %>
<li>Response.invoiceNum : <%=invoiceNum%> </li>
<% End If %>
</ul>
</fieldset>
</div>
</body>
</html>
3. 결과 확인
함수 호출 반환 결과는 아래와 같습니다.
- 성공 : Response code 로 숫자 1 반환
- 실패 : PopbillException 으로 음의 정수 8자리 숫자값 오류코드와 오류메시지 반환 [오류코드]