POPBill Developers
가이드

튜토리얼

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자리 숫자값 오류코드와 오류메시지 반환 [오류코드]