인증
팝빌 API를 사용하기 위한 공통 정의 사항과 인증 토큰 발급 및 사용 방법을 안내합니다.
공통 정의 사항
팝빌 API 규격은 다음과 같이 정의합니다.
- RESTful API
- HTTPS 통신 / TLS 1.2, 1.1 지원
- JSON 메시지 포맷
API 호출과 응답에 필요한 문자 인코딩은 모두 UTF-8 Character Set 을 사용합니다.
팝빌 API에서 사용하는 Base URL은 다음과 같습니다.
| 환경 | Base URL | ServiceID |
| 팝빌 인증 서버 | https://auth.linkhub.co.kr | - |
| 팝빌 API 테스트 서버 | https://popbill-test.linkhub.co.kr | POPBILL_TEST |
| 팝빌 API 운영 서버 | https://popbill.linkhub.co.kr | POPBILL |
※ ServiceID는 팝빌 API 테스트/운영을 구별하는 고유식별정보입니다.
위 도메인의 IP는 가변적으로 변경됩니다.
방화벽으로 인해 고정 IP가 필요한 경우에는 아래의 Outbound 정보를 등록해야 합니다. 고정 IP를 설정한 뒤에는 아래의 안내된 도메인으로 호출해야 합니다.
| 환경 | Base URL | IP | PORT |
| 팝빌 인증 서버 | https://static-auth.linkhub.co.kr | 52.78.164.186 13.124.222.90 |
443 |
| 팝빌 API 테스트 서버 | https://static-popbill-test.linkhub.co.kr | ||
| 팝빌 API 운영 서버 | https://static-popbill.linkhub.co.kr |
인증 토큰 발급
POST
https://auth.linkhub.co.kr/POPBILL_TEST/Token
POST
https://auth.linkhub.co.kr/POPBILL/Token
- 팝빌 API를 사용하기 위한 인증 토큰을 발급합니다.
인증 토큰은 사업자번호별로 별도 발급이 필요합니다.
토큰은 발급 시점부터 30분 동안만 유효하며, 만료시에는 새 토큰을 재발급받아야 합니다.
Request
요청 헤더
| 순번 | 변수명 | 필수 | 설명 |
|---|---|---|---|
| Authorization | Y | 인증 토큰 | |
| Content-Type | Y | 요청 본문 형식 application/json |
|
| X-LH-Version | Y |
API 버전
2.0
|
|
| X-LH-Date | Y |
요청 일시(UTC)
형식 : yyyy-MM-ddTHH:mm:ssZ
|
|
| X-LH-Forwarded | N |
토큰 사용 허용 IP
*모든 IP 허용
기본값 : 토큰 발급을 요청한 IP에서만 토큰 사용 가능
|
요청 본문
| 순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
|---|---|---|---|---|---|
| access_id | string | 10 | Y | 팝빌회원 사업자번호 | |
| scope | array | - | Y |
API 접근 권한
전자세금계산서
현금영수증
전자명세서
홈택스수집
사업자등록상태조회
기업정보조회
예금주조회
계좌조회
카카오톡
문자
팩스
공통
|
요청 예시
#!/bin/bash
LinkID="TESTER" # 팝빌에서 발급받은 API Key의 LinkID
SecretKey="SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I=" # 팝빌에서 발급받은 API Key의 SecretKey
AccessID="1234567890" # 팝빌회원 사업자번호
ServiceID="POPBILL_TEST" # 테스트 환경: POPBILL_TEST, 운영 환경: POPBILL
APIVersion="2.0" # API 버전
ForwardedIP="*" # 토큰 사용 허용 IP
RequestBody=$(printf '{"access_id":"%s","scope":["member","110"]}' "$AccessID")
Body=$(echo -n "$RequestBody" | openssl dgst -sha256 -binary | openssl base64)
RequestDT=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
StringToSign=$(printf 'POST\n%s\n%s\n%s\n%s\n/%s/Token' "$Body" "$RequestDT" "$ForwardedIP" "$APIVersion" "$ServiceID")
Signature=$(echo -n "$StringToSign" | openssl dgst -sha256 -binary -mac HMAC -macopt key:$(echo -n "$SecretKey" | base64 --decode) | openssl base64)
Authorization="LINKHUB ${LinkID} ${Signature}"
curl --request POST \
--url 'https://auth.linkhub.co.kr/${ServiceID}/Token' \
--header 'Content-Type: application/json' \
--header 'Authorization: ${Authorization}' \
--header 'X-LH-Version: ${APIVersion}' \
--header 'X-LH-Date: ${RequestDT}' \
--header 'X-LH-Forwarded: ${ForwardedIP}' \
--data '$RequestBody'
Response
응답 본문
| 순번 | 변수명 | 타입 | 길이 | 설명 |
|---|---|---|---|---|
| session_token | string | - |
API 처리에 대한 응답코드
1성공
|
|
| serviceID | string | - |
테스트/운영 환경 구분 고유식별정보
POPBILL_TEST테스트
POPBILL운영
|
|
| linkID | string | - | LinkID | |
| userID | string | - | 팝빌회원 사업자번호 | |
| partnerCode | string | - | 파트너코드 | |
| usercode | string | - | 팝빌회원 코드 | |
| scope | array | - |
API 접근 권한
전자세금계산서
현금영수증
전자명세서
홈택스수집
사업자등록상태조회
기업정보조회
예금주조회
계좌조회
카카오톡
문자
팩스
공통
|
|
| ipaddress | string | - | 토큰 사용 허용 IP | |
| expiration | string | - |
토큰 만료일시(UTC)
형식 : yyyy-MM-ddTHH:mm:ssZ
|
응답 예시
{
"session_token": "dGfY0osTAoWNdlNwmugjEDTu...4MuWhVplgLrlQ7FzenX98qiZYDSqQ0ISEOJP",
"serviceID": "POPBILL_TEST",
"linkID": "TESTER",
"userID": "1234567890",
"partnerCode": "014040000003",
"usercode": "025070002467",
"scope": [ "member", "110" ],
"ipaddress": "*",
"expiration": "2025-11-19T03:41:17.839Z"
}
인증 토큰 사용
인증 토큰은 팝빌 API를 호출할 때 권한을 검증하는 데 사용됩니다.
토큰은 발급 시점부터 30분간 유효하며, 유효 기간이 지난 후에는 새 토큰을 재발급받아 사용해야 합니다.
팝빌 API를 호출할 때 Bearer 방식으로 Authorization 헤더에 토큰 값을 입력합니다.
Authorization: Bearer {session_token}
