PHP

전자세금계산서 API 구현하기 - PHP

weicome 2019. 5. 28. 11:18

2019년 4월 **식품의 재고관리 시스템에 전자세금계산서 국세청 신고기능을 추가했던 작업 기록이다.

시스템은 Window Server 2008 R2에  APM으로 구현되어 있었고 기존 작업자들이 불필요한 코드와 재사용되는 함수들을 잘 정리해둔 덕에 로직을 파악하기에는 어렵지 않았다.

우선 사전미팅 때 클라이언트 실무자들의 요구사항은 

  • 국세청에 즉시신고 기능
  • 면세 계산서 발행 기능
  • 지연발행 세금계산서 발행 가능
  • 세금계산서 인쇄 기능
  • PDF 다운로드 기능
  • 국세청승인번호 확인 기능 
  • 수정세금계산서 신고 기능

위의 기능들을 요구하셨다. 기존에는 바**이라는 업체를 통해 연동하고 있었으나, 시스템이 불안정해서 그런지 신고에 대한 처리가 정상적으로 이뤄지지 않거나, 최근에는 바** 시스템 전체 오류로 인한 사건(?)들이 발생하여 더 이상 믿고 쓸수 없다는 입장이었다.

우선 전자세금계산서의 제도적인 사항들을 몰라서 전자세금계산서를 PHP 로 제공하는 업체들을 물색하였다. 다행히도 PHP는 많은 곳에서 연동이 가능하도록 지원하고 있었다. 

내가 개인적으로 검토했던 사항은 다음과 같다.

  • Restful API 지원여부
  • TLS 통신여부 
  • 응답속도 
  • 모듈화 및 유지보수의 용이성 

위의 사항은 사실 기본적인 내용이지만, SDK를 지원하는 개발회사들이 원칙을 지키지 않고 마구잡이로 API를 지원하는 경우를 많이 보았다. 최소한이 TLS 통신이라 생각하는데 API 서비스를 하면서 HTTP 기본 함수들을 이용해 평문을 주고받는 엽기적인 서비스들도 국내에서는 많이 경험했었다. (무슨 생각으로 돈을 받고 서비스하는지 모르겠지만..)

클라이언트 요구사항과 개인적인 검토사항들을 모두 만족시킬수는 없지만, 그나마 90%정도 충족시키는 업체를 찾아 컨텍하였고 API 테스트를 진행할 수 있었다. 테스트 점검후 최종적으로 선택하게 된 업체는 팝빌(popbill)이라는 API 서비스였다. (사실 이름이 발음하기 힘들어 클라이언트 측에 전화로 설명할때도 몇번을 반복했다..)

PHP 전자세금계산서 관련 코드는 모두 공개되어 있으며, github을 통해 코드가 유지관리 되고 있었다. 라라벨 전용 코드도 제공하고 있었지만, 아쉽게도 클라이언트에서는 PHP 버전을 올리거나, 프레임워크를 적용하는데에는 부정적인 반응들이었기에 굳이 나서서 일을 벌리지 않고 PHP5버전으로 제공되는 코드를 이용하였다. 
https://github.com/linkhub-sdk/popbill.sdk.example.php5

아래 코드는 예제로 제공되는 세금계산서 신고 기능관련 코드이다.

 

코드가 PHP 스타일 가이드나, 코드컨벤션을 명확하게 지켜서 깔끔하다고 평가하긴 어렵지만, 비교적 주석과 문서들을 통해 설명이 거의 대부분 문서화 되어 있어서 특별히 어려운점은 없었다. 업무를 담당하는 실무자 분들 또한 가능한 기능들이 다 제공되고 있었기 기존의 시스템을 변경하는데 큰 지장은 없을 것 같다고 피드백 해주었고, 요구사항에 대한 기능구현은 일주일정도 투입하여 완료되었다.

소스코드 외에도 관련된 블로그 자료나 매뉴얼도 공개되어 있다. 세금계산서 기능을 PHP 시스템에 추가해야하는 검토단계에서 한번쯤 살펴보는게 나쁘지 않을 것 같아 추천한다.

https://www.linkhub.co.kr/Downloads/Taxinvoice