app_id로 프로젝트 한 건을 조회한다. 프로젝트 기본정보에 결제 연동키와 커머스 프로젝트 정보가 함께 담긴다.
핵심 요약
- 본인 하위 셀러의 프로젝트가 아니면
APP_NOT_PERMIT, 없는 프로젝트면APP_NOT_FOUND가 떨어진다. - 응답에는
application_keys,private_key,commerce가 포함된다. commerce는 커머스 프로젝트가 없으면null이다. 조회에 실패하면status: failed객체가 온다.- 서버용 secret 은 응답에 없다. 키 생성·조회 에서 발급한다.
API 정보
GET
https://api.bootpay.co.kr/v2/reseller/seller/app/:app_idBasic Auth (리셀러 계정 키)요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
app_id |
String | 필수 | 조회할 프로젝트의 app_id (URL 경로) |
코드 예제
import fetch from 'node-fetch'
const RESELLER_AUTH = 'Basic ' + Buffer
.from(`${process.env.BOOTPAY_RESELLER_CLIENT_KEY}:${process.env.BOOTPAY_RESELLER_SECRET_KEY}`)
.toString('base64')
const appId = '65a1c0ab8f1b5b00367a0002'
const res = await fetch(`https://api.bootpay.co.kr/v2/reseller/seller/app/${appId}`, {
method: 'GET',
headers: {
'Authorization': RESELLER_AUTH
}
})
const data = await res.json()
console.log(data)javascriptimport base64, os, requests
auth = 'Basic ' + base64.b64encode(
f"{os.environ['BOOTPAY_RESELLER_CLIENT_KEY']}:{os.environ['BOOTPAY_RESELLER_SECRET_KEY']}".encode()
).decode()
app_id = '65a1c0ab8f1b5b00367a0002'
res = requests.get(
f'https://api.bootpay.co.kr/v2/reseller/seller/app/{app_id}',
headers={'Authorization': auth}
)
print(res.json())pythonRESELLER_AUTH=$(printf '%s' "$BOOTPAY_RESELLER_CLIENT_KEY:$BOOTPAY_RESELLER_SECRET_KEY" | base64)
APP_ID='65a1c0ab8f1b5b00367a0002'
curl -X GET "https://api.bootpay.co.kr/v2/reseller/seller/app/$APP_ID" \
-H "Authorization: Basic $RESELLER_AUTH"bash응답
{
"app_id": "65a1c0ab8f1b5b00367a0002",
"provider_id": "65a1c0aa8f1b5b00367a0001",
"app_name": "한입가게",
"real": { "name": "실물", "value": 1, "desc": "" },
"desc": "",
"unit": "KRW",
"status": 20,
"application_keys": [
{ "type": 1, "name": "WEB", "key": "65a1c0ab8f1b5b00367a0011" },
{ "type": 2, "name": "Android", "key": "65a1c0ab8f1b5b00367a0012" },
{ "type": 3, "name": "iOS", "key": "65a1c0ab8f1b5b00367a0013" },
{ "type": 4, "name": "REST", "key": "65a1c0ab8f1b5b00367a0014" }
],
"private_key": "65a1c0ab8f1b5b00367a0004",
"commerce": {
"project_id": "65a1c0ab8f1b5b00367a0006",
"core_app_id": "65a1c0ab8f1b5b00367a0008",
"seller_id": "65a1c0ab8f1b5b00367a0005",
"name": "한입가게",
"seller_name": "한입가게",
"client_key": "example_commerce_client_key"
}
}json응답 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
| app_id | String | 프로젝트 식별자 |
| provider_id | String | 소속 셀러 |
| app_name | String | 프로젝트명 |
| real | Object | 거래 상품 유형. { name, value, desc } 구조이고 name 은 실물 / 비실물 / 실물&비실물 중 하나다 |
| desc | String | 프로젝트 설명 |
| unit | String | 결제 통화 |
| status | Number | 프로젝트 상태. 기본값 20 (심사통과) |
| application_keys | Array | 플랫폼별 SDK 연동키 묶음. WEB / Android / iOS / REST 4 건이 내려온다 |
| application_keys[].type | Number | 플랫폼 코드. 1 = WEB, 2 = Android, 3 = iOS, 4 = REST |
| application_keys[].name | String | 플랫폼 이름 (WEB / Android / iOS / REST) |
| application_keys[].key | String | SDK 초기화에 넣는 application_id. Basic Auth 에 쓰는 client_key 와는 다른 값이다 |
| private_key | String | 프로젝트 단위의 백엔드 키 |
| commerce | Object / null | 부트페이 커머스 프로젝트 정보. 없으면 null |
| commerce.project_id | String | 커머스 프로젝트 식별자 |
| commerce.core_app_id | String | 커머스 프로젝트에 연결된 결제 프로젝트 식별자 |
| commerce.seller_id | String | 커머스 셀러 식별자 |
| commerce.name | String | 커머스 프로젝트명 |
| commerce.seller_name | String | 커머스 셀러명 |
| commerce.client_key | String | 커머스 공개키. 프론트 SDK 용 |
commerce 조회 실패
커머스 쪽 조회에 실패하면 commerce 는 { "status": "failed", "message": "..." } 로 온다. 프로젝트 기본정보와 결제 연동키는 정상으로 내려온다.
에러 코드
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
API_ONLY_RESELLER |
리셀러만 이용이 가능한 API 다 | 리셀러 권한 계정 키로 호출한다 |
API_SCOPE_INVALID |
허용되지 않은 API 권한의 키다 | 리셀러 프로젝트의 전체 권한(supervisor) Client Key 로 호출한다 |
APP_NOT_FOUND |
프로젝트를 찾지 못했다 | app_id 가 올바른지 확인한다 |
APP_NOT_PERMIT |
본인 하위 프로젝트가 아니다 | app_id 가 본인 리셀러 하위 셀러의 프로젝트인지 확인한다 |
다음 단계
- 커머스 프로젝트가 없거나 실패했으면 → 커머스 연동 재시도
- 서버 연동 키를 발급하려면 → 키 생성·조회