본문으로 바로가기
링크허브 공식블로그

연동이 쉬워진다

링크허브 공식블로그

가치를 연결하다/튜토리얼

[Python - Django] 팝빌 전자세금계산서 API 연동 가이드

안녕하세요. 고객의 가치를 연결하는 비즈니스 파트너 링크허브 입니다.


본 포스팅에서는 Python - Django Framework 개발환경에서 고객사들이 팝빌 전자세금계산서 API SDK를 쉽고 빠르게 이용할 수 있도록, 예시를 통하여 연동 설정 방법을 안내드리겠습니다. 신규 프로젝트 생성과 SDK 추가 후, "즉시발행(RegisIssue) API"를 구현하는 순서로 진행하겠습니다.


팝빌 SDK는 Python V2.6 이상 모든 개발환경을 지원하며, 통신을 위한 별도 프로그램 설치가 필요하지 않습니다. 


"팝빌은 링크허브에서 자체 개발하고 직접 운영하는 전자세금계산서 서비스 Brand Name 입니다."



다음 개발환경은 [ Python V2.7 | Django V1.11 ] 기준으로 작성되어 있어, 이용 중인 개발환경과 차이가 있을 수 있는 점 감안해 주시기 바랍니다.


1. 프로젝트 생성


Django 프로젝트를 자동으로 구성해주는 django-admin 스크립트를 통해 'Tutorial' 프로젝트를 생성 합니다.


$ django-admin startproject Tutorial


startproject 명령으로 Tutorial 프로젝트가 생성 되었습니다.

Tutorial /

manage.py

Tutorial / 

__init__.py

setting.py

urls.py

wsgi.py



2. 전자세금계산서 SDK 추가


① SDK를 이용하기 위해서는 팝빌 라이브러리 추가를 위한 Python 패키지 설치가 필요합니다.


$ pip install popbill



② Tutorial/settings.py 파일에 링크허브 인증정보인 링크아이디와 비밀키를 설정합니다.


# -*- coding: utf-8 -*-
import os
import sys
imp.reload(sys)

try:
    sys.setdefaultencoding('UTF8')
except Exception as E:
    pass

# 링크허브에서 발급받은 링크아이디, 비밀키
LinkID = "LINKID"
SecretKey = "SwWxqU+0TExEXy/9TVjKPExI2VTUMMSLZtJf3Ed8q3I="

# 연동환경 설정값, 개발용(True), 상업용(False)
IsTest = True


...
..
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Taxinvoice',
]



▶ 링크허브에서 발급받은 고객사 인증정보로 
링크아이디(LinkID)와 비밀키(SecretKey) 값을 변경하시기 바랍니다.



③ 전자세금계산서 앱(app) 만들기

 - app을 생성하기 위해 manage.py 가 존재하는 디렉토리에서 다음의 명령을 입력합니다.


$ python manage.py startapp Taxinvoice


startapp 명령으로 Taxinvoice 앱이 생성 되었습니다.

Taxinvoice /

__init__.py

admin.py

apps.py

migrations/

__init__.py

models.py

tests.py

apps.py


 

④ view를 호출하기 위해 Taxinvoice 디렉토리에서 urls.py라는 파일을 생성 합니다. 


from django.conf.urls import url
from . import views

urlpatterns = [
   
]



⑤ 최상위 URLconf(Tutorials/urls.py)에서 Taxinvoice.urls 모듈을 바라보게 아래와 같이 수정합니다.


from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^Taxinvoice/', include('Taxinvoice.urls')),
    url(r'^admin/', admin.site.urls),
]



3. API 구현 (View 작성하기)


① Taxinvoice/view.py 파일에 팝빌 API 호출을 위한 세금계산서 서비스 객체를 생성 합니다.


from popbill import TaxinvoiceService

from Tutorial import settings

# config/settings.py 작성한 LinkID, SecretKey를 이용해 TaxinvoiceService 객체 생성
taxinvoiceService = TaxinvoiceService(settings.LinkID, settings.SecretKey)

# 연동환경 설정값, 개발용(True), 상업용(False)
taxinvoiceService.IsTest = settings.IsTest


API 호출 시점에 인증서버로부터 발급받은 토큰을 이용해 사용자를 인증하며, 발급된 토큰은 30분의 유효시간 내에서 재사용이 가능합니다. 만약, 세금계산서 서비스 객체를 지역변수로 선언하거나 API 호출시 마다 모듈을 초기화 시키면 API를 호출할 때마다 토큰을 재발급 받는 과정을 거처야 하기 때문에 성능 저하 및 리소스 낭비의 요인이 될 수 있습니다.



세금계산서를 발행하기 위해 Taxinvoice/view.py 파일에 registIssue API를 작성합니다.


RegistIssue API 열기


※ 전자세금계산서 발행(전자서명)을 위해서는 공급자의 공인인증서가 팝빌 개발용(https://test.popbill.com) 사이트에 등록되어 있어야 합니다.

[참고] 전자세금계산서 발행을 위한 공인인증서 등록방법 안내 - https://linkhub.tistory.com/95



③ registIssue view를 호출하기 위해 Taxinvoice/urls.py 파일에 아래와 같이 수정합니다.


from django.conf.urls import url
from . import views


urlpatterns = [
    url(r'^registIssue$', views.registIssue, name='registIssue'),
]



④ registIssue view 호출에 대한 code, message값을확인 하기 위해 templates/response.html 페이지를 작성합니다.


<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>전자세금계산서 즉시발행</title>
</head>
<body>
    <p>응답코드(code) : {{ code }}</p>
    <p>응답메시지(message) : {{ message }}</p>
</body>
</html>



⑤ 전자세금계산서 발행 처리결과를 응답 메시지를 통해 확인합니다.

  

[참고] "권한정보의 서명이 일치하지 않습니다." 오류메시지 해결방법 안내 - https://linkhub.tistory.com/98



 발행된 전자세금계산서는 팝빌 개발용(test.popbill.com) 사이트에서 확인할 수 있습니다.

[참고] 팝빌 연동 개발을 위한 테스트베드(개발용) 안내 - https://linkhub.tistory.com/91



팝빌에서 제공하는 다양한 API는 동일한 컨셉으로 개발되어 있어, 하나의 서비스를 이용한 경험이 있으면 다른 서비스들도 유사한 방법으로 빠르게 연동이 가능하니 많은 이용 부탁드립니다. 


지금까지 Python - Django Framework 개발환경에서 전자세금계산서 API를 연동하는 방법에 대해 안내해 드렸는데, 내용에 대한 추가적인 문의가 있으면 기술지원센터로 편하게 연락 주시기 바랍니다.




고객사의 편의를 위하여 이메일, 전화 등 다양한 채널을 열어놓고 있으니 언제든지 연락 주시기 바랍니다.

기술지원센터 / T. 1600-9854 / E. code@linkhub.co.kr





댓글을 입력해주세요.

  • Today
  • 116
  • Total
  • 81,251