튜토리얼
PowerBuilder 개발환경에서 팝빌 SDK를 추가하여 현금영수증 즉시 발행 (RegistIssue) 함수를 구현하는 예시입니다.
1. POPBiLL SDK 추가
① 팝빌 연동자료실에서 PowerBuilder SDK 예제코드 다운로드 후 압축을 해제합니다.
② 압축해제한 SDK 예제코드에서 linkhub.pbl, popbill.pbl 파일을 기존 프로젝트 폴더로 복사하고 Library List에 추가합니다.

2. POPBiLL SDK 설정
Window 폼의 Declare Instance Variables 탭에 인증정보와 클래스를 선언하고 open() 함수에 클래스 초기화 코드를 추가합니다.
Declare Instance Variables 탭
// 링크아이디, 연동신청시 발급받은 값으로 변경
string in_linkid = "TESTER"
// 비밀키, 연동신청시 발급받은 값으로 변경
string in_secretkey = "SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I="
cashbillservice in_cashbillservice
Window Form Open() 함수
in_cashbillservice = create cashbillservice
// 링크아이디
in_cashbillservice.linkid = in_linkid
// 비밀키
in_cashbillservice.secretkey = in_secretkey
// 연동환경 설정값, true-개발용, false-상업용
in_cashbillservice.setIstest(true)
// 인증토큰 IP제한기능 사용여부, true-사용, false-미사용, 기본값(true)
in_cashbillservice.setIPRestrictOnOff(true)
// 로컬시스템 시간 사용여부 true-사용, false-미사용, 기본값(false)
in_cashbillservice.setUseLocalTimeYN(false)
3. RegistIssue 기능 구현
Form에 버튼을 생성하고 버튼의 Click Event 코드에 현금영수증 즉시 발행 (RegistIssue) 기능을 추가합니다.
cashbill l_cashbill
response l_response
string mgtKey, corpNum
// 팝빌회원 사업자번호
corpNum = "1234567890"
// 현금영수증 문서번호
mgtKey = "20220101-021"
// [필수] 문서번호, 가맹점별 고유번호 할당 1~24자리 영문, 숫자조합으로 중복없이 구성
l_cashbill.mgtkey = mgtKey
// [취소거래 발행시 필수] 원본 현금영수증 국세청승인번호
l_cashbill.orgConfirmNum = ""
// [취소거래 발행시 필수] 원본 현금영수증 거래일자
l_cashbill.orgTradeDate = ""
// [필수] 문서형태, {승인거래, 취소거래} 중 기재
l_cashbill.tradetype = "승인거래"
// [필수] 거래구분, {소득공제용, 지출증빙용} 중 기재
l_cashbill.tradeUsage = "소득공제용"
// 거래유형, {일반, 도서공연, 대중교통} 중 기재
l_cashbill.tradeOpt = "일반"
// [필수] 과세형태, {과세, 비과세} 중 기재
l_cashbill.taxationType = "과세"
// [필수] 거래금액, (공급가액 + 세액 + 봉사료)
l_cashbill.totalAmount = "11000"
// [필수] 공급가액, 숫자만 가능
l_cashbill.supplyCost = "10000"
// [필수] 부가세, 숫자만 가능
l_cashbill.tax = "1000"
// [필수] 봉사료, 숫자만 가능
l_cashbill.serviceFee = "0"
// [필수] 가맹점 사업자번호
l_cashbill.franchiseCorpNum = "1234567890"
// 가맹점 종사업장 식별번호
l_cashbill.franchiseTaxRegID = ""
// 가맹점 상호
l_cashbill.franchiseCorpName = "가맹점 상호"
// 가맹점 대표자 성명
l_cashbill.franchiseCEOName = "가맹점 대표자"
// 가맹점 주소
l_cashbill.franchiseAddr = "가맹점 주소"
// 가맹점 전화번호
l_cashbill.franchiseTEL = "070-1234-1234"
// [필수] 식별번호
// 거래구분(tradeUsage) - '소득공제용' 인 경우
// - 주민등록/휴대폰/카드번호 기재 가능
// 거래구분(tradeUsage) - '지출증빙용' 인 경우
// - 사업자번호/주민등록/휴대폰/카드번호 기재 가능
l_cashbill.identityNum = "0101112222"
// 구매자명
l_cashbill.customerName = "고객명"
// 주문상품명
l_cashbill.itemName = "상품명"
// 주문번호
l_cashbill.orderNumber = "주문번호"
// 구매자 이메일
// 팝빌 개발환경에서 테스트하는 경우에도 안내 메일이 전송되므로,
// 실제 거래처의 메일주소가 기재되지 않도록 주의
l_cashbill.email = "test@test.com"
// 구매자 휴대폰
l_cashbill.hp = "010-111-222"
// 메모
string memo = "즉시 발행 메모"
try
l_response = in_cashbillservice.registissue(corpNum, l_cashbill, memo)
messagebox("현금영수증 즉시 발행", "응답코드 : " + String(l_response.code) + "~n응답메시지 : " + l_response.message + "~n국세청 승인번호 : " + l_response.confirmnum + "~n거래일자 : " + l_response.tradedate)
catch(popbillexception pe)
messagebox("현금영수증 즉시 발행", "응답코드 : " + String(pe.getcode()) + "~n응답메시지 : " + pe.getmessage())
end try
4. 결과 확인
함수 호출이 정상적으로 처리된 경우 Response가 "성공"으로 반환되며, 실패일 경우 PopbillException으로 오류코드("-"로 시작하는 8자리 숫자값)와 오류메시지가 반환됩니다. [오류코드] 바로가기