[ASP] 팝빌 전자명세서 SDK 튜토리얼
Classic ASP 개발환경에서 팝빌 ASP SDK를 적용하여 전자명세서 즉시발행(RegistIssue) 함수를 구현하는 예시입니다.
1. Popbill SDK 추가 
① 팝빌 연동자료실에서 ASP SDK 예제코드 다운로드 후 압축을 해제합니다.
② 압축해제한 SDK 예제코드에서 Popbill/ 폴더 전체를 웹사이트 폴더 Root Directory에 복사합니다.
③ 전자명세서 서비스 연동환경 설정을 위해 프로젝트 Root Directory에 common.asp 파일을 생성하고 아래의 코드를 참고하여 인증정보를 설정합니다.
연동신청시 발급받은 인증정보로 링크아이디(LinkID)와 비밀키(SecretKey) 값을 변경하시기 바랍니다.
<!--#include virtual="/Popbill/Popbill.asp"-->
<!--#include virtual="/Popbill/StatementService.asp"-->
<%
' 링크허브에서 발급받은 인증정보 링크아이디(LinkID), 비밀키(SecretKey) 입력
LinkID = "LINKID"
SecretKey = "SwWxqU+0TExEXy/9TVjKPExI2VTUMMSLZtJf3Ed8q3I="
' 전자명세서 서비스 모듈 생성
set m_StatementService = new StatementService
' 전자명세서 API 서비스 모듈 초기화
m_StatementService.Initialize LinkID, SecretKey
' 연동환경 설정값, True - 개발용(테스트베드), False - 상업용(실서비스)
m_StatementService.IsTest = True
' 인증토큰 IP제한기능 사용여부, 권장(True)
m_StatementService.IPRestrictOnOff = True
' 팝빌 API 서비스 고정 IP 사용여부(GA), Ture-사용, False-미사용, 기본값(False)
m_StatementService.UseStaticIP = False
%>
2. 전자명세서 즉시발행(RegistIssue) 함수 구현
① 프로젝트에 함수 호출을 처리하는 "registIssue.asp" 파일을 생성하고, 아래의 코드를 참조하여 코드를 추가합니다.
<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 = "20190830-021"
' 메모
memo = "즉시발행 메모"
'전자명세서 객체 생성
Set newStatement = New Statement
'[필수] 기재상 작성일자, 날짜형식(yyyyMMdd)
newStatement.writeDate = "20190830"
'[필수] {영수, 청구} 중 기재
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 = "20190830" '거래일자 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 = "20190830" '거래일자 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
'**************************************************************
' 전자명세서 추가속성
' - 추가속성에 관한 자세한 사항은 "[전자명세서 API 연동매뉴얼] >
' 5.2. 기본양식 추가속성 테이블"을 참조하시기 바랍니다.
'**************************************************************
newStatement.propertyBag.Set "Balance", "150000"
newStatement.propertyBag.Set "CBalance", "100000"
On Error Resume Next
Set result = m_StatementService.RegistIssue(testCorpNum, newStatement, memo, userID)
If Err.Number <> 0 Then
code = Err.Number
message = Err.Description
Err.Clears
Else
code = result.code
message = result.message
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>
</ul>
</fieldset>
</div>
</body>
</html>
② 웹브라우저 페이지를 호출하여 함수호출 결과를 확인합니다.
