키 생성·조회 로 하위 프로젝트 키를 만들 때 api_scopes 에 넣을 스코프 id 를 돌려준다. 결제(PG) 키와 커머스 키는 스코프가 다르므로 target 으로 나눠 부른다.
핵심 요약
api_scopes 에는 이 목록의 api_scope_id 를 넣는다. key·name 은 사람이 고를 때 보는 값이다.
- 사용 중인 스코프만 나온다. 같은 그룹끼리 묶여 그룹 순서 → 스코프 순서로 온다.
- 모든 리셀러가 같은 목록을 본다. 자주 바뀌지 않으므로 받아 두고 써도 된다.
- 리셀러 API 자체를 부르는 범위 키(
reseller:* 스코프)는 범위 키(리셀러 스코프) 를 본다. 이 문서는 하위 프로젝트 키용 목록이다.
API 정보
GEThttps://api.bootpay.co.kr/v2/reseller/scopes?target=pgBasic Auth (리셀러 계정 키)
요청 파라미터
| 파라미터 |
타입 |
필수 |
설명 |
target |
String |
필수 |
pg(결제 키) 또는 commerce(커머스 키) (쿼리) |
코드 예제
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 res = await fetch('https://api.bootpay.co.kr/v2/reseller/scopes?target=pg', {
headers: { 'Authorization': RESELLER_AUTH }
})
const { list } = await res.json()
const readOnly = list.filter(scope => scope.key.endsWith(':read')).map(scope => scope.api_scope_id)
// readOnly 를 키 발급(POST /v2/reseller/seller/app/key-chain)의 api_scopes 에 넣는다javascript
import base64, os, requests
auth = 'Basic ' + base64.b64encode(
f"{os.environ['BOOTPAY_RESELLER_CLIENT_KEY']}:{os.environ['BOOTPAY_RESELLER_SECRET_KEY']}".encode()
).decode()
res = requests.get('https://api.bootpay.co.kr/v2/reseller/scopes', params={'target': 'commerce'}, headers={'Authorization': auth})
print([(s['key'], s['api_scope_id']) for s in res.json()['list']])python
RESELLER_AUTH=$(printf '%s' "$BOOTPAY_RESELLER_CLIENT_KEY:$BOOTPAY_RESELLER_SECRET_KEY" | base64)
curl "https://api.bootpay.co.kr/v2/reseller/scopes?target=pg" -H "Authorization: Basic $RESELLER_AUTH"bash
응답
{
"target": "pg",
"list": [
{
"api_scope_id": "6098a1b2c3d4e5f600000301",
"key": "receipt:read",
"name": "결제 조회",
"description": "결제 단건·목록 조회",
"group_key": "payment",
"group_name": "결제"
}
]
}json
| 필드 |
타입 |
필수 |
설명 |
target |
String |
필수 |
요청한 target |
list |
Array |
필수 |
스코프 목록 |
api_scope_id |
String |
필수 |
키 발급 api_scopes 에 넣는 값 |
key |
String |
필수 |
스코프 키 |
name |
String |
필수 |
스코프 이름 |
description |
String |
선택 |
설명 |
group_key |
String |
필수 |
묶음 키 |
group_name |
String |
필수 |
묶음 이름 |
에러 코드
| 코드 |
메시지 |
대처 방법 |
API_ONLY_RESELLER (601) |
리셀러만 이용이 가능한 API 다 |
리셀러 권한 계정 키로 호출한다 |
API_SCOPE_INVALID |
허용되지 않은 API 권한의 키다 (HTTP 401) |
키에 이 API 의 리셀러 스코프 를 주거나 전체 권한(supervisor) 키로 호출한다 |
PARAMS_INVALID (-33) |
target 이 없거나 pg·commerce 가 아니다 |
target=pg 또는 target=commerce 로 보낸다 |
COMMERCE_REQUEST_FAILED (8182) |
커머스 연동 서버에 요청하지 못했다 |
target=commerce 일 때만 난다. 잠시 뒤 다시 부른다. payload.commerce_error_code 에 커머스 쪽 원인이 있다 |