[PHP] 팝빌 현금영수증 SDK 튜토리얼

PHP 개발환경에서 팝빌 PHP SDK를 적용하여 현금영수증 즉시발행(RegistIssue) 함수를 구현하는 예시입니다.

1. Popbill SDK 추가 팝빌 php SDK 튜토리얼

① 팝빌 연동자료실에서 PHP SDK 예제코드 다운로드 후 압축을 해제합니다.

② 압축해제한 SDK 예제코드에 포함된 Popbill/ 폴더를 웹사이트 Root Directory 경로에 복사합니다.

③ 현금영수증 서비스 연동환경 설정을 위해 프로젝트 Root Directory에 common.php 파일을 생성하고 아래의 코드를 참고하여 인증정보를 설정합니다.

연동신청시 발급받은 인증정보로 링크아이디(LinkID)와 비밀키(SecretKey) 값을 변경이 필요합니다.
Window 계열 OS 환경에서 APM을 통해 개발환경을 구성한 경우 LINKHUB_COMM_MODE 상수의 값을 "STREAM"으로 변경합니다.

<?php
  require_once './Popbill/PopbillCashbill.php';

  // 링크 아이디
  $LinkID = 'TESTER';

  // 발급받은 비밀키. 유출에 주의하시기 바랍니다.
  $SecretKey = 'SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I=';

  // 통신방식 기본은 CURL , curl 사용에 문제가 있을경우 STREAM 사용가능.
  // STREAM 사용시에는 allow_url_fopen = on 으로 설정해야함.
  define('LINKHUB_COMM_MODE','CURL');

  $CashbillService = new CashbillService($LinkID, $SecretKey);

  // 연동환경 설정값, 개발용(true), 상업용(false)
  $CashbillService->IsTest(true);

  // 인증토큰에 대한 IP제한기능 사용여부, 권장(true)
  $CashbillService->IPRestrictOnOff(true);

  // 팝빌 API 서비스 고정 IP 사용여부(GA), 기본값(false)
  $CashbillService->UseStaticIP(false);

  // 로컬서버 시간 사용 여부 true(기본값) - 사용, false(미사용)
  $CashbillService->UseLocalTimeYN(true);
?>

2. 현금영수증 즉시발행(RegistIssue) 함수 구현

① 프로젝트 Root Directory에 함수 호출을 처리하는 "RegistIssue.php" 파일을 생성하고, 아래의 코드를 참조하여 코드를 추가합니다.

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Popbill Cashbill Response</title>
  </head>
<?php
    include 'common.php';

    // 팝빌 회원 사업자번호, '-' 제외 10자리
    $testCorpNum = '1234567890';

    // 팝빌회원 아이디
    $testUserID = 'testkorea';

    // 문서번호, 사업자별로 중복없이 1~24자리 영문, 숫자, '-', '_' 조합으로 구성
    $mgtKey = '20190828-002';

    // 메모
    $memo = '현금영수증 즉시발행 메모';

    // 발행안내메일 제목
    // 미기재시 기본양식으로 전송
    $emailSubject = '';

    // 현금영수증 객체 생성
    $Cashbill = new Cashbill();

    // [필수] 현금영수증 문서번호,
    $Cashbill->mgtKey = $mgtKey;

    // [취소 현금영수증 발행시 필수] 원본 현금영수증 국세청승인번호
    // 국세청승인번호는 GetInfo API의 ConfirmNum 항목으로 확인할 수 있습니다.
    $Cashbill->orgConfirmNum = '';

    // [취소 현금영수증 발행시 필수] 원본 현금영수증 거래일자
    // 현금영수증 거래일자는 GetInfo API의 TradeDate 항목으로 확인할 수 있습니다.
    $Cashbill->orgTradeDate = '';

    // [필수] 문서형태, (승인거래, 취소거래) 중 기재
    $Cashbill->tradeType = '승인거래';

    // [필수] 거래구분, (소득공제용, 지출증빙용) 중 기재
    $Cashbill->tradeUsage = '소득공제용';

    // [필수] 거래유형, (일반, 도서공연, 대중교통) 중 기재
    $Cashbill->tradeOpt = '일반';

    // [필수] 과세형태, (과세, 비과세) 중 기재
    $Cashbill->taxationType = '과세';

    // [필수] 거래금액, ','콤마 불가 숫자만 가능
    $Cashbill->totalAmount = '11000';

    // [필수] 공급가액, ','콤마 불가 숫자만 가능
    $Cashbill->supplyCost = '10000';

    // [필수] 부가세, ','콤마 불가 숫자만 가능
    $Cashbill->tax = '1000';

    // [필수] 봉사료, ','콤마 불가 숫자만 가능
    $Cashbill->serviceFee = '0';

    // [필수] 가맹점 사업자번호
    $Cashbill->franchiseCorpNum = $testCorpNum;

    // 가맹점 상호
    $Cashbill->franchiseCorpName = '발행자 상호';

    // 가맹점 대표자 성명
    $Cashbill->franchiseCEOName = '발행자 대표자명';

    // 가맹점 주소
    $Cashbill->franchiseAddr = '발행자 주소';

    // 가맹점 전화번호
    $Cashbill->franchiseTEL = '070-1234-1234';

    // [필수] 식별번호, 거래구분에 따라 작성
    // 소득공제용 - 주민등록/휴대폰/카드번호 기재가능
    // 지출증빙용 - 사업자번호/주민등록/휴대폰/카드번호 기재가능
    $Cashbill->identityNum = '0101112222';

    // 주문자명
    $Cashbill->customerName = '고객명';

    // 주문상품명
    $Cashbill->itemName = '상품명';

    // 주문주문번호
    $Cashbill->orderNumber = '주문번호';

    // 주문자 이메일
    // 팝빌 개발환경에서 테스트하는 경우에도 안내 메일이 전송되므로,
    // 실제 거래처의 메일주소가 기재되지 않도록 주의
    $Cashbill->email = 'test@test.com';

    // 주문자 휴대폰
    $Cashbill->hp = '010-111-222';

    // 발행시 알림문자 전송여부
    $Cashbill->smssendYN = false;

    try {
        $result = $CashbillService->RegistIssue($testCorpNum, $Cashbill, $memo, $testUserID, $emailSubject);
        $code = $result->code;
        $message = $result->message;
    }
    catch(PopbillException $pe) {
        $code = $pe->getCode();
        $message = $pe->getMessage();
    }
?>
    <body>
      <div id="content">
      <p class="heading1">Response</p>
      <br/>
        <fieldset class="fieldset1">
        <legend>현금영수증 즉시발행</legend>
          <ul>
            <li>Response.code : <?php echo $code ?></li>
            <li>Response.message : <?php echo $message ?></li>
          </ul>
        </fieldset>
      </div>
    </body>
</html>

② 웹브라우저 페이지를 호출하여 함수호출 결과를 확인합니다.

팝빌 PHP SDK 현금영수증 Example

기술지원센터

팝빌 기술지원은 유선, 메일, 원격지원 등 다양한 채널을 통해 제공됩니다.

T. 1600-9854   E. code@linkhub.co.kr

연동문의