안녕하세요. 고객의 가치를 연결하는 비즈니스 파트너 링크허브 입니다.
본 포스팅에서는 PHP 개발환경에서 고객사들이 팝빌 전자세금계산서 API SDK 를 쉽고 빠르게 이용할 수 있도록, 예시를 이용하여 연동 설정 방법을 안내드리겠습니다. 먼저, SDK를 추가한 후 "즉시발행(RegistIssue) API"를 구현하는 순서로 진행하겠습니다.
팝빌 SDK는 PHP v4.x 이상에서 모두 이용이 가능하며 , API 호출과 응답의 메시지 인코딩은 "UTF-8 Character-Set"을 지원합니다.
"팝빌은 링크허브에서 자체 개발하고 직접 운영하는 전자세금계산서 서비스 Brand Name 입니다."
아래 설명하는 예시는 [ CentOS v6.8 | Apache v2.2.15 | PHP v5.5.38 ] 기준으로 작성되어 있어, 이용 중이신 개발환경과 차이가 있을 수 있는 점 감안해 주시기 바랍니다.
1. 서버환경 구성
전자세금계산서 API 연동을 위해서 통신환경 구성을 위한 curl, openssl 두 가지의 PHP 모듈이 반드시 추가되어 있어야 합니다.
▶ curl - 통신 프로토콜을 이용하여 데이터를 전송하기 위한 라이브러리와 커맨드 라인 도구를 제공
▶ openssl - 보안 프로토콜인 TLS 통신을 지원하며 암호화 기능 등 다수의 유틸리티 제공
다음 커맨드를 사용하여 서버에 설치되어 있는 PHP 모듈을 확인합니다.
# php -m
[php modules]
bz2
curl
date
ftp
json
openssl
session
standard
tokenizer
[Zend Modules]
PHP에 기본으로 openssl 모듈이 설치되지만 curl 모듈이 설치되어 있지 않은 경우, 다음을 참고하여 curl 모듈을 추가합니다.
[참고] PHP-curl 모듈 추가 과정 https://linkhub.tistory.com/145
2. 전자세금계산서 SDK 추가
① 링크허브 연동자료실에서 PHP 전자세금계산서 SDK를 다운로드 후 압축을 해제합니다.
[참고] PHP 전자세금계산서 SDK 다운로드 - https://www.linkhub.co.kr/Downloads/Taxinvoice/51?PageNum=1
② SDK 내에 포함되어 있는 "Popbill" 폴더를 복사합니다.
③ 웹서버 기본 디렉토리에 "/var/www/html/common.php" 환경설정을 위한 파일을 신규로 생성하고 인증정보 (LinkID, SecretKey) , 통신방식, 클래스 (TaxinvoiceService), 연동환경 설정값(IsTest) 를 선언합니다.
<?php
require_once './Popbill/PopbillTaxinvoice.php';
// 링크허브에서 발급받은 인증정보 링크아이디(LinkID), 비밀키(SecretKey)를 입력합니다.
// 인증정보는 파트너 식별 및 API 통신전문 변조를 방지하는 기능을 수행하므로
// 외부에 유출되지 않도록 각별히 유의하여 관리해 주시기 바랍니다.
$LinkID = 'OOOOOOO';
$SecretKey = 'OOOOOOOOOOOOOOOOO';
// 통신방식 설정. 기본값 - CURL
define('LINKHUB_COMM_MODE','CURL');
// 세금계산서 클래스 생성
$TaxinvoiceService = new TaxinvoiceService($LinkID, $SecretKey);
// true - 개발용(테스트베드), false - 상업용(실서비스)
$TaxinvoiceService->IsTest(true);
?>
▶ 링크허브에서 발급받은 고객사 인증정보로 링크아이디(LinkID)와 비밀키(SecretKey) 값을 변경하시기 바랍니다.
Windows에서 Apache v2.2.x를 사용하는 경우, Apache와 curl에 각각 포함하고 있는 openssl 모듈 충돌로 인해 통신이 정상적이지 않을 수 있습니다. 이러한 경우 통신방식을 CURL에서 STREAM으로 변경하여야 하며, STREAM 모드에서는 php.ini의 allow_url_fopen항목의 값을 On으로 설정해야 합니다.
3. API 구현 ① RegistIssue API를 호출하는 "/var/www/html/RegistIssue.php" 파일을 생성하고, 세금계산서를 발행하기 위해 RegistIssue API를 작성합니다.
RegistIssue API 열기 RegistIssue API 닫기
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>전자세금계산서 API 연동 가이드</title>
</head>
<?php
include 'common.php';
// 세금계산서 객체 생성
$Taxinvoice = new Taxinvoice();
// 팝빌 연동회원 사업자번호
$testCorpNum = '1234567890';
// 팝빌 연동회원 아이디
$testUserID = 'testkorea';
/************************************************************
* 세금계산서 정보
************************************************************/
// 작성일자
$Taxinvoice->writeDate = '20181011';
// 발행형태
$Taxinvoice->issueType = '정발행';
// 과금방향
$Taxinvoice->chargeDirection = '정과금';
// 영수 or 청구
$Taxinvoice->purposeType = '영수';
// 발행시점
$Taxinvoice->issueTiming = '직접발행';
// 과세형태
$Taxinvoice->taxType = '과세';
// 공급가액 합계
$Taxinvoice->supplyCostTotal = '200000';
// 세액 합계
$Taxinvoice->taxTotal = '20000';
// 합계금액
$Taxinvoice->totalAmount = '220000';
// 기재상 '외상'항목
$Taxinvoice->remark1 = '비고1';
// 즉시발행 메모
$memo = '즉시발행 메모';
/************************************************************
* 공급자 정보
************************************************************/
// 공급자 사업자번호
$Taxinvoice->invoicerCorpNum = '1234567890';
// 공급자 상호
$Taxinvoice->invoicerCorpName = '공급자상호';
// 공급자 문서관리번호
$Taxinvoice->invoicerMgtKey = '20181011-11';
// 공급자 대표자성명
$Taxinvoice->invoicerCEOName = '대표자성명';
// 공급자 주소
$Taxinvoice->invoicerAddr = '공급자 주소';
// 공급자 종목
$Taxinvoice->invoicerBizClass = '공급자 종목';
// 공급자 업태
$Taxinvoice->invoicerBizType = '공급자 업태';
// 공급자 담당자 성명
$Taxinvoice->invoicerContactName = '공급자 담당자명';
// 공급자 담당자 메일주소
$Taxinvoice->invoicerEmail = 'test@test.com';
// 공급받는자 담당자에게 알림문자 전송여부
$Taxinvoice->invoicerSMSSendYN = false;
/************************************************************
* 공급받는자 정보
************************************************************/
// 공급받는자 구분
$Taxinvoice->invoiceeType = '사업자';
// 공급받는자 사업자번호
$Taxinvoice->invoiceeCorpNum = '8888888888';
// 공급자 상호
$Taxinvoice->invoiceeCorpName = '공급받는자 상호';
// 공급받는자 대표자성명
$Taxinvoice->invoiceeCEOName = '대표자성명';
// 공급받는자 주소
$Taxinvoice->invoiceeAddr = '공급받는자 주소';
// 공급받는자 업태
$Taxinvoice->invoiceeBizType = '공급받는자 업태';
// 공급받는자 종목
$Taxinvoice->invoiceeBizClass = '공급받는자 종목';
// 공급받는자 담당자 성명
$Taxinvoice->invoiceeContactName1 = '공급받는자 담당자성명';
// 공급받는자 담당자 메일주소
$Taxinvoice->invoiceeEmail1 = 'test@test.com';
try {
$result = $TaxinvoiceService->RegistIssue($testCorpNum, $Taxinvoice, $testUserID,
false, false, $memo, '', '');
$code = $result->code;
$message = $result->message;
}
catch(PopbillException $pe) {
$code = $pe->getCode();
$message = $pe->getMessage();
}
?>
<body>
Response.code : <?php echo $code ?></p>
Response.message : <?php echo $message ?></p>
</body>
</html>
RegistIssue API 닫기
※ 전자세금계산서 발행(전자서명)을 위해서는 사전에 공급자의 인증서가 팝빌 개발용(https://test.popbill.com) 사이트에 등록되어 있어야 합니다.
② 전자세금계산서 발행 처리결과를 응답 메시지를 통해 확인합니다.
③ 발행된 전자세금계산서는 팝빌 개발용(test.popbill.com) 사이트에서 확인할 수 있습니다.
[참고] 팝빌 연동 개발을 위한 테스트베드(개발용) 안내 - https://linkhub.tistory.com/91
팝빌에서 제공하는 다양한 API는 동일한 컨셉으로 개발되어 있어, 하나의 서비스를 이용한 경험이 있으면 다른 서비스들도 유사한 방법으로 빠르게 연동이 가능하니 많은 이용 부탁드립니다.
지금까지 PHP 개발환경에서 전자세금계산서 API를 연동하는 방법에 대해 안내드렸습니다. 내용에 대한 추가적인 문의가 있으면 기술지원센터로 편하게 연락주시기 바랍니다.
고객사의 편의를 위하여 이메일, 전화 등 다양한 채널을 열어놓고 있으니 언제든지 연락 주시기 바랍니다.
기술지원센터 / T. 1600-9854 / E. code@linkhub.co.kr